diff --git a/.github/workflows/llm-code-review.yml b/.github/workflows/llm-code-review.yml new file mode 100644 index 0000000..42c8b31 --- /dev/null +++ b/.github/workflows/llm-code-review.yml @@ -0,0 +1,28 @@ +name: LLM Code Review + +permissions: + contents: read + pull-requests: write + +on: + pull_request: + types: [opened, reopened, synchronize] + +jobs: + llm-code-review: + runs-on: ubuntu-latest + steps: + - uses: fit2cloud/LLM-CodeReview-Action@main + env: + GITHUB_TOKEN: ${{ secrets.FIT2CLOUDRD_LLM_CODE_REVIEW_TOKEN }} + OPENAI_API_KEY: ${{ secrets.ALIYUN_LLM_API_KEY }} + LANGUAGE: English + OPENAI_API_ENDPOINT: https://dashscope.aliyuncs.com/compatible-mode/v1 + MODEL: qwen2.5-coder-3b-instruct + PROMPT: "Please check the following code differences for any irregularities, potential issues, or optimization suggestions, and provide your answers in English." + top_p: 1 + temperature: 1 + # max_tokens: 10000 + MAX_PATCH_LENGTH: 10000 + IGNORE_PATTERNS: "/node_modules,*.md,/dist,/.github" + FILE_PATTERNS: "*.java,*.go,*.py,*.vue,*.ts,*.js,*.css,*.scss,*.html,*.yml,*.yaml" diff --git a/.github/workflows/renovate-app-version.sh b/.github/workflows/renovate-app-version.sh new file mode 100644 index 0000000..017b22e --- /dev/null +++ b/.github/workflows/renovate-app-version.sh @@ -0,0 +1,26 @@ +#!/bin/bash +# This script copies the version from docker-compose.yml to config.json. + +app_name=$1 +old_version=$2 + +# find all docker-compose files under apps/$app_name (there should be only one) +docker_compose_files=$(find apps/$app_name/$old_version -name docker-compose.yml) + +for docker_compose_file in $docker_compose_files +do + # Assuming that the app version will be from the first docker image + first_service=$(yq '.services | keys | .[0]' $docker_compose_file) + + image=$(yq .services.$first_service.image $docker_compose_file) + + # Only apply changes if the format is : + if [[ "$image" == *":"* ]]; then + version=$(cut -d ":" -f2- <<< "$image") + + # Trim the "v" prefix + trimmed_version=${version/#"v"} + + mv apps/$app_name/$old_version apps/$app_name/$trimmed_version + fi +done diff --git a/.github/workflows/renovate-app-version.yml b/.github/workflows/renovate-app-version.yml new file mode 100644 index 0000000..a056ba6 --- /dev/null +++ b/.github/workflows/renovate-app-version.yml @@ -0,0 +1,53 @@ +name: Update app version in Renovate Branches + +on: + push: + branches: [ 'renovate/*' ] + workflow_dispatch: + inputs: + manual-trigger: + description: 'Manually trigger Renovate' + default: '' +jobs: + update-app-version: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 + with: + fetch-depth: 0 + + - name: Configure repo + run: | + git config --local user.email "githubaction@githubaction.com" + git config --local user.name "github-action update-app-version" + + - name: Get list of updated files by the last commit in this branch separated by space + id: updated-files + run: | + echo "::set-output name=files::$(git diff-tree --no-commit-id --name-only -r ${{ github.sha }} | tr '\n' ' ')" + + - name: Run renovate-app-version.sh on updated files + run: | + IFS=' ' read -ra files <<< "${{ steps.updated-files.outputs.files }}" + + for file in "${files[@]}"; do + if [[ $file == *"docker-compose.yml"* ]]; then + app_name=$(echo $file | cut -d'/' -f 2) + old_version=$(echo $file | cut -d'/' -f 3) + chmod +x .github/workflows/renovate-app-version.sh + .github/workflows/renovate-app-version.sh $app_name $old_version + fi + done + + - name: Commit & Push Changes + run: | + IFS=' ' read -ra files <<< "${{ steps.updated-files.outputs.files }}" + + for file in "${files[@]}"; do + if [[ $file == *"docker-compose.yml"* ]]; then + app_name=$(echo $file | cut -d'/' -f 2) + git add "apps/$app_name/*" && git commit -m "Update app version [skip ci]" --no-verify && git push || true + fi + done + diff --git a/.github/workflows/renovate.yml b/.github/workflows/renovate.yml new file mode 100644 index 0000000..a21e0ba --- /dev/null +++ b/.github/workflows/renovate.yml @@ -0,0 +1,22 @@ +name: Renovate + +on: + schedule: + - cron: "0 0 * * *" + workflow_dispatch: + inputs: + manual-trigger: + description: 'Manually trigger Renovate' + default: '' + +jobs: + renovate: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - name: Run Renovate + uses: renovatebot/github-action@d385c88822a237acaead89c462fa0aef7502748f # v41.0.11 + with: + useSlim: false + token: ${{ secrets.GITHUBTOKEN }} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..601ca7d --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +# OSX +.DS_Store + +# IntelliJ +.idea + +# VSCode +.vscode diff --git a/1Panel-Appstore.png b/1Panel-Appstore.png new file mode 100644 index 0000000..f9df813 Binary files /dev/null and b/1Panel-Appstore.png differ diff --git a/ADD_APP.md b/ADD_APP.md new file mode 100644 index 0000000..59c1480 --- /dev/null +++ b/ADD_APP.md @@ -0,0 +1,320 @@ +# 如何提交自己想要的应用 + +## 4. 创建应用文件 (以 Halo 为例) + + + +v1.3 及以上版本可以在 1Panel 宿主机使用 1panel app init <应用的key> <应用的版本> 来快速初始化应用文件 (注意不是 1pctl 命令) + +文件夹格式 + +``` +├──halo // 以 halo 的 key 命名 ,下面解释什么是 key + ├── logo.png // 应用 logo , 最好是 180 * 180 px + ├── data.yml // 应用声明文件 + ├── README.md // 应用的 README + ├── 2.2.0 // 应用版本 注意不要以 v 开头 + │ ├── data.yml // 应用的参数配置,下面有详细介绍 + │ ├── data // 挂载出来的目录 + | ├── scripts // 脚本目录 存放 init.sh upgrade.sh uninstall.sh + │ └── docker-compose.yml // docker-compose 文件 + └── 2.3.2 + ├── data.yml + ├── data + └── docker-compose.yml +``` + + + +应用声明文件 data.yml + +> 本文件主要用于声明应用的一些信息 + +``` +additionalProperties: #固定参数 + key: halo #应用的 key ,仅限英文,用于在 Linux 创建文件夹 + name: Halo #应用名称 + tags: + - WebSite #应用标签,可以有多个,请参照下方的标签列表 + shortDescZh: 强大易用的开源建站工具 #应用中文描述,不要超过30个字 + shortDescEn: Powerful and easy-to-use open source website builder #应用英文描述 + type: website #应用类型,区别于应用分类,只能有一个,请参照下方的类型列表 + crossVersionUpdate: true #是否可以跨大版本升级 + limit: 0 #应用安装数量限制,0 代表无限制 + website: https://halo.run/ #官网地址 + github: https://github.com/halo-dev/halo #github 地址 + document: https://docs.halo.run/ #文档地址 +``` + + + +应用标签 - tags 字段(持续更新。。。) + +| key | name | +| -------- | ---------- | +| WebSite | 建站 | +| Server | Web 服务器 | +| Runtime | 运行环境 | +| Database | 数据库 | +| Tool | 工具 | +| CI/CD | CI/CD | +| Local | 本地 | + +应用类型 - type 字段 + +| type | 说明 | +| ------- | ------------------------------------------------------------ | +| website | website 类型在 1Panel 中支持在网站中一键部署,wordpress halo 都是此 type | +| runtime | mysql openresty redis 等类型的应用 | +| tool | phpMyAdmin redis-commander jenkins 等类型的应用 | + +应用参数配置文件 data.yml (注意区分于应用主目录下面的 data.yaml) + +> 本文件主要用于生成安装时要填写的 form 表单,在应用版本文件夹下面 可以无表单,但是需要有这个 data.yml文件,并且包含 formFields 字段 + +以安装 halo 时的 form 表单 为例 + +![iShot_2023-03-18_14 03 43](https://user-images.githubusercontent.com/31820853/226111412-9c7b25a1-83f2-4621-8789-7ef85a2695dd.png) + +如果要生成上面的表单,需要这么填写 data.yml + +``` +additionalProperties: #固定参数 + formFields: + - default: "" + envKey: PANEL_DB_HOST #docker-compose 文件中的参数 + key: mysql #依赖应用的 key , 例如 mysql + labelEn: Database Service #英文的label + labelZh: 数据库服务 #中文的label + required: true #是否必填 + type: service #如果需要依赖其他应用,例如数据库,使用此 type + - default: halo + envKey: PANEL_DB_NAME + labelEn: Database + labelZh: 数据库名 + random: true #是否在 default 文字后面,增加随机字符串 + required: true + rule: paramCommon #校验规则 + type: text #需要手动填写的,使用此 type + - default: halo + envKey: PANEL_DB_USER + labelEn: User + labelZh: 数据库用户 + random: true + required: true + rule: paramCommon + type: text + - default: halo + envKey: PANEL_DB_USER_PASSWORD + labelEn: Password + labelZh: 数据库用户密码 + random: true + required: true + rule: paramComplexity + type: password #密码字段使用此 type + - default: admin + envKey: HALO_ADMIN + labelEn: Admin Username + labelZh: 超级管理员用户名 + required: true + rule: paramCommon + type: text + - default: halo + envKey: HALO_ADMIN_PASSWORD + labelEn: Admin Password + labelZh: 超级管理员密码 + random: true + required: true + rule: paramComplexity + type: password + - default: http://localhost:8080 + edit: true + envKey: HALO_EXTERNAL_URL + labelEn: External URL + labelZh: 外部访问地址 + required: true + rule: paramExtUrl + type: text + - default: 8080 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Port + labelZh: 端口 + required: true + rule: paramPort + type: number #端口使用此 type +``` + + + +关于端口字段: + +1. PANEL_APP_PORT_HTTP 有 web 访问端口的优先使用此 envKey +2. envKey 中包含 PANEL_APP_PORT 前缀会被认定为端口类型,并且用于安装前的端口占用校验。注意:端口需要是外部端口 + +关于 type 字段: + +| type | 说明 | +| -------- | ------------------------------------------------------------ | +| service | `type: service` 如果该应用需要依赖其他组件,如 mysql redis 等,可以通过 `key: mysql` 定义依赖的名称,在创建应用时会要求先创建依赖的应用。 | +| password | `type: password` 敏感信息,如密码相关的字段会默认不显示明文。 | +| text | `type: text` 一般内容,比如数据库名称,默认明文显示。 | +| number | `type: number` 一般用在端口相关的配置上,只允许输入数字。 | +| select | `type: select` 选项,比如 `true`, `false`,日志等级等。 | + +简单的例子 + +``` +# type: service,定义一个 mysql 的 service 依赖。 +- default: "" + envKey: DB_HOST + key: mysql + labelEn: Database Service + labelZh: 数据库服务 + required: true + type: service + +# type: password +- default: Np2qgqtiUayA857GpuVI0Wtg + edit: true + envKey: DB_PASSWORD + labelEn: Database password + labelZh: 数据库密码 + required: true + type: password + +# type: text +- default: 192.168.100.100 + disabled: true. + envKey: REDIS_HOST + labelEn: Redis host + labelZh: Redis 主机 + type: text + +# type: number +- default: 3306 + disabled: true + envKey: DB_PORT + labelEn: Database port + labelZh: 数据库端口 + rule: paramPort + type: number + +# type: select +- default: "ERROR" + envKey: LOG_LEVEL + labelEn: Log level + labelZh: 日志级别 + required: true + type: select + values: + - label: DEBUG + value: "DEBUG" + - label: INFO + value: "INFO" + - label: WARNING + value: "WARNING" + - label: ERROR + value: "ERROR" + - label: CRITICAL + value: "CRITICAL" +``` + + + +rule 字段目前支持的几种校验 + +| rule | 规则 | +| --------------- | ------------------------------------------------------ | +| paramPort | 用于限制端口范围为 1-65535 | +| paramExtUrl | 格式为 http(s)://(域名/ip):(端口) | +| paramCommon | 英文、数字、.-和_,长度2-30 | +| paramComplexity | 支持英文、数字、.%@$!&~_-,长度6-30,特殊字符不能在首尾 | + +应用 docker-compose.yml 文件 + +> ${PANEL_APP_PORT_HTTP} 类型的参数,都在 data.yml 中有声明 + +``` +version: "3" +services: + halo: + image: halohub/halo:2.2.0 + container_name: ${CONTAINER_NAME} // 固定写法,勿改 + restart: always + networks: + - 1panel-network // 1Panel 创建的应用都在此网络下 + volumes: + - ./data:/root/.halo2 + ports: + - ${PANEL_APP_PORT_HTTP}:8090 + command: + - --spring.r2dbc.url=r2dbc:pool:${HALO_PLATFORM}://${PANEL_DB_HOST}:${HALO_DB_PORT}/${PANEL_DB_NAME} + - --spring.r2dbc.username=${PANEL_DB_USER} + - --spring.r2dbc.password=${PANEL_DB_USER_PASSWORD} + - --spring.sql.init.platform=${HALO_PLATFORM} + - --halo.external-url=${HALO_EXTERNAL_URL} + - --halo.security.initializer.superadminusername=${HALO_ADMIN} + - --halo.security.initializer.superadminpassword=${HALO_ADMIN_PASSWORD} + labels: + createdBy: "Apps" + +networks: + 1panel-network: + external: true +``` + + + +## 5. 脚本 + + + +1Panel 在 安装之前、升级之前、卸载之后支持执行 .sh 脚本 +分别对应 init.sh upgrade.sh uninstall.sh +存放目录(以halo为例) : halo/2.2.0/scripts + +## 6. 本地测试 + + + +将应用目录上传到 1Panel 的 /opt/1panel/resource/apps/local 文件夹下 +注意:/opt 为 1Panel 默认安装目录,请根据自己的实际情况修改 +上传完成后,目录结构如下 + +``` +├──halo + ├── logo.png + ├── data.yml + ├── README.md + ├── 2.2.0 + ├── data.yml + ├── data + └── docker-compose.yml +``` + + + +在 1Panel 应用商店中,点击更新应用列表按钮同步本地应用 + +> v1.2 版本及之前版本的本地应用,请参考[这个文档](https://github.com/1Panel-dev/appstore/wiki/v1.2-版本本地应用升级指南)修改 + +## 7. 提交文件 + + + +``` +git add . +git commit -m "Add my-app" +git push origin dev +``` + + + +## 8. 提交 Pull Request + + + +- 在你的仓库点击 Pull requests 菜单 +- 点击 New pull request ,填写标题和描述 +- 选择由你的分支提交到 1Panel-dev/appstore \ No newline at end of file diff --git a/LLM_Free-API.png b/LLM_Free-API.png new file mode 100644 index 0000000..582c35a Binary files /dev/null and b/LLM_Free-API.png differ diff --git a/README.md b/README.md new file mode 100644 index 0000000..e97e397 --- /dev/null +++ b/README.md @@ -0,0 +1,697 @@ +

+ +

+

1Panel AppStore

+
+

+ + + + +

+ +

+ 作者博客 | + 文档教程 | + 安全导航 | + 微信公众号导航 +

+ +### 📖 仓库介绍 + +​ 本仓库包含多个适用于 1Panel 的应用,旨在为用户提供简单、快速的安装与更新体验。应用均为开源项目,支持通过 1Panel 的计划任务功能自动化安装和更新。通过仓库提供的脚本,可以轻松地将应用集成到 1Panel 系统中。 + +### ⚠️ 仓库申明 + +- 非官方,第三方应用商店 +- 部分应用源于[okxlin/appstore](https://github.com/okxlin/appstore),本仓库做了更新适配 +- 不对任何原始镜像的有效性做出任何明示或暗示的保证或声明,安全性和风险自查 + +### 📱 应用列表 + +以下是当前在本仓库中提供的应用列表及其版本信息,**点击应用名称可查看应用详细介绍文档** + +#### 🤖LLM免费API接口 + +支持一键部署AI免费API接口,使用方式请参考应用内**README介绍** + + + + + + + +
+ + +DeepSeek-Free-API +
DeepSeek-Free-API +
+ +🚀 DeepSeek-V3 & R1大模型逆向API + +latest • [官网链接](https://github.com/LLM-Red-Team/deepseek-free-api) + +
+ + +Kimi-Free-API +
Kimi-Free-API +
+ +🚀 KIMI AI 长文本大模型逆向API + +latest • [官网链接](https://github.com/LLM-Red-Team/kimi-free-api) + +
+ + +Qwen-Free-API +
Qwen-Free-API +
+ +🚀 阿里通义千问2.5大模型逆向API + +latest • [官网链接](https://github.com/LLM-Red-Team/qwen-free-api) + +
+ + + + + + + +
+ + +GLM-Free-API +
GLM-Free-API +
+ +🚀 智谱清言ChatGLM-4-Plus大模型逆向API + +latest • [官网链接](https://github.com/LLM-Red-Team/glm-free-api) + +
+ + +Jimeng-Free-API +
Jimeng-Free-API +
+ +🚀 即梦3.0逆向API【特长:图像生成顶流】 + +latest • [官网链接](https://github.com/LLM-Red-Team/jimeng-free-api) + +
+ + +Spark-Free-API +
Spark-Free-API +
+ +🚀 讯飞星火大模型逆向API【特长:办公助手】 + +latest • [官网链接](https://github.com/LLM-Red-Team/spark-free-api) + +
+ + + + + + + +
+ + +Minimax-Free-API +
Minimax-Free-API +
+ +🚀 MiniMax大模型海螺AI逆向API【特长:超自然语音】 + +latest • [官网链接](https://github.com/LLM-Red-Team/minimax-free-api) + +
+ + +Step-Free-API +
Step-Free-API +
+ +🚀 阶跃星辰跃问Step 多模态大模型逆向API【特长:超强多模态】 + +latest • [官网链接](https://github.com/LLM-Red-Team/step-free-api) + +
+ + +Metaso-Free-API +
Metaso-Free-API +
+ +🚀 秘塔AI搜索逆向API【特长:超强检索超长输出】 + +latest • [官网链接](https://github.com/LLM-Red-Team/metaso-free-api) + +
+ + + +#### 📝 文档与内容管理 + + + + + + + +
+ + +DocMost +
DocMost +
+ +轻量级文档管理系统,支持多人协作编辑与版本控制 + +v0.20.4 • [官网链接](https://github.com/docmost/docmost) + +
+ + +Hexo +
Hexo +
+ +快速静态博客框架,支持Markdown编写,丰富的插件和主题 + +latest • [官网链接](https://github.com/hexojs/hexo) + +
+ + +QEXO +
QEXO +
+ +美观强大的在线静态博客管理器,支持多种平台 + +latest • [官网链接](https://github.com/Qexo/Qexo) + +
+ + + + + + + +
+ + +MD +
MD +
+ +微信 Markdown 编辑器,自动即时渲染为微信图文 + +v2.0.3 • [官网链接](https://github.com/doocs/md) + +
+ + +Karakeep +
Karakeep +
+ +自托管全能书签管理工具,支持AI自动标签功能 + +v0.24.1 • [官网链接](https://github.com/karakeep-app/karakeep) + +
+ + +Linkwarden +
Linkwarden +
+ +自托管协作书签管理工具,支持网页归档和团队协作 + +latest • [官网链接](https://github.com/linkwarden/linkwarden) + +
+ + + + + + + +
+ + +AFFiNE +
AFFiNE +
+ +文档、白板和数据库完全整合的工作空间 + +stable • [官网链接](https://github.com/toeverything/AFFiNE) + +
+ + +Blinko +
Blinko +
+ +开源自托管个人笔记工具,支持AI增强笔记检索 + +v1.0.3 • [官网链接](https://github.com/blinko-space/blinko) + +
+ +
+ +#### 🔒 安全与网络工具 + + + + + + + +
+ + +EasyTier +
EasyTier +
+ +🌐 简单安全去中心化的内网穿透 VPN 组网方案 + +v2.3.1 • [官网链接](https://github.com/EasyTier/Easytier) + +
+ + +NPC +
NPC +
+ +🔗 NPS客户端,轻量级高性能内网穿透代理工具 + +v0.29.21 • [官网链接](https://github.com/djylb/nps) + +
+ + +NPS +
NPS +
+ +🔄 轻量级高性能内网穿透代理服务器 + +v0.29.21 • [官网链接](https://github.com/djylb/nps) + +
+ + + + + + + +
+ + +SafeLine +
SafeLine +
+ +🛡️ 简单好用的Web应用防火墙(WAF) + +V7.6.2 • [官网链接](https://github.com/chaitin/SafeLine) + +
+ + +NetBox +
NetBox +
+ +🏢 开源数据中心和网络资源管理平台 + +latest • [官网链接](https://netbox.dev/) + +
+ + +Kali Linux +
Kali Linux +
+ +🔍 专为渗透测试和安全审计设计的Linux发行版 + +latest • [官网链接](https://www.kali.org/) + +
+ +#### 🤖 AI 与智能应用 + + + + + + + +
+ + +LobeChat-Data +
LobeChat-Data +
+ +💬 开源现代设计的 ChatGPT/LLMs UI/框架 + +1.73.0 • [官网链接](https://github.com/lobehub/lobe-chat) + +
+ + +Dify +
Dify +
+ +🤖 开源LLM应用开发平台,支持AI工作流和RAG管道 + +1.1.1 • [官网链接](https://github.com/langgenius/dify) + +
+ +
+ +#### 🎵 多媒体管理 + + + + + + + +
+ + +XiaoMusic +
XiaoMusic +
+ +🎵 使用小爱/红米音箱播放音乐,支持yt-dlp下载 + +latest • [官网链接](https://github.com/hanxi/xiaomusic) + +
+ + +OpenList +
OpenList +
+ +📁 开源支持多存储的文件列表程序和私人网盘 + +4.0.2 • [官网链接](https://github.com/AlistGo/alist) + +
+ + +PicList +
PicList +
+ +🖼️ 高效云存储和图床平台管理工具 + +latest • [官网链接](https://github.com/Kuingsmile/PicList) + +
+ + + + + + + +
+ + +NZBGet +
NZBGet +
+ +📥 高性能Usenet下载工具,支持Web界面管理 + +latest • [官网链接](https://nzbget.net/) + +
+ + +Transmission +
Transmission +
+ +🌱 开源高性能BT/PT下载工具,支持Web界面 + +latest • [官网链接](https://transmissionbt.com/) + +
+ +
+ +#### ⚡ 运维监控 + + + + + + + +
+ + +Nezha +
Nezha +
+ +📊 开源轻量易用的服务器监控运维工具 + +v1.12.4 • [官网链接](https://github.com/naiba/nezha/) + +
+ + +Glance-Agent +
Glance-Agent +
+ +👁️ 轻量级可视化综合服务器监控方案 + +latest • [官网链接](https://github.com/arch3rPro/Glance-Monitor) + +
+ + +Next-Terminal +
Next-Terminal +
+ +🖥️ 简单好用安全的开源交互审计系统 + +v2.4.10 • [官网链接](https://github.com/dushixiang/next-terminal) + +
+ + + + + + + +
+ + +Netdata +
Netdata +
+ +📈 Linux性能实时监测工具,全方位性能监控 + +v2.2.6 • [官网链接](https://github.com/netdata/netdata) + +
+ + +Remmina +
Remmina +
+ +🖥️ 开源跨平台远程桌面客户端,支持多种协议 + +latest • [官网链接](https://remmina.org/) + +
+ +
+ +#### 🗄️ Nas工具 + + + + + + + +
+ + +Resilio-Sync +
Resilio-Sync +
+ +🔄 跨平台P2P文件同步和分享工具 + +v3.0.3 • [官网链接](https://www.resilio.com/sync/) + +
+ + +AdGuardHome-Sync +
AdGuardHome-Sync +
+ +🔄 多AdGuardHome实例间配置同步工具 + +latest • [官网链接](https://github.com/bakito/adguardhome-sync) + +
+ + +PairDrop +
PairDrop +
+ +📱 类AirDrop工具,支持网络文件、文本共享 + +Latest • [官网链接](https://github.com/schlagmichdoch/PairDrop) + +
+ +#### 🐳 容器管理 + + + + + + + +
+ + +Cup +
Cup +
+ +🔄 支持Web和Cli方式检查容器镜像更新 + +latest • [官网链接](https://github.com/sergi0g/cup/) + +
+ + +Docker-Copilot +
Docker-Copilot +
+ +🚀 主打便捷的docker容器管理工具,一键更新容器 + +latest • [官网链接](https://github.com/onlyLTY/dockerCopilot) + +
+ + +Wud +
Wud +
+ +🔄 监控Docker基础镜像自动更新 + +latest • [官网链接](https://github.com/sergi0g/cup/) + +
+ + + + + + + +
+ + +Hubcmd-UI +
Hubcmd-UI +
+ +⚡ Docker镜像加速命令查询获取、镜像搜索、配置教程文档展示UI面板 + +latest • [官网链接](https://github.com/dqzboy/Docker-Proxy) + +
+ + +Diun +
Diun +
+ +🔔 Docker镜像更新监控和通知工具 + +latest • [官网链接](https://github.com/crazy-max/diun) + +
+ + +Arcane +
Arcane +
+ +🧙‍♂️ 现代化开源Docker管理Web面板 + +latest • [官网链接](https://arcane.ofkm.dev/) + +
+ +### 🚀 使用方法 + +#### 📋 添加脚本到 1Panel 计划任务 + +1. 在 1Panel 控制面板中,进入"计划任务"页面。 +2. 点击"新增任务",选择任务类型为"Shell 脚本"。 +3. 在脚本框中粘贴以下代码: + +```bash +#!/bin/bash + +# 清理旧的临时目录 +rm -rf /tmp/appstore_merge + +# 克隆 appstore-arch3rPro +git clone --depth=1 https://ghfast.top/https://github.com/arch3rPro/appstore /tmp/appstore_merge/appstore-arch3rPro + +# 复制 数据(完整复制) +cp -rf /tmp/appstore_merge/appstore-arch3rPro/apps/* /opt/1panel/resource/apps/local/ + +# 清理临时目录 +rm -rf /tmp/appstore_merge +echo "应用商店数据已更新" +``` \ No newline at end of file diff --git a/apps/adguardhome-sync/README.md b/apps/adguardhome-sync/README.md new file mode 100644 index 0000000..db35b9d --- /dev/null +++ b/apps/adguardhome-sync/README.md @@ -0,0 +1,22 @@ +# AdGuardHome-Sync + +AdGuardHome-Sync 是一个用于在多个 AdGuardHome 实例之间同步配置的工具。 + +## 功能特性 + +- 支持多个 AdGuardHome 实例之间的配置同步 +- 提供 Web API 接口进行管理 +- 支持定时同步任务 +- 基于 LinuxServer.io 的 Docker 镜像 + +## 使用方法 + +1. 部署后访问 Web API 端口(默认 8080) +2. 配置 AdGuardHome 实例的连接信息 +3. 设置同步规则和时间间隔 +4. 启动同步任务 + +## 相关链接 + +- [GitHub 项目](https://github.com/bakito/adguardhome-sync) +- [LinuxServer.io 文档](https://docs.linuxserver.io/images/docker-adguardhome-sync/) \ No newline at end of file diff --git a/apps/adguardhome-sync/README_en.md b/apps/adguardhome-sync/README_en.md new file mode 100644 index 0000000..1945a4b --- /dev/null +++ b/apps/adguardhome-sync/README_en.md @@ -0,0 +1,22 @@ +# AdGuardHome-Sync + +AdGuardHome-Sync is a tool for synchronizing configurations between multiple AdGuardHome instances. + +## Features + +- Synchronize configurations between multiple AdGuardHome instances +- Web API interface for management +- Scheduled synchronization tasks +- Based on LinuxServer.io Docker image + +## Usage + +1. Access the Web API port (default 8080) after deployment +2. Configure connection information for AdGuardHome instances +3. Set synchronization rules and intervals +4. Start synchronization tasks + +## Links + +- [GitHub Project](https://github.com/bakito/adguardhome-sync) +- [LinuxServer.io Documentation](https://docs.linuxserver.io/images/docker-adguardhome-sync/) \ No newline at end of file diff --git a/apps/adguardhome-sync/data.yml b/apps/adguardhome-sync/data.yml new file mode 100644 index 0000000..28d6c2c --- /dev/null +++ b/apps/adguardhome-sync/data.yml @@ -0,0 +1,32 @@ +name: AdGuardHome-Sync +tags: + - 安全 +title: AdGuardHome 配置同步工具 +description: AdGuardHome 配置同步工具,支持多个 AdGuardHome 实例之间的配置同步 +additionalProperties: + key: adguardhome-sync + name: AdGuardHome-Sync + tags: + - Security + shortDescZh: AdGuardHome 配置同步工具 + shortDescEn: AdGuardHome configuration synchronization tool + description: + en: AdGuardHome configuration synchronization tool for syncing configurations between multiple AdGuardHome instances + ja: 複数のAdGuardHomeインスタンス間で設定を同期するためのAdGuardHome設定同期ツール + ms: Alat penyegerakan konfigurasi AdGuardHome untuk menyegerakkan konfigurasi antara pelbagai instans AdGuardHome + pt-br: Ferramenta de sincronização de configuração do AdGuardHome para sincronizar configurações entre múltiplas instâncias do AdGuardHome + ru: Инструмент синхронизации конфигурации AdGuardHome для синхронизации конфигураций между несколькими экземплярами AdGuardHome + ko: 여러 AdGuardHome 인스턴스 간의 구성을 동기화하기 위한 AdGuardHome 구성 동기화 도구 + zh-Hant: AdGuardHome 配置同步工具,支援多個 AdGuardHome 實例之間的配置同步 + zh: AdGuardHome 配置同步工具,支持多个 AdGuardHome 实例之间的配置同步 + type: website + crossVersionUpdate: true + limit: 0 + recommend: 0 + website: https://github.com/bakito/adguardhome-sync + github: https://github.com/bakito/adguardhome-sync + document: https://docs.linuxserver.io/images/docker-adguardhome-sync/ + architectures: + - amd64 + - arm64 + - arm/v7 \ No newline at end of file diff --git a/apps/adguardhome-sync/latest/data.yml b/apps/adguardhome-sync/latest/data.yml new file mode 100644 index 0000000..e9305da --- /dev/null +++ b/apps/adguardhome-sync/latest/data.yml @@ -0,0 +1,19 @@ +additionalProperties: + formFields: + - default: 8080 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Web API Port + labelZh: Web API 端口 + required: true + rule: paramPort + type: number + label: + en: Web API Port + ja: Web API ポート + ms: Port API Web + pt-br: Porta da API Web + ru: Порт Web API + ko: Web API 포트 + zh-Hant: Web API 埠 + zh: Web API 端口 \ No newline at end of file diff --git a/apps/adguardhome-sync/latest/docker-compose.yml b/apps/adguardhome-sync/latest/docker-compose.yml new file mode 100644 index 0000000..8fe0559 --- /dev/null +++ b/apps/adguardhome-sync/latest/docker-compose.yml @@ -0,0 +1,20 @@ +services: + adguardhome-sync: + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:8080" + volumes: + - ./config:/config + environment: + - PUID=1000 + - PGID=1000 + - TZ=Asia/Shanghai + image: lscr.io/linuxserver/adguardhome-sync:latest + labels: + createdBy: "Apps" +networks: + 1panel-network: + external: true \ No newline at end of file diff --git a/apps/adguardhome-sync/logo.png b/apps/adguardhome-sync/logo.png new file mode 100644 index 0000000..1144d34 Binary files /dev/null and b/apps/adguardhome-sync/logo.png differ diff --git a/apps/affine/README.md b/apps/affine/README.md new file mode 100644 index 0000000..b76b8b0 --- /dev/null +++ b/apps/affine/README.md @@ -0,0 +1,21 @@ +# AFFiNE + +**AFFiNE** 是一个开源的一体化工作区和操作系统,适用于构建知识库的所有构建块以及更多内容——wiki、知识管理、演示和数字资产。它是 Notion 和 Miro 的更好替代品。 + +## 主要特征: + +### 任何形式的块的真正画布,文档和白板现已完全合并。 + +- 许多编辑器应用都声称自己是生产力的画布,但 AFFiNE 是极少数允许您在无边画布上放置任何构建块的应用之一——富文本、便签、任何嵌入式网页、多视图数据库、链接页面、形状甚至幻灯片。我们拥有一切。 + +### 多模式 AI 合作伙伴随时准备投入任何工作 + +- 撰写专业的工作报告?将大纲变成富有表现力且易于展示的幻灯片?将文章总结为结构良好的思维导图?整理工作计划和待办事项?或者... 只需一个提示即可直接绘制和编写原型应用程序和网页?有了你,AFFiNE AI 可以将您的创造力推向想象的边缘。 + +### 本地优先、实时协作 + +- 我们喜欢本地优先的理念,即无论使用云端,您始终拥有磁盘上的数据。此外,AFFiNE 支持在 Web 和跨平台客户端上进行实时同步和协作。 + +### 自托管并塑造您自己的 AFFiNE + +- 您可以自由地管理、自行托管、分叉和构建自己的 AFFiNE。插件社区和第三方模块即将推出。Blocksuite 上还有更多牵引力。查看那里了解如何自行托管 AFFiNE。 \ No newline at end of file diff --git a/apps/affine/README_en.md b/apps/affine/README_en.md new file mode 100644 index 0000000..48e8064 --- /dev/null +++ b/apps/affine/README_en.md @@ -0,0 +1,16 @@ +# AFFiNE +**AFFiNE** is an open-source integrated workspace and operating system for building knowledge bases and more—wiki, knowledge management, presentations, and digital assets. It's a better alternative to Notion and Miro. + +## Key Features: +### True canvas for blocks of any form, documents and whiteboards now fully merged. +- Many editor apps claim to be productivity canvases, but AFFiNE is one of the very few apps that allows you to place any building block on an infinite canvas—rich text, sticky notes, embedded webpages, multi-view databases, linked pages, shapes, and even slideshows. We have it all. + +### Multi-mode AI partner ready for any task +- Writing professional work reports? Turning outlines into expressive and easy-to-present slideshows? Summarizing articles into well-structured mind maps? Organizing work plans and to-dos? Or... drawing and writing prototype applications and webpages with just a prompt? With you, AFFiNE AI can push your creativity to the edge of imagination. + +### Local-first, real-time collaboration +- We love the local-first concept, meaning you always own your data on disk, regardless of cloud usage. Additionally, AFFiNE supports real-time synchronization and collaboration on the web and across platform clients. + +### Self-host and shape your own AFFiNE +- You're free to manage, self-host, fork, and build your own AFFiNE. Plugin communities and third-party modules are coming soon. Blocksuite has even more traction. Check it out to learn how to self-host AFFiNE. + diff --git a/apps/affine/data.yml b/apps/affine/data.yml new file mode 100644 index 0000000..6d6cf9b --- /dev/null +++ b/apps/affine/data.yml @@ -0,0 +1,33 @@ +name: AFFiNE +tags: + - 实用工具 +title: 将文档、白板和数据库完全整合的工作空间 +description: 将文档、白板和数据库完全整合的工作空间 +additionalProperties: + key: affine + name: AFFiNE + tags: + - Tool + shortDescZh: 将文档、白板和数据库完全整合的工作空间 + shortDescEn: A workspace with fully merged docs, whiteboards and databases + type: website + crossVersionUpdate: true + limit: 0 + recommend: 0 + website: https://affine.pro + github: https://github.com/toeverything/AFFiNE + document: https://docs.affine.pro/docs/self-host-affine + architectures: + - amd64 + - arm64 + - arm/v7 + description: + en: A workspace with fully merged docs, whiteboards and databases + zh: 将文档、白板和数据库完全整合的工作空间 + zh-Hant: 將文檔、白板和數據庫完全整合的工作空間 + ja: 文書、ホワイトボード、データベースを完全に統合したワークスペース + ms: Ruang kerja dengan dokumen, papan putih, dan pangkalan data yang sepenuhnya digabungkan + pt-br: Um espaço de trabalho com documentos, quadros brancos e bancos de dados totalmente integrados + ru: Рабочее пространство с полностью объединенными документами, досками и базами данных + ko: 문서, 화이트보드 및 데이터베이스가 완전히 통합된 작업 공간 + memoryRequired: 1024 \ No newline at end of file diff --git a/apps/affine/logo.png b/apps/affine/logo.png new file mode 100644 index 0000000..c0f973a Binary files /dev/null and b/apps/affine/logo.png differ diff --git a/apps/affine/stable/data.yml b/apps/affine/stable/data.yml new file mode 100644 index 0000000..b8db1b9 --- /dev/null +++ b/apps/affine/stable/data.yml @@ -0,0 +1,70 @@ +additionalProperties: + formFields: + - default: 3010 + envKey: PANEL_APP_PORT_HTTP + labelEn: Web Port + labelZh: HTTP 端口 + required: true + rule: paramPort + type: number + label: + en: Web Port + zh: HTTP 端口 + - default: affine + envKey: DB_DATABASE + labelEn: Database + labelZh: 数据库名 + required: true + rule: paramCommon + type: text + label: + en: Database + zh: 数据库名 + - default: affine + envKey: DB_USERNAME + labelEn: User + labelZh: 数据库用户 + random: true + required: true + rule: paramCommon + type: text + label: + en: User + zh: 数据库用户 + - default: affine + envKey: DB_PASSWORD + labelEn: Password + labelZh: 数据库用户密码 + random: true + required: true + type: password + label: + en: Password + zh: 数据库用户密码 + - default: ~/.affine/self-host/storage + envKey: UPLOAD_LOCATION + labelEn: Upload Location + labelZh: 上传目录 + required: true + type: text + label: + en: Upload Location + zh: 上传目录 + - default: ~/.affine/self-host/storage + envKey: CONFIG_LOCATION + labelEn: Config Location + labelZh: 配置目录 + required: true + type: text + label: + en: Config Location + zh: 配置目录 + - default: ~/.affine/self-host/postgres/pgdata + envKey: DB_DATA_LOCATION + labelEn: Postgre Data Location + labelZh: Postgre 数据目录 + required: true + type: text + label: + en: Postgre Data Location + zh: Postgre 数据目录 \ No newline at end of file diff --git a/apps/affine/stable/docker-compose.yml b/apps/affine/stable/docker-compose.yml new file mode 100644 index 0000000..76578b6 --- /dev/null +++ b/apps/affine/stable/docker-compose.yml @@ -0,0 +1,89 @@ +services: + affine: + image: ghcr.io/toeverything/affine-graphql:stable + container_name: ${CONTAINER_NAME} + ports: + - ${PANEL_APP_PORT_HTTP}:3010 + depends_on: + redis: + condition: service_healthy + postgres: + condition: service_healthy + affine_migration: + condition: service_completed_successfully + volumes: + # custom configurations + - ${UPLOAD_LOCATION}:/root/.affine/storage + - ${CONFIG_LOCATION}:/root/.affine/config + environment: + - REDIS_SERVER_HOST=redis + - DATABASE_URL=postgresql://${DB_USERNAME}:${DB_PASSWORD}@postgres:5432/${DB_DATABASE:-affine} + - AFFINE_INDEXER_ENABLED=false + networks: + - 1panel-network + restart: always + labels: + createdBy: Apps + affine_migration: + image: ghcr.io/toeverything/affine-graphql:stable + container_name: ${CONTAINER_NAME}_migration_job + volumes: + # custom configurations + - ${UPLOAD_LOCATION}:/root/.affine/storage + - ${CONFIG_LOCATION}:/root/.affine/config + command: ['sh', '-c', 'node ./scripts/self-host-predeploy.js'] + networks: + - 1panel-network + environment: + - REDIS_SERVER_HOST=redis + - DATABASE_URL=postgresql://${DB_USERNAME}:${DB_PASSWORD}@postgres:5432/${DB_DATABASE:-affine} + - AFFINE_INDEXER_ENABLED=false + depends_on: + postgres: + condition: service_healthy + redis: + condition: service_healthy + labels: + createdBy: Apps + restart: no + redis: + image: redis + container_name: ${CONTAINER_NAME}_redis + healthcheck: + test: ['CMD', 'redis-cli', '--raw', 'incr', 'ping'] + interval: 10s + timeout: 5s + retries: 5 + networks: + - 1panel-network + labels: + createdBy: Apps + restart: always + + postgres: + image: pgvector/pgvector:pg16 + container_name: ${CONTAINER_NAME}_postgres + volumes: + - ${DB_DATA_LOCATION}:/var/lib/postgresql/data + networks: + - 1panel-network + labels: + createdBy: Apps + environment: + POSTGRES_USER: ${DB_USERNAME} + POSTGRES_PASSWORD: ${DB_PASSWORD} + POSTGRES_DB: ${DB_DATABASE:-affine} + POSTGRES_INITDB_ARGS: '--data-checksums' + # you better set a password for you database + # or you may add 'POSTGRES_HOST_AUTH_METHOD=trust' to ignore postgres security policy + POSTGRES_HOST_AUTH_METHOD: trust + healthcheck: + test: + ['CMD', 'pg_isready', '-U', "${DB_USERNAME}", '-d', "${DB_DATABASE:-affine}"] + interval: 10s + timeout: 5s + retries: 5 + restart: always +networks: + 1panel-network: + external: true \ No newline at end of file diff --git a/apps/alist/3.45.0/data.yml b/apps/alist/3.45.0/data.yml new file mode 100644 index 0000000..c373965 --- /dev/null +++ b/apps/alist/3.45.0/data.yml @@ -0,0 +1,36 @@ +additionalProperties: + formFields: + - default: 5244 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: WebUI Port + labelZh: 网页端口 + required: true + rule: paramPort + type: number + label: + en: WebUI Port + ja: WebUI ポート + ms: Port WebUI + pt-br: Porta WebUI + ru: Порт WebUI + ko: WebUI 포트 + zh-Hant: WebUI 埠 + zh: WebUI 端口 + - default: 5426 + edit: true + envKey: PANEL_APP_PORT_S3 + labelEn: S3 Port + labelZh: S3 端口 + required: true + rule: paramPort + type: number + label: + en: S3 Port + ja: S3 ポート + ms: Port S3 + pt-br: Porta S3 + ru: Порт S3 + ko: S3 포트 + zh-Hant: S3 埠 + zh: S3 端口 diff --git a/apps/alist/3.45.0/data/data/.gitkeep b/apps/alist/3.45.0/data/data/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/apps/alist/3.45.0/data/mnt/.gitkeep b/apps/alist/3.45.0/data/mnt/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/apps/alist/3.45.0/docker-compose.yml b/apps/alist/3.45.0/docker-compose.yml new file mode 100644 index 0000000..ae0d06c --- /dev/null +++ b/apps/alist/3.45.0/docker-compose.yml @@ -0,0 +1,23 @@ +services: + alist: + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:5244" + - "${PANEL_APP_PORT_S3}:5426" + volumes: + - ./data/data:/opt/alist/data + - ./data/mnt:/mnt/data + environment: + - PUID=0 + - PGID=0 + - UMASK=022 + image: xhofe/alist:v3.45.0 + labels: + createdBy: "Apps" +networks: + 1panel-network: + external: true + diff --git a/apps/alist/3.45.0/scripts/upgrade.sh b/apps/alist/3.45.0/scripts/upgrade.sh new file mode 100644 index 0000000..8957ef5 --- /dev/null +++ b/apps/alist/3.45.0/scripts/upgrade.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +if [[ -f ./.env ]]; then + if grep -q 'PANEL_APP_PORT_S3' ./.env; then + echo "PANEL_APP_PORT_S3 参数已存在" + else + echo 'PANEL_APP_PORT_S3=5426' >> ./.env + echo "已添加 PANEL_APP_PORT_S3=5426" + fi +else + echo ".env 文件不存在" +fi diff --git a/apps/alist/README.md b/apps/alist/README.md new file mode 100644 index 0000000..34cc2ba --- /dev/null +++ b/apps/alist/README.md @@ -0,0 +1,45 @@ +## 申明 +由于原Alist项目所有者、文档、代码以及社群都被大幅度修改,原开发者Xhofe已经离开,当前最后版本为v3.45.0,基于此版本进行封存;后续基于开源社区维护OpenList进行更新;安装时,请选择openlist版本。 + +# 账号密码 + +容器列表点击 `终端` 按钮,进入容器内执行命令设置密码。 + +- **生成随机密码**:`./alist admin random` +- **手动设置密码**:`./alist admin set NEW_PASSWORD` + +# AList + +AList 是一个支持多种存储,支持网页浏览和 WebDAV 的文件列表程序,由 gin 和 Solidjs 驱动。 + +## 支持的存储: + +- 本地存储 +- [阿里云盘](https://www.aliyundrive.com/) +- OneDrive / Sharepoint([国际版](https://www.office.com/), [世纪互联](https://portal.partner.microsoftonline.cn),de,us) +- [天翼云盘](https://cloud.189.cn) (个人云, 家庭云) +- [GoogleDrive](https://drive.google.com/) +- [123云盘](https://www.123pan.com/) +- FTP / SFTP +- [PikPak](https://www.mypikpak.com/) +- [S3](https://aws.amazon.com/cn/s3/) +- [Seafile](https://seafile.com/) +- [又拍云对象存储](https://www.upyun.com/products/file-storage) +- WebDav(支持无API的OneDrive/SharePoint) +- Teambition([中国](https://www.teambition.com/ ),[国际](https://us.teambition.com/ )) +- [分秒帧](https://www.mediatrack.cn/) +- [和彩云](https://yun.139.com/) (个人云, 家庭云) +- [Yandex.Disk](https://disk.yandex.com/) +- [百度网盘](http://pan.baidu.com/) +- [UC网盘](https://drive.uc.cn) +- [夸克网盘](https://pan.quark.cn) +- [迅雷网盘](https://pan.xunlei.com) +- [蓝奏云](https://www.lanzou.com/) +- [阿里云盘分享](https://www.aliyundrive.com/) +- [谷歌相册](https://photos.google.com/) +- [Mega.nz](https://mega.nz) +- [一刻相册](https://photo.baidu.com/) +- SMB +- [115](https://115.com/) +- Cloudreve +- [Dropbox](https://www.dropbox.com/) \ No newline at end of file diff --git a/apps/alist/README_en.md b/apps/alist/README_en.md new file mode 100644 index 0000000..efdd301 --- /dev/null +++ b/apps/alist/README_en.md @@ -0,0 +1,64 @@ +# AList + +A file list program that supports multiple storage, and supports web browsing and webdav, powered by gin and Solidjs. + +## Supported Storage + +- Local storage +- [Crypt](/guide/drivers/Crypt.md) +- [Aliyundrive Open](../guide/drivers/aliyundrive_open.md) +- [aliyundrive](https://www.alipan.com/) +- [OneDrive](./drivers/onedrive.md) /[APP](./drivers/onedrive_app.md)/ Sharepoint ([global](https://www.office.com/), [cn](https://portal.partner.microsoftonline.cn),de,us) +- [GoogleDrive](https://drive.google.com/) +- [123pan/Share/Link](https://www.123pan.com/) +- [Alist](https://github.com/Xhofe/alist) +- FTP +- SFTP +- [PikPak / share](https://www.mypikpak.com/) +- [S3](../guide/drivers/s3.md) +- [Doge](../guide/drivers/s3.md#add-object-storage-examples-and-official-documents) +- [UPYUN Storage Service](https://www.upyun.com/products/file-storage) +- WebDAV +- Teambition([China](https://www.teambition.com/),[International](https://us.teambition.com/)) +- [mediatrack](https://www.mediatrack.cn/) +- [189cloud](https://cloud.189.cn) (Personal, Family) +- [139yun](https://yun.139.com/) (Personal, Family) +- [Wopan](https://pan.wo.cn) +- [MoPan](https://mopan.sc.189.cn/mopan/#/downloadPc) +- [YandexDisk](https://disk.yandex.com/) +- [BaiduNetdisk](https://pan.baidu.com/) / [share](./drivers/baidu_share.md) +- [Quark/TV](https://pan.quark.cn/) +- [Thunder / X Browser](../guide/drivers/thunder.md) +- [Lanzou](https://www.lanzou.com/)、[NewLanzou](https://www.ilanzou.com) +- [Feiji Cloud](https://feijipan.com/) +- [Aliyundrive share](https://www.alipan.com/) +- [Google photo](https://photos.google.com/) +- [Mega.nz](https://mega.nz) +- [Baidu photo](https://photo.baidu.com/) +- [TeraBox](https://www.terabox.com/) +- [AList v2/v3](../guide/drivers/Alist%20V2%20V3.md) +- SMB +- [alias](../guide/advanced/alias.md) +- [115](https://115.com/) +- [Seafile](https://www.seafile.com/) +- Cloudreve +- [Trainbit](https://trainbit.com/) +- [UrlTree](../guide/drivers/UrlTree.md) +- IPFS +- [UC Clouddrive/TV](https://drive.uc.cn/) +- [Dropbox](https://www.dropbox.com) +- [Tencent weiyun](https://www.weiyun.com/) +- [vtencent](https://app.v.tencent.com/) +- [ChaoxingGroupCloud](../guide/drivers/chaoxing.md) +- [Quqi Cloud](https://quqi.com) +- [163 Music Drive](../guide/drivers/163music.md) +- [halalcloud](../guide/drivers/halalcloud.md) +- [LenovoNasShare](https://pc.lenovo.com.cn) + +## Account Password + +Click the `Terminal` button in the container list to enter the container and execute commands to set the password. + +- **Use a random password**: `./alist admin random` +- **Or set password manually**: `./alist admin set NEW_PASSWORD` + diff --git a/apps/alist/data.yml b/apps/alist/data.yml new file mode 100644 index 0000000..a4ce3b2 --- /dev/null +++ b/apps/alist/data.yml @@ -0,0 +1,37 @@ +name: AList +tags: + - 实用工具 + - 云存储 +title: 支持多存储的文件列表程序和私人网盘 +description: 支持多存储的文件列表程序和私人网盘 +additionalProperties: + key: alist + name: AList + tags: + - Storage + - Tool + shortDescZh: 支持多存储的文件列表程序和私人网盘 + shortDescEn: Supporting multi-storage file listing program and private cloud storage + description: + en: Supporting multi-storage file listing program and private cloud storage + ja: 複数ストレージのファイルリスト表示プログラムとプライベートクラウドストレージのサポート + ms: Menyokong program senarai fail multi-penyimpanan dan penyimpanan awan peribadi + pt-br: Suporte para programa de listagem de arquivos em múltiplos armazenamentos e armazenamento em nuvem privado + ru: Поддержка программы отображения файлов в нескольких хранилищах и частного облачного хранилища + ko: 다중 저장소 파일 목록 프로그램 및 개인 클라우드 저장소 지원 + zh-Hant: 支援多存儲檔案列出程序和私人雲端空間 + zh: 支持多存储文件列出程序和私有云存储 + type: website + crossVersionUpdate: true + limit: 0 + recommend: 65 + website: https://alist.nn.ci/ + github: https://github.com/alist-org/alist + document: https://alist.nn.ci/zh/guide/ + architectures: + - amd64 + - arm64 + - arm/v7 + - arm/v6 + - s390x + diff --git a/apps/alist/logo.png b/apps/alist/logo.png new file mode 100644 index 0000000..65f8731 Binary files /dev/null and b/apps/alist/logo.png differ diff --git a/apps/arcane/README.md b/apps/arcane/README.md new file mode 100644 index 0000000..6e96ef9 --- /dev/null +++ b/apps/arcane/README.md @@ -0,0 +1,40 @@ +# Arcane + +Arcane 是一款现代化、开源的Docker管理Web面板,支持容器、镜像、网络等一站式管理。 + +## 功能特性 + +- 现代化Web界面,操作简洁直观 +- 支持容器、镜像、网络、卷等Docker资源的可视化管理 +- 支持多平台和多架构 +- 支持堆栈(Stack)定义与管理 +- 数据和设置持久化存储于 `./data` 目录 +- 挂载Docker套接字,支持主机级管理 + +## 使用方法 + +1. 部署后访问 `http://服务器IP:3000` 进入Web管理界面 +2. 首次使用请根据界面提示初始化设置 +3. 数据目录:`./data` +4. 挂载宿主机 `/var/run/docker.sock`,实现容器管理 +5. 环境变量 `PUBLIC_SESSION_SECRET`:用于会话加密,建议使用32位随机字符串,可在应用表单中自定义,默认值为 `arcane-session-4e2b8c7f9d1a6e3b2c5d7f8a1b0c9e6d`。如需更高安全性,可用 `openssl rand -base64 32` 生成。 + +### 账户密码 + +- 首次运行时,如果不存在用户,Arcane 会创建默认管理员用户。 + - **用户名:** `arcane` + - **密码:** `arcane-admin` + - 首次登录必须更改此密码。 +- 要添加用户:转到**设置 → 用户管理**,然后单击**创建用户**。填写用户名、显示名称、电子邮件和密码。 + +## 安全提醒 + +- 挂载Docker套接字(/var/run/docker.sock)会赋予容器主机级管理权限,请确保安全使用! +- Arcane 目前为预发布软件,功能和界面可能会有较大变动。 + +## 相关链接 + +- [官方网站](https://arcane.ofkm.dev/) +- [GitHub 项目](https://github.com/ofkm/arcane) +- [官方文档](https://arcane.ofkm.dev/docs/) +- [Docker Hub](https://ghcr.io/ofkm/arcane) \ No newline at end of file diff --git a/apps/arcane/README_en.md b/apps/arcane/README_en.md new file mode 100644 index 0000000..7f1ffb9 --- /dev/null +++ b/apps/arcane/README_en.md @@ -0,0 +1,40 @@ +# Arcane + +Arcane is a modern, open-source Docker management web panel for containers, images, networks and more. + +## Features + +- Modern web UI, clean and intuitive +- Visual management for containers, images, networks, volumes, etc. +- Multi-platform and multi-architecture support +- Stack (compose) definition and management +- Data and settings persist in `./data` directory +- Mount Docker socket for host-level management + +## Usage + +1. After deployment, access `http://your-server-ip:3000` for the web UI +2. Follow the initial setup instructions on first use +3. Data directory: `./data` +4. Mount host `/var/run/docker.sock` for container management +5. Environment variable `PUBLIC_SESSION_SECRET`: Used for session encryption. It is recommended to use a 32-character random string. You can customize it in the app form. Default: `arcane-session-4e2b8c7f9d1a6e3b2c5d7f8a1b0c9e6d`. For higher security, generate with `openssl rand -base64 32`. + +## Local User Management + +- On first run, Arcane creates a default admin user if no users exist. + - **Username:** `arcane` + - **Password:** `arcane-admin` + - You must change this password during onboarding. +- To add users: Go to **Settings → User Management** and click **Create User**. Fill in username, display name, email, and password. + +## Security Notice + +- Mounting the Docker socket (`/var/run/docker.sock`) gives the container root-level access to the Docker host. Use with caution! +- Arcane is pre-release software. Features and UI may change frequently. + +## Links + +- [Official Website](https://arcane.ofkm.dev/) +- [GitHub Project](https://github.com/ofkm/arcane) +- [Official Documentation](https://arcane.ofkm.dev/docs/) +- [Docker Hub](https://ghcr.io/ofkm/arcane) \ No newline at end of file diff --git a/apps/arcane/data.yml b/apps/arcane/data.yml new file mode 100644 index 0000000..b435433 --- /dev/null +++ b/apps/arcane/data.yml @@ -0,0 +1,31 @@ +name: Arcane +tags: + - 实用工具 +title: 现代化Docker管理面板 +description: Arcane 是一款现代化、开源的Docker管理Web面板,支持容器、镜像、网络等一站式管理 +additionalProperties: + key: arcane + name: Arcane + tags: + - Tool + shortDescZh: 现代化Docker管理面板 + shortDescEn: Modern Docker management panel + description: + en: Arcane is a modern, open-source Docker management web panel for containers, images, networks and more + ja: Arcaneはコンテナ、イメージ、ネットワークなどを一元管理できるモダンなオープンソースDocker管理Webパネルです + ms: Arcane ialah panel web pengurusan Docker moden sumber terbuka untuk kontena, imej, rangkaian dan banyak lagi + pt-br: Arcane é um painel web moderno e de código aberto para gerenciamento de Docker, incluindo containers, imagens, redes e mais + ru: Arcane — это современная, открытая веб-панель управления Docker для контейнеров, образов, сетей и др. + ko: Arcane는 컨테이너, 이미지, 네트워크 등을 위한 현대적이고 오픈 소스인 Docker 관리 웹 패널입니다 + zh-Hant: Arcane 是一款現代化、開源的 Docker 管理 Web 面板,支援容器、映像、網路等一站式管理 + zh: Arcane 是一款现代化、开源的Docker管理Web面板,支持容器、镜像、网络等一站式管理 + type: website + crossVersionUpdate: true + limit: 0 + recommend: 0 + website: https://arcane.ofkm.dev/ + github: https://github.com/ofkm/arcane + document: https://arcane.ofkm.dev/docs/ + architectures: + - amd64 + - arm64 \ No newline at end of file diff --git a/apps/arcane/latest/data.yml b/apps/arcane/latest/data.yml new file mode 100644 index 0000000..f666c4f --- /dev/null +++ b/apps/arcane/latest/data.yml @@ -0,0 +1,35 @@ +additionalProperties: + formFields: + - default: 3000 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Web UI Port + labelZh: Web界面端口 + required: true + rule: paramPort + type: number + label: + en: Web UI Port + ja: Web UI ポート + ms: Port UI Web + pt-br: Porta da interface web + ru: Веб-порт интерфейса + ko: 웹 UI 포트 + zh-Hant: Web UI 埠 + zh: Web界面端口 + - default: "arcane-session-4e2b8c7f9d1a6e3b2c5d7f8a1b0c9e6d" + edit: true + envKey: PUBLIC_SESSION_SECRET + labelEn: Session Secret + labelZh: 会话密钥 + required: true + type: text + label: + en: Session Secret + ja: セッションシークレット + ms: Rahsia Sesi + pt-br: Segredo da sessão + ru: Секрет сессии + ko: 세션 시크릿 + zh-Hant: 會話密鑰 + zh: 会话密钥 \ No newline at end of file diff --git a/apps/arcane/latest/docker-compose.yml b/apps/arcane/latest/docker-compose.yml new file mode 100644 index 0000000..1258586 --- /dev/null +++ b/apps/arcane/latest/docker-compose.yml @@ -0,0 +1,18 @@ +services: + arcane: + image: ghcr.io/ofkm/arcane:latest + container_name: ${CONTAINER_NAME} + ports: + - "${PANEL_APP_PORT_HTTP}:3000" + volumes: + - /var/run/docker.sock:/var/run/docker.sock + - ./data:/app/data + environment: + - APP_ENV=production + - PUID=2000 + - PGID=2000 + - PUBLIC_SESSION_SECRET=${PUBLIC_SESSION_SECRET} + restart: always +networks: + 1panel-network: + external: true \ No newline at end of file diff --git a/apps/arcane/logo.png b/apps/arcane/logo.png new file mode 100644 index 0000000..f3ff76e Binary files /dev/null and b/apps/arcane/logo.png differ diff --git a/apps/blinko/1.0.3/.env.sample b/apps/blinko/1.0.3/.env.sample new file mode 100644 index 0000000..0780dc5 --- /dev/null +++ b/apps/blinko/1.0.3/.env.sample @@ -0,0 +1,11 @@ +CONTAINER_NAME="blinko" +NEXTAUTH_SECRET="my_ultra_secure_nextauth_secret" +NEXTAUTH_URL="http://1.2.3.4:1111" +NEXT_PUBLIC_BASE_URL="http://1.2.3.4:1111" +PANEL_APP_PORT_HTTP=1111 +PANEL_DB_HOST="postgresql" +PANEL_DB_HOST_NAME="postgresql" +PANEL_DB_NAME="blinko" +PANEL_DB_PORT=5432 +PANEL_DB_USER="blinko" +PANEL_DB_USER_PASSWORD="blinko" diff --git a/apps/blinko/1.0.3/data.yml b/apps/blinko/1.0.3/data.yml new file mode 100644 index 0000000..3fe7c78 --- /dev/null +++ b/apps/blinko/1.0.3/data.yml @@ -0,0 +1,70 @@ +additionalProperties: + formFields: + - default: "1111" + envKey: PANEL_APP_PORT_HTTP + labelEn: HTTP Port + labelZh: HTTP 端口 + required: true + rule: paramPort + type: number + - default: "http://1.2.3.4:1111" + envKey: NEXTAUTH_URL + labelEn: NextAuth URL + labelZh: 基本 URL + required: true + rule: paramExtUrl + type: text + - default: "http://1.2.3.4:1111" + envKey: NEXT_PUBLIC_BASE_URL + labelEn: Next Public Base URL + labelZh: 公共基本 URL + required: true + rule: paramExtUrl + type: text + - default: "my_ultra_secure_nextauth_secret" + envKey: NEXTAUTH_SECRET + labelEn: NextAuth Secret + labelZh: NextAuth 密钥 + random: true + required: true + rule: paramComplexity + type: password + - default: "" + envKey: PANEL_DB_HOST + key: postgresql + labelEn: PostgreSQL Database Service + labelZh: PostgreSQL 数据库服务 + required: true + type: service + - default: "5432" + edit: true + envKey: PANEL_DB_PORT + labelEn: Database Port Number + labelZh: 数据库端口号 + required: true + rule: paramPort + type: number + - default: "blinko" + envKey: PANEL_DB_NAME + labelEn: Database + labelZh: 数据库名 + random: true + required: true + rule: paramCommon + type: text + - default: "blinko" + envKey: PANEL_DB_USER + labelEn: User + labelZh: 数据库用户 + random: true + required: true + rule: paramCommon + type: text + - default: "blinko" + envKey: PANEL_DB_USER_PASSWORD + labelEn: Password + labelZh: 数据库用户密码 + random: true + required: true + rule: paramComplexity + type: password diff --git a/apps/blinko/1.0.3/docker-compose.yml b/apps/blinko/1.0.3/docker-compose.yml new file mode 100644 index 0000000..31094b3 --- /dev/null +++ b/apps/blinko/1.0.3/docker-compose.yml @@ -0,0 +1,35 @@ +services: + blinko: + image: "blinkospace/blinko:1.0.3" + container_name: ${CONTAINER_NAME} + environment: + NODE_ENV: production + NEXTAUTH_URL: ${NEXTAUTH_URL} + NEXT_PUBLIC_BASE_URL: ${NEXT_PUBLIC_BASE_URL} + NEXTAUTH_SECRET: ${NEXTAUTH_SECRET} + DATABASE_URL: postgresql://${PANEL_DB_USER}:${PANEL_DB_USER_PASSWORD}@${PANEL_DB_HOST}:${PANEL_DB_PORT}/${PANEL_DB_NAME} + depends_on: + postgres: + condition: service_healthy + volumes: + - "./data:/app/.blinko" + restart: always + logging: + options: + max-size: "10m" + max-file: "3" + ports: + - "${PANEL_APP_PORT_HTTP}:1111" + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:1111/"] + interval: 30s + timeout: 10s + retries: 5 + start_period: 30s + networks: + - 1panel-network + labels: + createdBy: "Apps" +networks: + 1panel-network: + external: true \ No newline at end of file diff --git a/apps/blinko/README.md b/apps/blinko/README.md new file mode 100644 index 0000000..9037999 --- /dev/null +++ b/apps/blinko/README.md @@ -0,0 +1,49 @@ + +# Blinko - 开源、自托管的笔记应用 + +Blinko 是一个创新的开源项目,专为那些想要快速捕捉和组织灵感的人设计。它允许用户在灵感闪现的瞬间无缝记录想法,确保不错过任何创意火花。 + +[在线演示](https://demo.blinko.space) • +[文档](https://docs.blinko.space/introduction) • + +> 在线演示账号: username:blinko password:blinko + +## 🚀主要特性 +- 🤖**AI 增强笔记检索**:通过 Blinko 的先进 AI 驱动的 RAG(检索增强生成)技术,你可以使用自然语言查询快速搜索和访问笔记,轻松找到所需内容。支持 OpenAI、Azure OpenAI 和 Ollama。 + +- 🔒**数据所有权**:你的隐私至关重要。所有笔记和数据都安全存储在你的自托管环境中,确保对信息的完全控制。 + +- 🚀**高效快速**:即时捕捉想法并以纯文本形式存储以便于访问,完全支持 Markdown 格式,便于快速排版和分享。 + +- 💡**轻量架构,多端支持**:基于 Tauri 构建的 Blinko 采用简洁轻量的架构,在保持卓越速度和效率的同时,并且支持Macos,Windows,Android,Linux等多平台。 + +- 🔓**开放协作**:作为开源项目,Blinko 欢迎社区贡献。所有代码都在 GitHub 上公开透明,培养协作和持续改进的精神。 + +## 🤖 AI 模型支持 +### OpenAI +- 支持 OpenAI API +- 支持自定义 API 地址 +- 支持 Azure OpenAI + +### Ollama +- 支持本地部署 +- 默认地址:http://127.0.0.1:11434 +- 支持所有 Ollama 模型 +- 完全免费,无需 API Key + +## 📦快速开始(Docker Compose) + +```bash +curl -s https://raw.githubusercontent.com/blinko-space/blinko/main/install.sh | bash +``` + +## 环境配置 + +您可以通过设置不同的选项在运行时配置Blinko服务器。这些选项既可以作为环境变量定义,也可以作为命令行参数在启动服务器时指定。如果两种方法同时使用,命令行参数将优先于环境变量。以下是可用的配置选项列表: + +| 环境变量 | 描述 | +|------------------------|------------------------------------------------| +| NEXTAUTH_URL | 指定应用程序的基础URL,通常是部署站点的根URL,用于身份验证回调和重定向。 | +| NEXT_PUBLIC_BASE_URL | 定义应用程序的公共基础URL,用作前端和API请求的基础路径。 | +| NEXTAUTH_SECRET | 用于加密会话和身份验证令牌的密钥,以确保用户数据的安全性。 | +| DATABASE_URL | 数据库连接URL,用于连接和访问Blinko的数据库。 | \ No newline at end of file diff --git a/apps/blinko/data.yml b/apps/blinko/data.yml new file mode 100644 index 0000000..f7694a2 --- /dev/null +++ b/apps/blinko/data.yml @@ -0,0 +1,19 @@ +name: Blinko +tags: + - 实用工具 +title: 一款开源、自托管的个人笔记工具 +description: 一款开源、自托管的个人笔记工具 +additionalProperties: + key: blinko + name: Blinko + tags: + - Tool + shortDescZh: 一款开源、自托管的个人笔记工具 + shortDescEn: An open-source, self-hosted personal note tool + type: tool + crossVersionUpdate: true + limit: 0 + recommend: 0 + website: https://blinko-demo.vercel.app + github: https://github.com/blinko-space/blinko + document: https://blinko-doc.vercel.app/intro.html diff --git a/apps/blinko/logo.png b/apps/blinko/logo.png new file mode 100644 index 0000000..80391a7 Binary files /dev/null and b/apps/blinko/logo.png differ diff --git a/apps/cup/README.md b/apps/cup/README.md new file mode 100644 index 0000000..005c985 --- /dev/null +++ b/apps/cup/README.md @@ -0,0 +1,24 @@ +# cup + +Cup 是检查容器镜像更新最简单的方法. + +![https://cdn.jsdelivr.net/gh/sergi0g/cup@main/screenshots/web_dark.png](https://cdn.jsdelivr.net/gh/sergi0g/cup@main/screenshots/web_dark.png) + +### 特色✨ +- 速度超快。Cup 充分利用了您的 CPU 资源,并经过高度优化,带来闪电般的速度。在我的 Raspberry Pi 5 上,58 张图片的读取仅用了 3.7 秒! +- 支持大多数注册中心,包括 Docker Hub、ghcr.io、Quay、lscr.io 甚至 Gitea(或衍生产品) +- 不会耗尽任何速率限制。这正是我创建 Cup 的初衷。我觉得这个功能现在尤其重要,因为Docker Hub 正在降低未经身份验证用户的拉取限制。 +- 漂亮的 CLI 和 Web 界面,可随时检查您的容器。 +- 二进制文件非常小巧!撰写本文时,它只有 5.4 MB。无需再为如此简单的程序拉取 100 多 MB 的 Docker 镜像。 +- CLI 和 Web 界面均提供 JSON 输出,方便您将 Cup 连接到集成。它易于解析,并且可以轻松设置 Webhook 和美观的仪表板! + +### 文档📘 +看看https://cup.sergi0g.dev/docs! + +### 限制 + +``` +Cup 仍在开发中。它可能没有其他替代品那么多功能。如果其中某个功能对您来说非常重要,请考虑使用其他工具。 + +Cup 无法直接触发您的集成。如果您希望自动触发,请使用 What's up Docker。Cup 的设计初衷很简单。数据就在那里,您可以自行检索(例如,通过cup check -rcronjob 运行或定期/api/v3/json从服务器请求 URL)。 +``` \ No newline at end of file diff --git a/apps/cup/data.yml b/apps/cup/data.yml new file mode 100644 index 0000000..242f50f --- /dev/null +++ b/apps/cup/data.yml @@ -0,0 +1,25 @@ +name: cup +tags: + - 实用工具 +title: 自动检测 Docker 容器基础镜像的工具 +description: 自动检测 Docker 容器基础镜像的工具 +additionalProperties: + key: cup + name: cup + tags: + - Tool + shortDescZh: 自动检测 Docker 容器基础镜像的工具 + shortDescEn: Docker container updates made easy + type: website + crossVersionUpdate: true + limit: 1 + recommend: 0 + website: https://cup.sergi0g.dev/ + github: https://github.com/sergi0g/cup + document: https://cup.sergi0g.dev/docs + description: + en: Docker container updates made easy + zh: 自动检测 Docker 容器基础镜像的工具 + architectures: + - amd64 + - arm64 \ No newline at end of file diff --git a/apps/cup/latest/data.yml b/apps/cup/latest/data.yml new file mode 100644 index 0000000..5d55491 --- /dev/null +++ b/apps/cup/latest/data.yml @@ -0,0 +1,10 @@ +additionalProperties: + formFields: + - default: "51230" + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Service Port 8000 + labelZh: 服务端口 8000 + required: true + rule: paramPort + type: number diff --git a/apps/cup/latest/docker-compose.yml b/apps/cup/latest/docker-compose.yml new file mode 100644 index 0000000..a61d331 --- /dev/null +++ b/apps/cup/latest/docker-compose.yml @@ -0,0 +1,17 @@ +services: + cup: + image: ghcr.io/sergi0g/cup:latest + container_name: ${CONTAINER_NAME} + restart: unless-stopped + ports: + - ${PANEL_APP_PORT_HTTP}:8000 + volumes: + - /var/run/docker.sock:/var/run/docker.sock + networks: + - 1panel-network + labels: + createdBy: Apps + command: serve +networks: + 1panel-network: + external: true diff --git a/apps/cup/logo.png b/apps/cup/logo.png new file mode 100644 index 0000000..2507384 Binary files /dev/null and b/apps/cup/logo.png differ diff --git a/apps/deepseek-free-api/README.md b/apps/deepseek-free-api/README.md new file mode 100644 index 0000000..cdfd977 --- /dev/null +++ b/apps/deepseek-free-api/README.md @@ -0,0 +1,31 @@ +### 工具介绍 + +🚀 DeepSeek-V3 & R1大模型逆向API【特长:良心厂商】(官方贼便宜,建议直接走官方),支持高速流式输出、多轮对话,联网搜索,R1深度思考,零配置部署,多路token支持,仅供测试,如需商用请前往官方开放平台。 + +### 风险说明 + +- 逆向API是不稳定的,建议前往DeepSeek官方 https://platform.deepseek.com/ 付费使用API,避免封禁的风险。 + +- 本组织和个人不接受任何资金捐助和交易,此项目是纯粹研究交流学习性质! + +- 仅限自用,禁止对外提供服务或商用,避免对官方造成服务压力,否则风险自担! + +### 使用说明 + +请确保您在中国境内或者拥有中国境内的个人计算设备,否则部署后可能因无法访问DeepSeek而无法使用。 + +从 [DeepSeek](https://chat.deepseek.com/) 获取userToken value + +进入DeepSeek随便发起一个对话,然后F12打开开发者工具,从Application > LocalStorage中找到`userToken`中的value值,复制这个值填写到Lobechat或者CherryStudio等工具中,作为API密钥,API地址是你部署应用的IP加端口,例如:`https://192.168.1.105:8001/v1/chat/completions`,注意某些工具只需要填写`https://192.168.1.105:8001/`即可。 + +[![获取userToken](https://cdn.jsdelivr.net/gh/LLM-Red-Team/deepseek-free-api@master/doc/example-0.png)](https://cdn.jsdelivr.net/gh/LLM-Red-Team/deepseek-free-api@master/doc/example-0.png) + +### 多账号接入 + +目前同个账号同时只能有*一路*输出,你可以通过提供多个账号的userToken value并使用`,`拼接提供: + +``` +API密钥:TOKEN1,TOKEN2,TOKEN3 +``` + +每次请求服务会从中挑选一个。 diff --git a/apps/deepseek-free-api/data.yml b/apps/deepseek-free-api/data.yml new file mode 100644 index 0000000..5c3d9c3 --- /dev/null +++ b/apps/deepseek-free-api/data.yml @@ -0,0 +1,24 @@ +name: Deepseek-Free-API +tags: + - AI / 大模型 +title: DeepSeek-V3 & R1大模型逆向API +description: DeepSeek V3 Free 服务 +additionalProperties: + key: deepseek-free-api + name: Deepseek-Free-API + tags: + - AI + - Tools + shortDescZh: DeepSeek-V3 & R1大模型逆向API + shortDescEn: A 1Panel deployment for deepseek-free-api + type: website + crossVersionUpdate: true + limit: 0 + recommend: 0 + architectures: + - amd64 + - arm64 + + website: https://platform.deepseek.com/ + github: https://github.com/LLM-Red-Team/deepseek-free-api + document: https://github.com/LLM-Red-Team/deepseek-free-api \ No newline at end of file diff --git a/apps/deepseek-free-api/latest/data.yml b/apps/deepseek-free-api/latest/data.yml new file mode 100644 index 0000000..e558009 --- /dev/null +++ b/apps/deepseek-free-api/latest/data.yml @@ -0,0 +1,10 @@ +additionalProperties: + formFields: + - default: "8001" + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Service Port + labelZh: 服务端口 + required: true + rule: paramPort + type: number diff --git a/apps/deepseek-free-api/latest/docker-compose.yml b/apps/deepseek-free-api/latest/docker-compose.yml new file mode 100644 index 0000000..92a9c18 --- /dev/null +++ b/apps/deepseek-free-api/latest/docker-compose.yml @@ -0,0 +1,16 @@ +services: + deepseek-free-api: + image: vinlic/deepseek-free-api:latest + container_name: ${CONTAINER_NAME} + ports: + - ${PANEL_APP_PORT_HTTP}:8000 + networks: + - 1panel-network + environment: + - TZ=Asia/Shanghai + labels: + createdBy: Apps + restart: always +networks: + 1panel-network: + external: true diff --git a/apps/deepseek-free-api/logo.png b/apps/deepseek-free-api/logo.png new file mode 100644 index 0000000..2ccca71 Binary files /dev/null and b/apps/deepseek-free-api/logo.png differ diff --git a/apps/demo/README.md b/apps/demo/README.md new file mode 100644 index 0000000..e0c9709 --- /dev/null +++ b/apps/demo/README.md @@ -0,0 +1,13 @@ +# 1Panel Apps + +这是一款适配 1Panel 应用商店的通用应用模板, + +旨在简化 Docker 应用的快速适配过程,让用户轻松将所需应用集成至 1Panel 应用商店。 + +它能够有效解决非商店应用无法使用 1Panel 快照和应用备份功能的问题。 + +## 使用说明 + +- 可以按需修改安装界面的参数 + +- 也可以直接忽视安装界面提供的参数,然后勾选`“高级设置”`,勾选`“编辑compose文件”`,使用自定义的 `docker-compose.yml`文件 \ No newline at end of file diff --git a/apps/demo/bridge-network/.env.sample b/apps/demo/bridge-network/.env.sample new file mode 100644 index 0000000..dbf8a3a --- /dev/null +++ b/apps/demo/bridge-network/.env.sample @@ -0,0 +1,9 @@ +CONTAINER_NAME="1panel-apps" +DATA_PATH="./data" +DATA_PATH_INTERNAL="/data" +ENV1="" +IMAGE="" +PANEL_APP_PORT_HTTP=40329 +PANEL_APP_PORT_HTTP_INTERNAL=40329 +RESTART_POLICY="always" +TIME_ZONE="Asia/Shanghai" diff --git a/apps/demo/bridge-network/data.yml b/apps/demo/bridge-network/data.yml new file mode 100644 index 0000000..7b831e5 --- /dev/null +++ b/apps/demo/bridge-network/data.yml @@ -0,0 +1,69 @@ +additionalProperties: + formFields: + - default: "" + edit: true + envKey: IMAGE + labelEn: Docker Image + labelZh: Docker 镜像 + required: true + type: text + - default: "always" + edit: true + envKey: RESTART_POLICY + labelEn: Restart Policy + labelZh: 重启策略 + required: true + type: select + values: + - label: "Always" + value: "always" + - label: "Unless Stopped" + value: "unless-stopped" + - label: "On Failure" + value: "on-failure" + - label: "No" + value: "no" + - default: "40329" + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Port + labelZh: 端口 + required: true + rule: paramPort + type: number + - default: "40329" + edit: true + envKey: PANEL_APP_PORT_HTTP_INTERNAL + labelEn: Internal Port + labelZh: 内部端口 + required: true + rule: paramPort + type: number + - default: "./data" + edit: true + envKey: DATA_PATH + labelEn: Data Path + labelZh: 数据路径 + required: true + type: text + - default: "/data" + edit: true + envKey: DATA_PATH_INTERNAL + labelEn: Internal Data Path + labelZh: 内部数据路径 + required: true + type: text + - default: "Asia/Shanghai" + edit: true + envKey: TIME_ZONE + labelEn: Time Zone + labelZh: 时区 + required: true + type: text + - default: "" + edit: true + envKey: ENV1 + labelEn: Environment Variable 1 (Edit to remove comments in compose.yml to take effect) + labelZh: 环境变量 1 (编辑去除compose.yml里的注释生效) + required: false + type: text diff --git a/apps/demo/bridge-network/docker-compose.yml b/apps/demo/bridge-network/docker-compose.yml new file mode 100644 index 0000000..9377e2c --- /dev/null +++ b/apps/demo/bridge-network/docker-compose.yml @@ -0,0 +1,22 @@ +services: + 1panel-apps: + image: ${IMAGE} + container_name: ${CONTAINER_NAME} + restart: ${RESTART_POLICY} + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:${PANEL_APP_PORT_HTTP_INTERNAL}" + volumes: + - "${DATA_PATH}:${DATA_PATH_INTERNAL}" + environment: + # 环境参数按需修改 (Modify the environment parameters as required) + - TZ=${TIME_ZONE} + # 删除以下行前的#号表示启用 (Delete the # sign in front of the following lines to indicate enablement) + # - ${ENV1}=${ENV1} + labels: + createdBy: "Apps" + +networks: + 1panel-network: + external: true diff --git a/apps/demo/data.yml b/apps/demo/data.yml new file mode 100644 index 0000000..478a57b --- /dev/null +++ b/apps/demo/data.yml @@ -0,0 +1,19 @@ +name: 1Panel Apps +tags: + - 建站 +title: 适配 1Panel 应用商店的通用应用模板 +description: 适配 1Panel 应用商店的通用应用模板 +additionalProperties: + key: 1panel-apps + name: 1Panel Apps + tags: + - Website + shortDescZh: 适配 1Panel 应用商店的通用应用模板 + shortDescEn: Universal app template for the 1Panel App Store + type: website + crossVersionUpdate: true + limit: 0 + recommend: 0 + website: https://github.com/okxlin/appstore + github: https://github.com/okxlin/appstore + document: https://github.com/okxlin/appstore diff --git a/apps/demo/host-network/.env.sample b/apps/demo/host-network/.env.sample new file mode 100644 index 0000000..88ad432 --- /dev/null +++ b/apps/demo/host-network/.env.sample @@ -0,0 +1,8 @@ +CONTAINER_NAME="1panel-apps" +DATA_PATH="./data" +DATA_PATH_INTERNAL="/data" +ENV1="" +IMAGE="" +PANEL_APP_PORT_HTTP=40329 +RESTART_POLICY="always" +TIME_ZONE="Asia/Shanghai" diff --git a/apps/demo/host-network/data.yml b/apps/demo/host-network/data.yml new file mode 100644 index 0000000..15a416c --- /dev/null +++ b/apps/demo/host-network/data.yml @@ -0,0 +1,61 @@ +additionalProperties: + formFields: + - default: "" + edit: true + envKey: IMAGE + labelEn: Docker Image + labelZh: Docker 镜像 + required: true + type: text + - default: "always" + edit: true + envKey: RESTART_POLICY + labelEn: Restart Policy + labelZh: 重启策略 + required: true + type: select + values: + - label: "Always" + value: "always" + - label: "Unless Stopped" + value: "unless-stopped" + - label: "On Failure" + value: "on-failure" + - label: "No" + value: "no" + - default: "40329" + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Port (determined by the Docker application itself) + labelZh: 端口 (由 Docker 应用自身决定) + required: true + rule: paramPort + type: number + - default: "./data" + edit: true + envKey: DATA_PATH + labelEn: Data Path + labelZh: 数据路径 + required: true + type: text + - default: "/data" + edit: true + envKey: DATA_PATH_INTERNAL + labelEn: Internal Data Path + labelZh: 内部数据路径 + required: true + type: text + - default: "Asia/Shanghai" + edit: true + envKey: TIME_ZONE + labelEn: Time Zone + labelZh: 时区 + required: true + type: text + - default: "" + edit: true + envKey: ENV1 + labelEn: Environment Variable 1 (Edit to remove comments in compose.yml to take effect) + labelZh: 环境变量 1 (编辑去除compose.yml里的注释生效) + required: false + type: text diff --git a/apps/demo/host-network/docker-compose.yml b/apps/demo/host-network/docker-compose.yml new file mode 100644 index 0000000..dd267b3 --- /dev/null +++ b/apps/demo/host-network/docker-compose.yml @@ -0,0 +1,15 @@ +services: + 1panel-apps: + image: ${IMAGE} + container_name: ${CONTAINER_NAME} + restart: ${RESTART_POLICY} + network_mode: host + volumes: + - "${DATA_PATH}:${DATA_PATH_INTERNAL}" + environment: + # 环境参数按需修改 (Modify the environment parameters as required) + - TZ=${TIME_ZONE} + # 删除以下行前的#号表示启用 (Delete the # sign in front of the following lines to indicate enablement) + # - ${ENV1}=${ENV1} + labels: + createdBy: "Apps" diff --git a/apps/demo/logo.png b/apps/demo/logo.png new file mode 100644 index 0000000..9cec3e6 Binary files /dev/null and b/apps/demo/logo.png differ diff --git a/apps/dify/1.1.1/conf/certbot/README.md b/apps/dify/1.1.1/conf/certbot/README.md new file mode 100644 index 0000000..21be34b --- /dev/null +++ b/apps/dify/1.1.1/conf/certbot/README.md @@ -0,0 +1,76 @@ +# Launching new servers with SSL certificates + +## Short description + +docker compose certbot configurations with Backward compatibility (without certbot container). +Use `docker compose --profile certbot up` to use this features. + +## The simplest way for launching new servers with SSL certificates + +1. Get letsencrypt certs + set `.env` values + ```properties + NGINX_SSL_CERT_FILENAME=fullchain.pem + NGINX_SSL_CERT_KEY_FILENAME=privkey.pem + NGINX_ENABLE_CERTBOT_CHALLENGE=true + CERTBOT_DOMAIN=your_domain.com + CERTBOT_EMAIL=example@your_domain.com + ``` + execute command: + ```shell + docker network prune + docker compose --profile certbot up --force-recreate -d + ``` + then after the containers launched: + ```shell + docker compose exec -it certbot /bin/sh /update-cert.sh + ``` +2. Edit `.env` file and `docker compose --profile certbot up` again. + set `.env` value additionally + ```properties + NGINX_HTTPS_ENABLED=true + ``` + execute command: + ```shell + docker compose --profile certbot up -d --no-deps --force-recreate nginx + ``` + Then you can access your serve with HTTPS. + [https://your_domain.com](https://your_domain.com) + +## SSL certificates renewal + +For SSL certificates renewal, execute commands below: + +```shell +docker compose exec -it certbot /bin/sh /update-cert.sh +docker compose exec nginx nginx -s reload +``` + +## Options for certbot + +`CERTBOT_OPTIONS` key might be helpful for testing. i.e., + +```properties +CERTBOT_OPTIONS=--dry-run +``` + +To apply changes to `CERTBOT_OPTIONS`, regenerate the certbot container before updating the certificates. + +```shell +docker compose --profile certbot up -d --no-deps --force-recreate certbot +docker compose exec -it certbot /bin/sh /update-cert.sh +``` + +Then, reload the nginx container if necessary. + +```shell +docker compose exec nginx nginx -s reload +``` + +## For legacy servers + +To use cert files dir `nginx/ssl` as before, simply launch containers WITHOUT `--profile certbot` option. + +```shell +docker compose up -d +``` diff --git a/apps/dify/1.1.1/conf/certbot/docker-entrypoint.sh b/apps/dify/1.1.1/conf/certbot/docker-entrypoint.sh new file mode 100644 index 0000000..a70ecd8 --- /dev/null +++ b/apps/dify/1.1.1/conf/certbot/docker-entrypoint.sh @@ -0,0 +1,30 @@ +#!/bin/sh +set -e + +printf '%s\n' "Docker entrypoint script is running" + +printf '%s\n' "\nChecking specific environment variables:" +printf '%s\n' "CERTBOT_EMAIL: ${CERTBOT_EMAIL:-Not set}" +printf '%s\n' "CERTBOT_DOMAIN: ${CERTBOT_DOMAIN:-Not set}" +printf '%s\n' "CERTBOT_OPTIONS: ${CERTBOT_OPTIONS:-Not set}" + +printf '%s\n' "\nChecking mounted directories:" +for dir in "/etc/letsencrypt" "/var/www/html" "/var/log/letsencrypt"; do + if [ -d "$dir" ]; then + printf '%s\n' "$dir exists. Contents:" + ls -la "$dir" + else + printf '%s\n' "$dir does not exist." + fi +done + +printf '%s\n' "\nGenerating update-cert.sh from template" +sed -e "s|\${CERTBOT_EMAIL}|$CERTBOT_EMAIL|g" \ + -e "s|\${CERTBOT_DOMAIN}|$CERTBOT_DOMAIN|g" \ + -e "s|\${CERTBOT_OPTIONS}|$CERTBOT_OPTIONS|g" \ + /update-cert.template.txt > /update-cert.sh + +chmod +x /update-cert.sh + +printf '%s\n' "\nExecuting command:" "$@" +exec "$@" diff --git a/apps/dify/1.1.1/conf/certbot/update-cert.template.txt b/apps/dify/1.1.1/conf/certbot/update-cert.template.txt new file mode 100644 index 0000000..16786a1 --- /dev/null +++ b/apps/dify/1.1.1/conf/certbot/update-cert.template.txt @@ -0,0 +1,19 @@ +#!/bin/bash +set -e + +DOMAIN="${CERTBOT_DOMAIN}" +EMAIL="${CERTBOT_EMAIL}" +OPTIONS="${CERTBOT_OPTIONS}" +CERT_NAME="${DOMAIN}" # 証明書名をドメイン名と同じにする + +# Check if the certificate already exists +if [ -f "/etc/letsencrypt/renewal/${CERT_NAME}.conf" ]; then + echo "Certificate exists. Attempting to renew..." + certbot renew --noninteractive --cert-name ${CERT_NAME} --webroot --webroot-path=/var/www/html --email ${EMAIL} --agree-tos --no-eff-email ${OPTIONS} +else + echo "Certificate does not exist. Obtaining a new certificate..." + certbot certonly --noninteractive --webroot --webroot-path=/var/www/html --email ${EMAIL} --agree-tos --no-eff-email -d ${DOMAIN} ${OPTIONS} +fi +echo "Certificate operation successful" +# Note: Nginx reload should be handled outside this container +echo "Please ensure to reload Nginx to apply any certificate changes." diff --git a/apps/dify/1.1.1/conf/couchbase-server/Dockerfile b/apps/dify/1.1.1/conf/couchbase-server/Dockerfile new file mode 100644 index 0000000..bd8af64 --- /dev/null +++ b/apps/dify/1.1.1/conf/couchbase-server/Dockerfile @@ -0,0 +1,4 @@ +FROM couchbase/server:latest AS stage_base +# FROM couchbase:latest AS stage_base +COPY init-cbserver.sh /opt/couchbase/init/ +RUN chmod +x /opt/couchbase/init/init-cbserver.sh \ No newline at end of file diff --git a/apps/dify/1.1.1/conf/couchbase-server/init-cbserver.sh b/apps/dify/1.1.1/conf/couchbase-server/init-cbserver.sh new file mode 100644 index 0000000..e66bc18 --- /dev/null +++ b/apps/dify/1.1.1/conf/couchbase-server/init-cbserver.sh @@ -0,0 +1,44 @@ +#!/bin/bash +# used to start couchbase server - can't get around this as docker compose only allows you to start one command - so we have to start couchbase like the standard couchbase Dockerfile would +# https://github.com/couchbase/docker/blob/master/enterprise/couchbase-server/7.2.0/Dockerfile#L88 + +/entrypoint.sh couchbase-server & + +# track if setup is complete so we don't try to setup again +FILE=/opt/couchbase/init/setupComplete.txt + +if ! [ -f "$FILE" ]; then + # used to automatically create the cluster based on environment variables + # https://docs.couchbase.com/server/current/cli/cbcli/couchbase-cli-cluster-init.html + + echo $COUCHBASE_ADMINISTRATOR_USERNAME ":" $COUCHBASE_ADMINISTRATOR_PASSWORD + + sleep 20s + /opt/couchbase/bin/couchbase-cli cluster-init -c 127.0.0.1 \ + --cluster-username $COUCHBASE_ADMINISTRATOR_USERNAME \ + --cluster-password $COUCHBASE_ADMINISTRATOR_PASSWORD \ + --services data,index,query,fts \ + --cluster-ramsize $COUCHBASE_RAM_SIZE \ + --cluster-index-ramsize $COUCHBASE_INDEX_RAM_SIZE \ + --cluster-eventing-ramsize $COUCHBASE_EVENTING_RAM_SIZE \ + --cluster-fts-ramsize $COUCHBASE_FTS_RAM_SIZE \ + --index-storage-setting default + + sleep 2s + + # used to auto create the bucket based on environment variables + # https://docs.couchbase.com/server/current/cli/cbcli/couchbase-cli-bucket-create.html + + /opt/couchbase/bin/couchbase-cli bucket-create -c localhost:8091 \ + --username $COUCHBASE_ADMINISTRATOR_USERNAME \ + --password $COUCHBASE_ADMINISTRATOR_PASSWORD \ + --bucket $COUCHBASE_BUCKET \ + --bucket-ramsize $COUCHBASE_BUCKET_RAMSIZE \ + --bucket-type couchbase + + # create file so we know that the cluster is setup and don't run the setup again + touch $FILE +fi + # docker compose will stop the container from running unless we do this + # known issue and workaround + tail -f /dev/null diff --git a/apps/dify/1.1.1/conf/elasticsearch/docker-entrypoint.sh b/apps/dify/1.1.1/conf/elasticsearch/docker-entrypoint.sh new file mode 100644 index 0000000..6669aec --- /dev/null +++ b/apps/dify/1.1.1/conf/elasticsearch/docker-entrypoint.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +set -e + +if [ "${VECTOR_STORE}" = "elasticsearch-ja" ]; then + # Check if the ICU tokenizer plugin is installed + if ! /usr/share/elasticsearch/bin/elasticsearch-plugin list | grep -q analysis-icu; then + printf '%s\n' "Installing the ICU tokenizer plugin" + if ! /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-icu; then + printf '%s\n' "Failed to install the ICU tokenizer plugin" + exit 1 + fi + fi + # Check if the Japanese language analyzer plugin is installed + if ! /usr/share/elasticsearch/bin/elasticsearch-plugin list | grep -q analysis-kuromoji; then + printf '%s\n' "Installing the Japanese language analyzer plugin" + if ! /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-kuromoji; then + printf '%s\n' "Failed to install the Japanese language analyzer plugin" + exit 1 + fi + fi +fi + +# Run the original entrypoint script +exec /bin/tini -- /usr/local/bin/docker-entrypoint.sh diff --git a/apps/dify/1.1.1/conf/nginx/conf.d/default.conf.template b/apps/dify/1.1.1/conf/nginx/conf.d/default.conf.template new file mode 100644 index 0000000..a458412 --- /dev/null +++ b/apps/dify/1.1.1/conf/nginx/conf.d/default.conf.template @@ -0,0 +1,48 @@ +# Please do not directly edit this file. Instead, modify the .env variables related to NGINX configuration. + +server { + listen ${NGINX_PORT}; + server_name ${NGINX_SERVER_NAME}; + + location /console/api { + proxy_pass http://api:5001; + include proxy.conf; + } + + location /api { + proxy_pass http://api:5001; + include proxy.conf; + } + + location /v1 { + proxy_pass http://api:5001; + include proxy.conf; + } + + location /files { + proxy_pass http://api:5001; + include proxy.conf; + } + + location /explore { + proxy_pass http://web:3000; + include proxy.conf; + } + + location /e/ { + proxy_pass http://plugin_daemon:5002; + proxy_set_header Dify-Hook-Url $scheme://$host$request_uri; + include proxy.conf; + } + + location / { + proxy_pass http://web:3000; + include proxy.conf; + } + + # placeholder for acme challenge location + ${ACME_CHALLENGE_LOCATION} + + # placeholder for https config defined in https.conf.template + ${HTTPS_CONFIG} +} diff --git a/apps/dify/1.1.1/conf/nginx/docker-entrypoint.sh b/apps/dify/1.1.1/conf/nginx/docker-entrypoint.sh new file mode 100644 index 0000000..d343cb3 --- /dev/null +++ b/apps/dify/1.1.1/conf/nginx/docker-entrypoint.sh @@ -0,0 +1,39 @@ +#!/bin/bash + +if [ "${NGINX_HTTPS_ENABLED}" = "true" ]; then + # Check if the certificate and key files for the specified domain exist + if [ -n "${CERTBOT_DOMAIN}" ] && \ + [ -f "/etc/letsencrypt/live/${CERTBOT_DOMAIN}/${NGINX_SSL_CERT_FILENAME}" ] && \ + [ -f "/etc/letsencrypt/live/${CERTBOT_DOMAIN}/${NGINX_SSL_CERT_KEY_FILENAME}" ]; then + SSL_CERTIFICATE_PATH="/etc/letsencrypt/live/${CERTBOT_DOMAIN}/${NGINX_SSL_CERT_FILENAME}" + SSL_CERTIFICATE_KEY_PATH="/etc/letsencrypt/live/${CERTBOT_DOMAIN}/${NGINX_SSL_CERT_KEY_FILENAME}" + else + SSL_CERTIFICATE_PATH="/etc/ssl/${NGINX_SSL_CERT_FILENAME}" + SSL_CERTIFICATE_KEY_PATH="/etc/ssl/${NGINX_SSL_CERT_KEY_FILENAME}" + fi + export SSL_CERTIFICATE_PATH + export SSL_CERTIFICATE_KEY_PATH + + # set the HTTPS_CONFIG environment variable to the content of the https.conf.template + HTTPS_CONFIG=$(envsubst < /etc/nginx/https.conf.template) + export HTTPS_CONFIG + # Substitute the HTTPS_CONFIG in the default.conf.template with content from https.conf.template + envsubst '${HTTPS_CONFIG}' < /etc/nginx/conf.d/default.conf.template > /etc/nginx/conf.d/default.conf +fi + +if [ "${NGINX_ENABLE_CERTBOT_CHALLENGE}" = "true" ]; then + ACME_CHALLENGE_LOCATION='location /.well-known/acme-challenge/ { root /var/www/html; }' +else + ACME_CHALLENGE_LOCATION='' +fi +export ACME_CHALLENGE_LOCATION + +env_vars=$(printenv | cut -d= -f1 | sed 's/^/$/g' | paste -sd, -) + +envsubst "$env_vars" < /etc/nginx/nginx.conf.template > /etc/nginx/nginx.conf +envsubst "$env_vars" < /etc/nginx/proxy.conf.template > /etc/nginx/proxy.conf + +envsubst < /etc/nginx/conf.d/default.conf.template > /etc/nginx/conf.d/default.conf + +# Start Nginx using the default entrypoint +exec nginx -g 'daemon off;' \ No newline at end of file diff --git a/apps/dify/1.1.1/conf/nginx/https.conf.template b/apps/dify/1.1.1/conf/nginx/https.conf.template new file mode 100644 index 0000000..95ea36f --- /dev/null +++ b/apps/dify/1.1.1/conf/nginx/https.conf.template @@ -0,0 +1,9 @@ +# Please do not directly edit this file. Instead, modify the .env variables related to NGINX configuration. + +listen ${NGINX_SSL_PORT} ssl; +ssl_certificate ${SSL_CERTIFICATE_PATH}; +ssl_certificate_key ${SSL_CERTIFICATE_KEY_PATH}; +ssl_protocols ${NGINX_SSL_PROTOCOLS}; +ssl_prefer_server_ciphers on; +ssl_session_cache shared:SSL:10m; +ssl_session_timeout 10m; \ No newline at end of file diff --git a/apps/dify/1.1.1/conf/nginx/nginx.conf.template b/apps/dify/1.1.1/conf/nginx/nginx.conf.template new file mode 100644 index 0000000..32a5716 --- /dev/null +++ b/apps/dify/1.1.1/conf/nginx/nginx.conf.template @@ -0,0 +1,34 @@ +# Please do not directly edit this file. Instead, modify the .env variables related to NGINX configuration. + +user nginx; +worker_processes ${NGINX_WORKER_PROCESSES}; + +error_log /var/log/nginx/error.log notice; +pid /var/run/nginx.pid; + + +events { + worker_connections 1024; +} + + +http { + include /etc/nginx/mime.types; + default_type application/octet-stream; + + log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for"'; + + access_log /var/log/nginx/access.log main; + + sendfile on; + #tcp_nopush on; + + keepalive_timeout ${NGINX_KEEPALIVE_TIMEOUT}; + + #gzip on; + client_max_body_size ${NGINX_CLIENT_MAX_BODY_SIZE}; + + include /etc/nginx/conf.d/*.conf; +} \ No newline at end of file diff --git a/apps/dify/1.1.1/conf/nginx/proxy.conf.template b/apps/dify/1.1.1/conf/nginx/proxy.conf.template new file mode 100644 index 0000000..117f806 --- /dev/null +++ b/apps/dify/1.1.1/conf/nginx/proxy.conf.template @@ -0,0 +1,11 @@ +# Please do not directly edit this file. Instead, modify the .env variables related to NGINX configuration. + +proxy_set_header Host $host; +proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; +proxy_set_header X-Forwarded-Proto $scheme; +proxy_set_header X-Forwarded-Port $server_port; +proxy_http_version 1.1; +proxy_set_header Connection ""; +proxy_buffering off; +proxy_read_timeout ${NGINX_PROXY_READ_TIMEOUT}; +proxy_send_timeout ${NGINX_PROXY_SEND_TIMEOUT}; diff --git a/apps/dify/1.1.1/conf/nginx/ssl/.gitkeep b/apps/dify/1.1.1/conf/nginx/ssl/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/apps/dify/1.1.1/conf/ssrf_proxy/docker-entrypoint.sh b/apps/dify/1.1.1/conf/ssrf_proxy/docker-entrypoint.sh new file mode 100644 index 0000000..613897b --- /dev/null +++ b/apps/dify/1.1.1/conf/ssrf_proxy/docker-entrypoint.sh @@ -0,0 +1,42 @@ +#!/bin/bash + +# Modified based on Squid OCI image entrypoint + +# This entrypoint aims to forward the squid logs to stdout to assist users of +# common container related tooling (e.g., kubernetes, docker-compose, etc) to +# access the service logs. + +# Moreover, it invokes the squid binary, leaving all the desired parameters to +# be provided by the "command" passed to the spawned container. If no command +# is provided by the user, the default behavior (as per the CMD statement in +# the Dockerfile) will be to use Ubuntu's default configuration [1] and run +# squid with the "-NYC" options to mimic the behavior of the Ubuntu provided +# systemd unit. + +# [1] The default configuration is changed in the Dockerfile to allow local +# network connections. See the Dockerfile for further information. + +echo "[ENTRYPOINT] re-create snakeoil self-signed certificate removed in the build process" +if [ ! -f /etc/ssl/private/ssl-cert-snakeoil.key ]; then + /usr/sbin/make-ssl-cert generate-default-snakeoil --force-overwrite > /dev/null 2>&1 +fi + +tail -F /var/log/squid/access.log 2>/dev/null & +tail -F /var/log/squid/error.log 2>/dev/null & +tail -F /var/log/squid/store.log 2>/dev/null & +tail -F /var/log/squid/cache.log 2>/dev/null & + +# Replace environment variables in the template and output to the squid.conf +echo "[ENTRYPOINT] replacing environment variables in the template" +awk '{ + while(match($0, /\${[A-Za-z_][A-Za-z_0-9]*}/)) { + var = substr($0, RSTART+2, RLENGTH-3) + val = ENVIRON[var] + $0 = substr($0, 1, RSTART-1) val substr($0, RSTART+RLENGTH) + } + print +}' /etc/squid/squid.conf.template > /etc/squid/squid.conf + +/usr/sbin/squid -Nz +echo "[ENTRYPOINT] starting squid" +/usr/sbin/squid -f /etc/squid/squid.conf -NYC 1 diff --git a/apps/dify/1.1.1/conf/ssrf_proxy/squid.conf.template b/apps/dify/1.1.1/conf/ssrf_proxy/squid.conf.template new file mode 100644 index 0000000..676fe73 --- /dev/null +++ b/apps/dify/1.1.1/conf/ssrf_proxy/squid.conf.template @@ -0,0 +1,51 @@ +acl localnet src 0.0.0.1-0.255.255.255 # RFC 1122 "this" network (LAN) +acl localnet src 10.0.0.0/8 # RFC 1918 local private network (LAN) +acl localnet src 100.64.0.0/10 # RFC 6598 shared address space (CGN) +acl localnet src 169.254.0.0/16 # RFC 3927 link-local (directly plugged) machines +acl localnet src 172.16.0.0/12 # RFC 1918 local private network (LAN) +acl localnet src 192.168.0.0/16 # RFC 1918 local private network (LAN) +acl localnet src fc00::/7 # RFC 4193 local private network range +acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machines +acl SSL_ports port 443 +# acl SSL_ports port 1025-65535 # Enable the configuration to resolve this issue: https://github.com/langgenius/dify/issues/12792 +acl Safe_ports port 80 # http +acl Safe_ports port 21 # ftp +acl Safe_ports port 443 # https +acl Safe_ports port 70 # gopher +acl Safe_ports port 210 # wais +acl Safe_ports port 1025-65535 # unregistered ports +acl Safe_ports port 280 # http-mgmt +acl Safe_ports port 488 # gss-http +acl Safe_ports port 591 # filemaker +acl Safe_ports port 777 # multiling http +acl CONNECT method CONNECT +http_access deny !Safe_ports +http_access deny CONNECT !SSL_ports +http_access allow localhost manager +http_access deny manager +http_access allow localhost +include /etc/squid/conf.d/*.conf +http_access deny all + +################################## Proxy Server ################################ +http_port ${HTTP_PORT} +coredump_dir ${COREDUMP_DIR} +refresh_pattern ^ftp: 1440 20% 10080 +refresh_pattern ^gopher: 1440 0% 1440 +refresh_pattern -i (/cgi-bin/|\?) 0 0% 0 +refresh_pattern \/(Packages|Sources)(|\.bz2|\.gz|\.xz)$ 0 0% 0 refresh-ims +refresh_pattern \/Release(|\.gpg)$ 0 0% 0 refresh-ims +refresh_pattern \/InRelease$ 0 0% 0 refresh-ims +refresh_pattern \/(Translation-.*)(|\.bz2|\.gz|\.xz)$ 0 0% 0 refresh-ims +refresh_pattern . 0 20% 4320 + + +# cache_dir ufs /var/spool/squid 100 16 256 +# upstream proxy, set to your own upstream proxy IP to avoid SSRF attacks +# cache_peer 172.1.1.1 parent 3128 0 no-query no-digest no-netdb-exchange default + +################################## Reverse Proxy To Sandbox ################################ +http_port ${REVERSE_PROXY_PORT} accel vhost +cache_peer ${SANDBOX_HOST} parent ${SANDBOX_PORT} 0 no-query originserver +acl src_all src all +http_access allow src_all diff --git a/apps/dify/1.1.1/conf/startupscripts/init.sh b/apps/dify/1.1.1/conf/startupscripts/init.sh new file mode 100644 index 0000000..c6e6e19 --- /dev/null +++ b/apps/dify/1.1.1/conf/startupscripts/init.sh @@ -0,0 +1,13 @@ +#!/usr/bin/env bash + +DB_INITIALIZED="/opt/oracle/oradata/dbinit" +#[ -f ${DB_INITIALIZED} ] && exit +#touch ${DB_INITIALIZED} +if [ -f ${DB_INITIALIZED} ]; then + echo 'File exists. Standards for have been Init' + exit +else + echo 'File does not exist. Standards for first time Start up this DB' + "$ORACLE_HOME"/bin/sqlplus -s "/ as sysdba" @"/opt/oracle/scripts/startup/init_user.script"; + touch ${DB_INITIALIZED} +fi diff --git a/apps/dify/1.1.1/conf/startupscripts/init_user.script b/apps/dify/1.1.1/conf/startupscripts/init_user.script new file mode 100644 index 0000000..7aa7c28 --- /dev/null +++ b/apps/dify/1.1.1/conf/startupscripts/init_user.script @@ -0,0 +1,10 @@ +show pdbs; +ALTER SYSTEM SET PROCESSES=500 SCOPE=SPFILE; +alter session set container= freepdb1; +create user dify identified by dify DEFAULT TABLESPACE users quota unlimited on users; +grant DB_DEVELOPER_ROLE to dify; + +BEGIN +CTX_DDL.CREATE_PREFERENCE('my_chinese_vgram_lexer','CHINESE_VGRAM_LEXER'); +END; +/ diff --git a/apps/dify/1.1.1/conf/tidb/config/pd.toml b/apps/dify/1.1.1/conf/tidb/config/pd.toml new file mode 100644 index 0000000..042b251 --- /dev/null +++ b/apps/dify/1.1.1/conf/tidb/config/pd.toml @@ -0,0 +1,4 @@ +# PD Configuration File reference: +# https://docs.pingcap.com/tidb/stable/pd-configuration-file#pd-configuration-file +[replication] +max-replicas = 1 \ No newline at end of file diff --git a/apps/dify/1.1.1/conf/tidb/config/tiflash-learner.toml b/apps/dify/1.1.1/conf/tidb/config/tiflash-learner.toml new file mode 100644 index 0000000..5098829 --- /dev/null +++ b/apps/dify/1.1.1/conf/tidb/config/tiflash-learner.toml @@ -0,0 +1,13 @@ +# TiFlash tiflash-learner.toml Configuration File reference: +# https://docs.pingcap.com/tidb/stable/tiflash-configuration#configure-the-tiflash-learnertoml-file + +log-file = "/logs/tiflash_tikv.log" + +[server] +engine-addr = "tiflash:4030" +addr = "0.0.0.0:20280" +advertise-addr = "tiflash:20280" +status-addr = "tiflash:20292" + +[storage] +data-dir = "/data/flash" diff --git a/apps/dify/1.1.1/conf/tidb/config/tiflash.toml b/apps/dify/1.1.1/conf/tidb/config/tiflash.toml new file mode 100644 index 0000000..30ac13e --- /dev/null +++ b/apps/dify/1.1.1/conf/tidb/config/tiflash.toml @@ -0,0 +1,19 @@ +# TiFlash tiflash.toml Configuration File reference: +# https://docs.pingcap.com/tidb/stable/tiflash-configuration#configure-the-tiflashtoml-file + +listen_host = "0.0.0.0" +path = "/data" + +[flash] +tidb_status_addr = "tidb:10080" +service_addr = "tiflash:4030" + +[flash.proxy] +config = "/tiflash-learner.toml" + +[logger] +errorlog = "/logs/tiflash_error.log" +log = "/logs/tiflash.log" + +[raft] +pd_addr = "pd0:2379" diff --git a/apps/dify/1.1.1/conf/tidb/docker-compose.yaml b/apps/dify/1.1.1/conf/tidb/docker-compose.yaml new file mode 100644 index 0000000..fa15770 --- /dev/null +++ b/apps/dify/1.1.1/conf/tidb/docker-compose.yaml @@ -0,0 +1,62 @@ +services: + pd0: + image: pingcap/pd:v8.5.1 + # ports: + # - "2379" + volumes: + - ./config/pd.toml:/pd.toml:ro + - ./volumes/data:/data + - ./volumes/logs:/logs + command: + - --name=pd0 + - --client-urls=http://0.0.0.0:2379 + - --peer-urls=http://0.0.0.0:2380 + - --advertise-client-urls=http://pd0:2379 + - --advertise-peer-urls=http://pd0:2380 + - --initial-cluster=pd0=http://pd0:2380 + - --data-dir=/data/pd + - --config=/pd.toml + - --log-file=/logs/pd.log + restart: on-failure + tikv: + image: pingcap/tikv:v8.5.1 + volumes: + - ./volumes/data:/data + - ./volumes/logs:/logs + command: + - --addr=0.0.0.0:20160 + - --advertise-addr=tikv:20160 + - --status-addr=tikv:20180 + - --data-dir=/data/tikv + - --pd=pd0:2379 + - --log-file=/logs/tikv.log + depends_on: + - "pd0" + restart: on-failure + tidb: + image: pingcap/tidb:v8.5.1 + # ports: + # - "4000:4000" + volumes: + - ./volumes/logs:/logs + command: + - --advertise-address=tidb + - --store=tikv + - --path=pd0:2379 + - --log-file=/logs/tidb.log + depends_on: + - "tikv" + restart: on-failure + tiflash: + image: pingcap/tiflash:v8.5.1 + volumes: + - ./config/tiflash.toml:/tiflash.toml:ro + - ./config/tiflash-learner.toml:/tiflash-learner.toml:ro + - ./volumes/data:/data + - ./volumes/logs:/logs + command: + - --config=/tiflash.toml + depends_on: + - "tikv" + - "tidb" + restart: on-failure diff --git a/apps/dify/1.1.1/conf/volumes/myscale/config/users.d/custom_users_config.xml b/apps/dify/1.1.1/conf/volumes/myscale/config/users.d/custom_users_config.xml new file mode 100644 index 0000000..67f24b6 --- /dev/null +++ b/apps/dify/1.1.1/conf/volumes/myscale/config/users.d/custom_users_config.xml @@ -0,0 +1,17 @@ + + + + + + ::1 + 127.0.0.1 + 10.0.0.0/8 + 172.16.0.0/12 + 192.168.0.0/16 + + default + default + 1 + + + \ No newline at end of file diff --git a/apps/dify/1.1.1/conf/volumes/oceanbase/init.d/vec_memory.sql b/apps/dify/1.1.1/conf/volumes/oceanbase/init.d/vec_memory.sql new file mode 100644 index 0000000..f4c283f --- /dev/null +++ b/apps/dify/1.1.1/conf/volumes/oceanbase/init.d/vec_memory.sql @@ -0,0 +1 @@ +ALTER SYSTEM SET ob_vector_memory_limit_percentage = 30; \ No newline at end of file diff --git a/apps/dify/1.1.1/conf/volumes/opensearch/opensearch_dashboards.yml b/apps/dify/1.1.1/conf/volumes/opensearch/opensearch_dashboards.yml new file mode 100644 index 0000000..f50d63b --- /dev/null +++ b/apps/dify/1.1.1/conf/volumes/opensearch/opensearch_dashboards.yml @@ -0,0 +1,222 @@ +--- +# Copyright OpenSearch Contributors +# SPDX-License-Identifier: Apache-2.0 + +# Description: +# Default configuration for OpenSearch Dashboards + +# OpenSearch Dashboards is served by a back end server. This setting specifies the port to use. +# server.port: 5601 + +# Specifies the address to which the OpenSearch Dashboards server will bind. IP addresses and host names are both valid values. +# The default is 'localhost', which usually means remote machines will not be able to connect. +# To allow connections from remote users, set this parameter to a non-loopback address. +# server.host: "localhost" + +# Enables you to specify a path to mount OpenSearch Dashboards at if you are running behind a proxy. +# Use the `server.rewriteBasePath` setting to tell OpenSearch Dashboards if it should remove the basePath +# from requests it receives, and to prevent a deprecation warning at startup. +# This setting cannot end in a slash. +# server.basePath: "" + +# Specifies whether OpenSearch Dashboards should rewrite requests that are prefixed with +# `server.basePath` or require that they are rewritten by your reverse proxy. +# server.rewriteBasePath: false + +# The maximum payload size in bytes for incoming server requests. +# server.maxPayloadBytes: 1048576 + +# The OpenSearch Dashboards server's name. This is used for display purposes. +# server.name: "your-hostname" + +# The URLs of the OpenSearch instances to use for all your queries. +# opensearch.hosts: ["http://localhost:9200"] + +# OpenSearch Dashboards uses an index in OpenSearch to store saved searches, visualizations and +# dashboards. OpenSearch Dashboards creates a new index if the index doesn't already exist. +# opensearchDashboards.index: ".opensearch_dashboards" + +# The default application to load. +# opensearchDashboards.defaultAppId: "home" + +# Setting for an optimized healthcheck that only uses the local OpenSearch node to do Dashboards healthcheck. +# This settings should be used for large clusters or for clusters with ingest heavy nodes. +# It allows Dashboards to only healthcheck using the local OpenSearch node rather than fan out requests across all nodes. +# +# It requires the user to create an OpenSearch node attribute with the same name as the value used in the setting +# This node attribute should assign all nodes of the same cluster an integer value that increments with each new cluster that is spun up +# e.g. in opensearch.yml file you would set the value to a setting using node.attr.cluster_id: +# Should only be enabled if there is a corresponding node attribute created in your OpenSearch config that matches the value here +# opensearch.optimizedHealthcheckId: "cluster_id" + +# If your OpenSearch is protected with basic authentication, these settings provide +# the username and password that the OpenSearch Dashboards server uses to perform maintenance on the OpenSearch Dashboards +# index at startup. Your OpenSearch Dashboards users still need to authenticate with OpenSearch, which +# is proxied through the OpenSearch Dashboards server. +# opensearch.username: "opensearch_dashboards_system" +# opensearch.password: "pass" + +# Enables SSL and paths to the PEM-format SSL certificate and SSL key files, respectively. +# These settings enable SSL for outgoing requests from the OpenSearch Dashboards server to the browser. +# server.ssl.enabled: false +# server.ssl.certificate: /path/to/your/server.crt +# server.ssl.key: /path/to/your/server.key + +# Optional settings that provide the paths to the PEM-format SSL certificate and key files. +# These files are used to verify the identity of OpenSearch Dashboards to OpenSearch and are required when +# xpack.security.http.ssl.client_authentication in OpenSearch is set to required. +# opensearch.ssl.certificate: /path/to/your/client.crt +# opensearch.ssl.key: /path/to/your/client.key + +# Optional setting that enables you to specify a path to the PEM file for the certificate +# authority for your OpenSearch instance. +# opensearch.ssl.certificateAuthorities: [ "/path/to/your/CA.pem" ] + +# To disregard the validity of SSL certificates, change this setting's value to 'none'. +# opensearch.ssl.verificationMode: full + +# Time in milliseconds to wait for OpenSearch to respond to pings. Defaults to the value of +# the opensearch.requestTimeout setting. +# opensearch.pingTimeout: 1500 + +# Time in milliseconds to wait for responses from the back end or OpenSearch. This value +# must be a positive integer. +# opensearch.requestTimeout: 30000 + +# List of OpenSearch Dashboards client-side headers to send to OpenSearch. To send *no* client-side +# headers, set this value to [] (an empty list). +# opensearch.requestHeadersWhitelist: [ authorization ] + +# Header names and values that are sent to OpenSearch. Any custom headers cannot be overwritten +# by client-side headers, regardless of the opensearch.requestHeadersWhitelist configuration. +# opensearch.customHeaders: {} + +# Time in milliseconds for OpenSearch to wait for responses from shards. Set to 0 to disable. +# opensearch.shardTimeout: 30000 + +# Logs queries sent to OpenSearch. Requires logging.verbose set to true. +# opensearch.logQueries: false + +# Specifies the path where OpenSearch Dashboards creates the process ID file. +# pid.file: /var/run/opensearchDashboards.pid + +# Enables you to specify a file where OpenSearch Dashboards stores log output. +# logging.dest: stdout + +# Set the value of this setting to true to suppress all logging output. +# logging.silent: false + +# Set the value of this setting to true to suppress all logging output other than error messages. +# logging.quiet: false + +# Set the value of this setting to true to log all events, including system usage information +# and all requests. +# logging.verbose: false + +# Set the interval in milliseconds to sample system and process performance +# metrics. Minimum is 100ms. Defaults to 5000. +# ops.interval: 5000 + +# Specifies locale to be used for all localizable strings, dates and number formats. +# Supported languages are the following: English - en , by default , Chinese - zh-CN . +# i18n.locale: "en" + +# Set the allowlist to check input graphite Url. Allowlist is the default check list. +# vis_type_timeline.graphiteAllowedUrls: ['https://www.hostedgraphite.com/UID/ACCESS_KEY/graphite'] + +# Set the blocklist to check input graphite Url. Blocklist is an IP list. +# Below is an example for reference +# vis_type_timeline.graphiteBlockedIPs: [ +# //Loopback +# '127.0.0.0/8', +# '::1/128', +# //Link-local Address for IPv6 +# 'fe80::/10', +# //Private IP address for IPv4 +# '10.0.0.0/8', +# '172.16.0.0/12', +# '192.168.0.0/16', +# //Unique local address (ULA) +# 'fc00::/7', +# //Reserved IP address +# '0.0.0.0/8', +# '100.64.0.0/10', +# '192.0.0.0/24', +# '192.0.2.0/24', +# '198.18.0.0/15', +# '192.88.99.0/24', +# '198.51.100.0/24', +# '203.0.113.0/24', +# '224.0.0.0/4', +# '240.0.0.0/4', +# '255.255.255.255/32', +# '::/128', +# '2001:db8::/32', +# 'ff00::/8', +# ] +# vis_type_timeline.graphiteBlockedIPs: [] + +# opensearchDashboards.branding: +# logo: +# defaultUrl: "" +# darkModeUrl: "" +# mark: +# defaultUrl: "" +# darkModeUrl: "" +# loadingLogo: +# defaultUrl: "" +# darkModeUrl: "" +# faviconUrl: "" +# applicationTitle: "" + +# Set the value of this setting to true to capture region blocked warnings and errors +# for your map rendering services. +# map.showRegionBlockedWarning: false% + +# Set the value of this setting to false to suppress search usage telemetry +# for reducing the load of OpenSearch cluster. +# data.search.usageTelemetry.enabled: false + +# 2.4 renames 'wizard.enabled: false' to 'vis_builder.enabled: false' +# Set the value of this setting to false to disable VisBuilder +# functionality in Visualization. +# vis_builder.enabled: false + +# 2.4 New Experimental Feature +# Set the value of this setting to true to enable the experimental multiple data source +# support feature. Use with caution. +# data_source.enabled: false +# Set the value of these settings to customize crypto materials to encryption saved credentials +# in data sources. +# data_source.encryption.wrappingKeyName: 'changeme' +# data_source.encryption.wrappingKeyNamespace: 'changeme' +# data_source.encryption.wrappingKey: [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] + +# 2.6 New ML Commons Dashboards Feature +# Set the value of this setting to true to enable the ml commons dashboards +# ml_commons_dashboards.enabled: false + +# 2.12 New experimental Assistant Dashboards Feature +# Set the value of this setting to true to enable the assistant dashboards +# assistant.chat.enabled: false + +# 2.13 New Query Assistant Feature +# Set the value of this setting to false to disable the query assistant +# observability.query_assist.enabled: false + +# 2.14 Enable Ui Metric Collectors in Usage Collector +# Set the value of this setting to true to enable UI Metric collections +# usageCollection.uiMetric.enabled: false + +opensearch.hosts: [https://localhost:9200] +opensearch.ssl.verificationMode: none +opensearch.username: admin +opensearch.password: 'Qazwsxedc!@#123' +opensearch.requestHeadersWhitelist: [authorization, securitytenant] + +opensearch_security.multitenancy.enabled: true +opensearch_security.multitenancy.tenants.preferred: [Private, Global] +opensearch_security.readonly_mode.roles: [kibana_read_only] +# Use this setting if you are running opensearch-dashboards without https +opensearch_security.cookie.secure: false +server.host: '0.0.0.0' diff --git a/apps/dify/1.1.1/conf/volumes/sandbox/conf/config.yaml b/apps/dify/1.1.1/conf/volumes/sandbox/conf/config.yaml new file mode 100644 index 0000000..8c1a1de --- /dev/null +++ b/apps/dify/1.1.1/conf/volumes/sandbox/conf/config.yaml @@ -0,0 +1,14 @@ +app: + port: 8194 + debug: True + key: dify-sandbox +max_workers: 4 +max_requests: 50 +worker_timeout: 5 +python_path: /usr/local/bin/python3 +enable_network: True # please make sure there is no network risk in your environment +allowed_syscalls: # please leave it empty if you have no idea how seccomp works +proxy: + socks5: '' + http: '' + https: '' diff --git a/apps/dify/1.1.1/conf/volumes/sandbox/conf/config.yaml.example b/apps/dify/1.1.1/conf/volumes/sandbox/conf/config.yaml.example new file mode 100644 index 0000000..f92c19e --- /dev/null +++ b/apps/dify/1.1.1/conf/volumes/sandbox/conf/config.yaml.example @@ -0,0 +1,35 @@ +app: + port: 8194 + debug: True + key: dify-sandbox +max_workers: 4 +max_requests: 50 +worker_timeout: 5 +python_path: /usr/local/bin/python3 +python_lib_path: + - /usr/local/lib/python3.10 + - /usr/lib/python3.10 + - /usr/lib/python3 + - /usr/lib/x86_64-linux-gnu + - /etc/ssl/certs/ca-certificates.crt + - /etc/nsswitch.conf + - /etc/hosts + - /etc/resolv.conf + - /run/systemd/resolve/stub-resolv.conf + - /run/resolvconf/resolv.conf + - /etc/localtime + - /usr/share/zoneinfo + - /etc/timezone + # add more paths if needed +python_pip_mirror_url: https://pypi.tuna.tsinghua.edu.cn/simple +nodejs_path: /usr/local/bin/node +enable_network: True +allowed_syscalls: + - 1 + - 2 + - 3 + # add all the syscalls which you require +proxy: + socks5: '' + http: '' + https: '' diff --git a/apps/dify/1.1.1/conf/volumes/sandbox/dependencies/python-requirements.txt b/apps/dify/1.1.1/conf/volumes/sandbox/dependencies/python-requirements.txt new file mode 100644 index 0000000..e69de29 diff --git a/apps/dify/1.1.1/data.yml b/apps/dify/1.1.1/data.yml new file mode 100644 index 0000000..76d89aa --- /dev/null +++ b/apps/dify/1.1.1/data.yml @@ -0,0 +1,82 @@ +additionalProperties: + formFields: + - default: "/home/dify" + edit: true + envKey: DIFY_ROOT_PATH + labelZh: 数据持久化路径 + labelEn: Data persistence path + required: true + type: text + - default: 8080 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelZh: 网站端口 + labelEn: WebUI port + required: true + rule: paramPort + type: number + - default: 8443 + edit: true + envKey: PANEL_APP_PORT_HTTPS + labelZh: HTTPS 端口 + labelEn: HTTPS port + required: true + rule: paramPort + type: number + - default: 5432 + edit: true + envKey: EXPOSE_DB_PORT + labelZh: 数据库端口 + labelEn: Database port + required: true + rule: paramPort + type: number + - default: 5003 + edit: true + envKey: EXPOSE_PLUGIN_DEBUGGING_PORT + labelZh: 插件调试端口 + labelEn: Plugin debugging port + required: true + rule: paramPort + type: number + - default: 19530 + disabled: true + edit: true + envKey: MILVUS_STANDALONE_API_PORT + labelZh: Milvus 接口端口 + labelEn: Milvus API port + required: true + rule: paramPort + type: number + - default: 9091 + disabled: true + envKey: MILVUS_STANDALONE_SERVER_PORT + labelZh: Milvus 服务端口 + labelEn: Milvus server port + required: true + rule: paramPort + type: number + - default: 8123 + edit: true + envKey: MYSCALE_PORT + labelZh: MyScale 端口 + labelEn: MyScale port + required: true + rule: paramPort + type: number + - default: 9200 + edit: true + envKey: ELASTICSEARCH_PORT + labelZh: Elasticsearch 端口 + labelEn: Elasticsearch port + required: true + rule: paramPort + type: number + - default: 5601 + edit: true + envKey: KIBANA_PORT + labelZh: Kibana 端口 + labelEn: Kibana port + required: true + rule: paramPort + type: number diff --git a/apps/dify/1.1.1/docker-compose.yml b/apps/dify/1.1.1/docker-compose.yml new file mode 100644 index 0000000..459c6a9 --- /dev/null +++ b/apps/dify/1.1.1/docker-compose.yml @@ -0,0 +1,970 @@ +# ================================================================== +# WARNING: This file is auto-generated by generate_docker_compose +# Do not modify this file directly. Instead, update the .env.example +# or docker-compose-template.yaml and regenerate this file. +# ================================================================== + +x-shared-env: &shared-api-worker-env + CONSOLE_API_URL: ${CONSOLE_API_URL:-} + CONSOLE_WEB_URL: ${CONSOLE_WEB_URL:-} + SERVICE_API_URL: ${SERVICE_API_URL:-} + APP_API_URL: ${APP_API_URL:-} + APP_WEB_URL: ${APP_WEB_URL:-} + FILES_URL: ${FILES_URL:-} + LOG_LEVEL: ${LOG_LEVEL:-INFO} + LOG_FILE: ${LOG_FILE:-/app/logs/server.log} + LOG_FILE_MAX_SIZE: ${LOG_FILE_MAX_SIZE:-20} + LOG_FILE_BACKUP_COUNT: ${LOG_FILE_BACKUP_COUNT:-5} + LOG_DATEFORMAT: ${LOG_DATEFORMAT:-%Y-%m-%d %H:%M:%S} + LOG_TZ: ${LOG_TZ:-UTC} + DEBUG: ${DEBUG:-false} + FLASK_DEBUG: ${FLASK_DEBUG:-false} + SECRET_KEY: ${SECRET_KEY:-sk-9f73s3ljTXVcMT3Blb3ljTqtsKiGHXVcMT3BlbkFJLK7U} + INIT_PASSWORD: ${INIT_PASSWORD:-} + DEPLOY_ENV: ${DEPLOY_ENV:-PRODUCTION} + CHECK_UPDATE_URL: ${CHECK_UPDATE_URL:-https://updates.dify.ai} + OPENAI_API_BASE: ${OPENAI_API_BASE:-https://api.openai.com/v1} + MIGRATION_ENABLED: ${MIGRATION_ENABLED:-true} + FILES_ACCESS_TIMEOUT: ${FILES_ACCESS_TIMEOUT:-300} + ACCESS_TOKEN_EXPIRE_MINUTES: ${ACCESS_TOKEN_EXPIRE_MINUTES:-60} + REFRESH_TOKEN_EXPIRE_DAYS: ${REFRESH_TOKEN_EXPIRE_DAYS:-30} + APP_MAX_ACTIVE_REQUESTS: ${APP_MAX_ACTIVE_REQUESTS:-0} + APP_MAX_EXECUTION_TIME: ${APP_MAX_EXECUTION_TIME:-1200} + DIFY_BIND_ADDRESS: ${DIFY_BIND_ADDRESS:-0.0.0.0} + DIFY_PORT: ${DIFY_PORT:-5001} + SERVER_WORKER_AMOUNT: ${SERVER_WORKER_AMOUNT:-1} + SERVER_WORKER_CLASS: ${SERVER_WORKER_CLASS:-gevent} + SERVER_WORKER_CONNECTIONS: ${SERVER_WORKER_CONNECTIONS:-10} + CELERY_WORKER_CLASS: ${CELERY_WORKER_CLASS:-} + GUNICORN_TIMEOUT: ${GUNICORN_TIMEOUT:-360} + CELERY_WORKER_AMOUNT: ${CELERY_WORKER_AMOUNT:-} + CELERY_AUTO_SCALE: ${CELERY_AUTO_SCALE:-false} + CELERY_MAX_WORKERS: ${CELERY_MAX_WORKERS:-} + CELERY_MIN_WORKERS: ${CELERY_MIN_WORKERS:-} + API_TOOL_DEFAULT_CONNECT_TIMEOUT: ${API_TOOL_DEFAULT_CONNECT_TIMEOUT:-10} + API_TOOL_DEFAULT_READ_TIMEOUT: ${API_TOOL_DEFAULT_READ_TIMEOUT:-60} + DB_USERNAME: ${DB_USERNAME:-postgres} + DB_PASSWORD: ${DB_PASSWORD:-difyai123456} + DB_HOST: ${DB_HOST:-db} + DB_PORT: ${DB_PORT:-5432} + DB_DATABASE: ${DB_DATABASE:-dify} + SQLALCHEMY_POOL_SIZE: ${SQLALCHEMY_POOL_SIZE:-30} + SQLALCHEMY_POOL_RECYCLE: ${SQLALCHEMY_POOL_RECYCLE:-3600} + SQLALCHEMY_ECHO: ${SQLALCHEMY_ECHO:-false} + POSTGRES_MAX_CONNECTIONS: ${POSTGRES_MAX_CONNECTIONS:-100} + POSTGRES_SHARED_BUFFERS: ${POSTGRES_SHARED_BUFFERS:-128MB} + POSTGRES_WORK_MEM: ${POSTGRES_WORK_MEM:-4MB} + POSTGRES_MAINTENANCE_WORK_MEM: ${POSTGRES_MAINTENANCE_WORK_MEM:-64MB} + POSTGRES_EFFECTIVE_CACHE_SIZE: ${POSTGRES_EFFECTIVE_CACHE_SIZE:-4096MB} + REDIS_HOST: ${REDIS_HOST:-redis} + REDIS_PORT: ${REDIS_PORT:-6379} + REDIS_USERNAME: ${REDIS_USERNAME:-} + REDIS_PASSWORD: ${REDIS_PASSWORD:-difyai123456} + REDIS_USE_SSL: ${REDIS_USE_SSL:-false} + REDIS_DB: ${REDIS_DB:-0} + REDIS_USE_SENTINEL: ${REDIS_USE_SENTINEL:-false} + REDIS_SENTINELS: ${REDIS_SENTINELS:-} + REDIS_SENTINEL_SERVICE_NAME: ${REDIS_SENTINEL_SERVICE_NAME:-} + REDIS_SENTINEL_USERNAME: ${REDIS_SENTINEL_USERNAME:-} + REDIS_SENTINEL_PASSWORD: ${REDIS_SENTINEL_PASSWORD:-} + REDIS_SENTINEL_SOCKET_TIMEOUT: ${REDIS_SENTINEL_SOCKET_TIMEOUT:-0.1} + REDIS_USE_CLUSTERS: ${REDIS_USE_CLUSTERS:-false} + REDIS_CLUSTERS: ${REDIS_CLUSTERS:-} + REDIS_CLUSTERS_PASSWORD: ${REDIS_CLUSTERS_PASSWORD:-} + CELERY_BROKER_URL: ${CELERY_BROKER_URL:-redis://:difyai123456@redis:6379/1} + BROKER_USE_SSL: ${BROKER_USE_SSL:-false} + CELERY_USE_SENTINEL: ${CELERY_USE_SENTINEL:-false} + CELERY_SENTINEL_MASTER_NAME: ${CELERY_SENTINEL_MASTER_NAME:-} + CELERY_SENTINEL_SOCKET_TIMEOUT: ${CELERY_SENTINEL_SOCKET_TIMEOUT:-0.1} + WEB_API_CORS_ALLOW_ORIGINS: ${WEB_API_CORS_ALLOW_ORIGINS:-*} + CONSOLE_CORS_ALLOW_ORIGINS: ${CONSOLE_CORS_ALLOW_ORIGINS:-*} + STORAGE_TYPE: ${STORAGE_TYPE:-opendal} + OPENDAL_SCHEME: ${OPENDAL_SCHEME:-fs} + OPENDAL_FS_ROOT: ${OPENDAL_FS_ROOT:-storage} + S3_ENDPOINT: ${S3_ENDPOINT:-} + S3_REGION: ${S3_REGION:-us-east-1} + S3_BUCKET_NAME: ${S3_BUCKET_NAME:-difyai} + S3_ACCESS_KEY: ${S3_ACCESS_KEY:-} + S3_SECRET_KEY: ${S3_SECRET_KEY:-} + S3_USE_AWS_MANAGED_IAM: ${S3_USE_AWS_MANAGED_IAM:-false} + AZURE_BLOB_ACCOUNT_NAME: ${AZURE_BLOB_ACCOUNT_NAME:-difyai} + AZURE_BLOB_ACCOUNT_KEY: ${AZURE_BLOB_ACCOUNT_KEY:-difyai} + AZURE_BLOB_CONTAINER_NAME: ${AZURE_BLOB_CONTAINER_NAME:-difyai-container} + AZURE_BLOB_ACCOUNT_URL: ${AZURE_BLOB_ACCOUNT_URL:-https://.blob.core.windows.net} + GOOGLE_STORAGE_BUCKET_NAME: ${GOOGLE_STORAGE_BUCKET_NAME:-your-bucket-name} + GOOGLE_STORAGE_SERVICE_ACCOUNT_JSON_BASE64: ${GOOGLE_STORAGE_SERVICE_ACCOUNT_JSON_BASE64:-} + ALIYUN_OSS_BUCKET_NAME: ${ALIYUN_OSS_BUCKET_NAME:-your-bucket-name} + ALIYUN_OSS_ACCESS_KEY: ${ALIYUN_OSS_ACCESS_KEY:-your-access-key} + ALIYUN_OSS_SECRET_KEY: ${ALIYUN_OSS_SECRET_KEY:-your-secret-key} + ALIYUN_OSS_ENDPOINT: ${ALIYUN_OSS_ENDPOINT:-https://oss-ap-southeast-1-internal.aliyuncs.com} + ALIYUN_OSS_REGION: ${ALIYUN_OSS_REGION:-ap-southeast-1} + ALIYUN_OSS_AUTH_VERSION: ${ALIYUN_OSS_AUTH_VERSION:-v4} + ALIYUN_OSS_PATH: ${ALIYUN_OSS_PATH:-your-path} + TENCENT_COS_BUCKET_NAME: ${TENCENT_COS_BUCKET_NAME:-your-bucket-name} + TENCENT_COS_SECRET_KEY: ${TENCENT_COS_SECRET_KEY:-your-secret-key} + TENCENT_COS_SECRET_ID: ${TENCENT_COS_SECRET_ID:-your-secret-id} + TENCENT_COS_REGION: ${TENCENT_COS_REGION:-your-region} + TENCENT_COS_SCHEME: ${TENCENT_COS_SCHEME:-your-scheme} + OCI_ENDPOINT: ${OCI_ENDPOINT:-https://objectstorage.us-ashburn-1.oraclecloud.com} + OCI_BUCKET_NAME: ${OCI_BUCKET_NAME:-your-bucket-name} + OCI_ACCESS_KEY: ${OCI_ACCESS_KEY:-your-access-key} + OCI_SECRET_KEY: ${OCI_SECRET_KEY:-your-secret-key} + OCI_REGION: ${OCI_REGION:-us-ashburn-1} + HUAWEI_OBS_BUCKET_NAME: ${HUAWEI_OBS_BUCKET_NAME:-your-bucket-name} + HUAWEI_OBS_SECRET_KEY: ${HUAWEI_OBS_SECRET_KEY:-your-secret-key} + HUAWEI_OBS_ACCESS_KEY: ${HUAWEI_OBS_ACCESS_KEY:-your-access-key} + HUAWEI_OBS_SERVER: ${HUAWEI_OBS_SERVER:-your-server-url} + VOLCENGINE_TOS_BUCKET_NAME: ${VOLCENGINE_TOS_BUCKET_NAME:-your-bucket-name} + VOLCENGINE_TOS_SECRET_KEY: ${VOLCENGINE_TOS_SECRET_KEY:-your-secret-key} + VOLCENGINE_TOS_ACCESS_KEY: ${VOLCENGINE_TOS_ACCESS_KEY:-your-access-key} + VOLCENGINE_TOS_ENDPOINT: ${VOLCENGINE_TOS_ENDPOINT:-your-server-url} + VOLCENGINE_TOS_REGION: ${VOLCENGINE_TOS_REGION:-your-region} + BAIDU_OBS_BUCKET_NAME: ${BAIDU_OBS_BUCKET_NAME:-your-bucket-name} + BAIDU_OBS_SECRET_KEY: ${BAIDU_OBS_SECRET_KEY:-your-secret-key} + BAIDU_OBS_ACCESS_KEY: ${BAIDU_OBS_ACCESS_KEY:-your-access-key} + BAIDU_OBS_ENDPOINT: ${BAIDU_OBS_ENDPOINT:-your-server-url} + SUPABASE_BUCKET_NAME: ${SUPABASE_BUCKET_NAME:-your-bucket-name} + SUPABASE_API_KEY: ${SUPABASE_API_KEY:-your-access-key} + SUPABASE_URL: ${SUPABASE_URL:-your-server-url} + VECTOR_STORE: ${VECTOR_STORE:-weaviate} + WEAVIATE_ENDPOINT: ${WEAVIATE_ENDPOINT:-http://weaviate:8080} + WEAVIATE_API_KEY: ${WEAVIATE_API_KEY:-WVF5YThaHlkYwhGUSmCRgsX3tD5ngdN8pkih} + QDRANT_URL: ${QDRANT_URL:-http://qdrant:6333} + QDRANT_API_KEY: ${QDRANT_API_KEY:-difyai123456} + QDRANT_CLIENT_TIMEOUT: ${QDRANT_CLIENT_TIMEOUT:-20} + QDRANT_GRPC_ENABLED: ${QDRANT_GRPC_ENABLED:-false} + QDRANT_GRPC_PORT: ${QDRANT_GRPC_PORT:-6334} + MILVUS_URI: ${MILVUS_URI:-http://127.0.0.1:19530} + MILVUS_TOKEN: ${MILVUS_TOKEN:-} + MILVUS_USER: ${MILVUS_USER:-root} + MILVUS_PASSWORD: ${MILVUS_PASSWORD:-Milvus} + MILVUS_ENABLE_HYBRID_SEARCH: ${MILVUS_ENABLE_HYBRID_SEARCH:-False} + MYSCALE_HOST: ${MYSCALE_HOST:-myscale} + MYSCALE_PORT: ${MYSCALE_PORT:-8123} + MYSCALE_USER: ${MYSCALE_USER:-default} + MYSCALE_PASSWORD: ${MYSCALE_PASSWORD:-} + MYSCALE_DATABASE: ${MYSCALE_DATABASE:-dify} + MYSCALE_FTS_PARAMS: ${MYSCALE_FTS_PARAMS:-} + COUCHBASE_CONNECTION_STRING: ${COUCHBASE_CONNECTION_STRING:-couchbase://couchbase-server} + COUCHBASE_USER: ${COUCHBASE_USER:-Administrator} + COUCHBASE_PASSWORD: ${COUCHBASE_PASSWORD:-password} + COUCHBASE_BUCKET_NAME: ${COUCHBASE_BUCKET_NAME:-Embeddings} + COUCHBASE_SCOPE_NAME: ${COUCHBASE_SCOPE_NAME:-_default} + PGVECTOR_HOST: ${PGVECTOR_HOST:-pgvector} + PGVECTOR_PORT: ${PGVECTOR_PORT:-5432} + PGVECTOR_USER: ${PGVECTOR_USER:-postgres} + PGVECTOR_PASSWORD: ${PGVECTOR_PASSWORD:-difyai123456} + PGVECTOR_DATABASE: ${PGVECTOR_DATABASE:-dify} + PGVECTOR_MIN_CONNECTION: ${PGVECTOR_MIN_CONNECTION:-1} + PGVECTOR_MAX_CONNECTION: ${PGVECTOR_MAX_CONNECTION:-5} + PGVECTO_RS_HOST: ${PGVECTO_RS_HOST:-pgvecto-rs} + PGVECTO_RS_PORT: ${PGVECTO_RS_PORT:-5432} + PGVECTO_RS_USER: ${PGVECTO_RS_USER:-postgres} + PGVECTO_RS_PASSWORD: ${PGVECTO_RS_PASSWORD:-difyai123456} + PGVECTO_RS_DATABASE: ${PGVECTO_RS_DATABASE:-dify} + ANALYTICDB_KEY_ID: ${ANALYTICDB_KEY_ID:-your-ak} + ANALYTICDB_KEY_SECRET: ${ANALYTICDB_KEY_SECRET:-your-sk} + ANALYTICDB_REGION_ID: ${ANALYTICDB_REGION_ID:-cn-hangzhou} + ANALYTICDB_INSTANCE_ID: ${ANALYTICDB_INSTANCE_ID:-gp-ab123456} + ANALYTICDB_ACCOUNT: ${ANALYTICDB_ACCOUNT:-testaccount} + ANALYTICDB_PASSWORD: ${ANALYTICDB_PASSWORD:-testpassword} + ANALYTICDB_NAMESPACE: ${ANALYTICDB_NAMESPACE:-dify} + ANALYTICDB_NAMESPACE_PASSWORD: ${ANALYTICDB_NAMESPACE_PASSWORD:-difypassword} + ANALYTICDB_HOST: ${ANALYTICDB_HOST:-gp-test.aliyuncs.com} + ANALYTICDB_PORT: ${ANALYTICDB_PORT:-5432} + ANALYTICDB_MIN_CONNECTION: ${ANALYTICDB_MIN_CONNECTION:-1} + ANALYTICDB_MAX_CONNECTION: ${ANALYTICDB_MAX_CONNECTION:-5} + TIDB_VECTOR_HOST: ${TIDB_VECTOR_HOST:-tidb} + TIDB_VECTOR_PORT: ${TIDB_VECTOR_PORT:-4000} + TIDB_VECTOR_USER: ${TIDB_VECTOR_USER:-} + TIDB_VECTOR_PASSWORD: ${TIDB_VECTOR_PASSWORD:-} + TIDB_VECTOR_DATABASE: ${TIDB_VECTOR_DATABASE:-dify} + TIDB_ON_QDRANT_URL: ${TIDB_ON_QDRANT_URL:-http://127.0.0.1} + TIDB_ON_QDRANT_API_KEY: ${TIDB_ON_QDRANT_API_KEY:-dify} + TIDB_ON_QDRANT_CLIENT_TIMEOUT: ${TIDB_ON_QDRANT_CLIENT_TIMEOUT:-20} + TIDB_ON_QDRANT_GRPC_ENABLED: ${TIDB_ON_QDRANT_GRPC_ENABLED:-false} + TIDB_ON_QDRANT_GRPC_PORT: ${TIDB_ON_QDRANT_GRPC_PORT:-6334} + TIDB_PUBLIC_KEY: ${TIDB_PUBLIC_KEY:-dify} + TIDB_PRIVATE_KEY: ${TIDB_PRIVATE_KEY:-dify} + TIDB_API_URL: ${TIDB_API_URL:-http://127.0.0.1} + TIDB_IAM_API_URL: ${TIDB_IAM_API_URL:-http://127.0.0.1} + TIDB_REGION: ${TIDB_REGION:-regions/aws-us-east-1} + TIDB_PROJECT_ID: ${TIDB_PROJECT_ID:-dify} + TIDB_SPEND_LIMIT: ${TIDB_SPEND_LIMIT:-100} + CHROMA_HOST: ${CHROMA_HOST:-127.0.0.1} + CHROMA_PORT: ${CHROMA_PORT:-8000} + CHROMA_TENANT: ${CHROMA_TENANT:-default_tenant} + CHROMA_DATABASE: ${CHROMA_DATABASE:-default_database} + CHROMA_AUTH_PROVIDER: ${CHROMA_AUTH_PROVIDER:-chromadb.auth.token_authn.TokenAuthClientProvider} + CHROMA_AUTH_CREDENTIALS: ${CHROMA_AUTH_CREDENTIALS:-} + ORACLE_HOST: ${ORACLE_HOST:-oracle} + ORACLE_PORT: ${ORACLE_PORT:-1521} + ORACLE_USER: ${ORACLE_USER:-dify} + ORACLE_PASSWORD: ${ORACLE_PASSWORD:-dify} + ORACLE_DATABASE: ${ORACLE_DATABASE:-FREEPDB1} + RELYT_HOST: ${RELYT_HOST:-db} + RELYT_PORT: ${RELYT_PORT:-5432} + RELYT_USER: ${RELYT_USER:-postgres} + RELYT_PASSWORD: ${RELYT_PASSWORD:-difyai123456} + RELYT_DATABASE: ${RELYT_DATABASE:-postgres} + OPENSEARCH_HOST: ${OPENSEARCH_HOST:-opensearch} + OPENSEARCH_PORT: ${OPENSEARCH_PORT:-9200} + OPENSEARCH_USER: ${OPENSEARCH_USER:-admin} + OPENSEARCH_PASSWORD: ${OPENSEARCH_PASSWORD:-admin} + OPENSEARCH_SECURE: ${OPENSEARCH_SECURE:-true} + TENCENT_VECTOR_DB_URL: ${TENCENT_VECTOR_DB_URL:-http://127.0.0.1} + TENCENT_VECTOR_DB_API_KEY: ${TENCENT_VECTOR_DB_API_KEY:-dify} + TENCENT_VECTOR_DB_TIMEOUT: ${TENCENT_VECTOR_DB_TIMEOUT:-30} + TENCENT_VECTOR_DB_USERNAME: ${TENCENT_VECTOR_DB_USERNAME:-dify} + TENCENT_VECTOR_DB_DATABASE: ${TENCENT_VECTOR_DB_DATABASE:-dify} + TENCENT_VECTOR_DB_SHARD: ${TENCENT_VECTOR_DB_SHARD:-1} + TENCENT_VECTOR_DB_REPLICAS: ${TENCENT_VECTOR_DB_REPLICAS:-2} + ELASTICSEARCH_HOST: ${ELASTICSEARCH_HOST:-0.0.0.0} + ELASTICSEARCH_PORT: ${ELASTICSEARCH_PORT:-9200} + ELASTICSEARCH_USERNAME: ${ELASTICSEARCH_USERNAME:-elastic} + ELASTICSEARCH_PASSWORD: ${ELASTICSEARCH_PASSWORD:-elastic} + KIBANA_PORT: ${KIBANA_PORT:-5601} + BAIDU_VECTOR_DB_ENDPOINT: ${BAIDU_VECTOR_DB_ENDPOINT:-http://127.0.0.1:5287} + BAIDU_VECTOR_DB_CONNECTION_TIMEOUT_MS: ${BAIDU_VECTOR_DB_CONNECTION_TIMEOUT_MS:-30000} + BAIDU_VECTOR_DB_ACCOUNT: ${BAIDU_VECTOR_DB_ACCOUNT:-root} + BAIDU_VECTOR_DB_API_KEY: ${BAIDU_VECTOR_DB_API_KEY:-dify} + BAIDU_VECTOR_DB_DATABASE: ${BAIDU_VECTOR_DB_DATABASE:-dify} + BAIDU_VECTOR_DB_SHARD: ${BAIDU_VECTOR_DB_SHARD:-1} + BAIDU_VECTOR_DB_REPLICAS: ${BAIDU_VECTOR_DB_REPLICAS:-3} + VIKINGDB_ACCESS_KEY: ${VIKINGDB_ACCESS_KEY:-your-ak} + VIKINGDB_SECRET_KEY: ${VIKINGDB_SECRET_KEY:-your-sk} + VIKINGDB_REGION: ${VIKINGDB_REGION:-cn-shanghai} + VIKINGDB_HOST: ${VIKINGDB_HOST:-api-vikingdb.xxx.volces.com} + VIKINGDB_SCHEMA: ${VIKINGDB_SCHEMA:-http} + VIKINGDB_CONNECTION_TIMEOUT: ${VIKINGDB_CONNECTION_TIMEOUT:-30} + VIKINGDB_SOCKET_TIMEOUT: ${VIKINGDB_SOCKET_TIMEOUT:-30} + LINDORM_URL: ${LINDORM_URL:-http://lindorm:30070} + LINDORM_USERNAME: ${LINDORM_USERNAME:-lindorm} + LINDORM_PASSWORD: ${LINDORM_PASSWORD:-lindorm} + OCEANBASE_VECTOR_HOST: ${OCEANBASE_VECTOR_HOST:-oceanbase} + OCEANBASE_VECTOR_PORT: ${OCEANBASE_VECTOR_PORT:-2881} + OCEANBASE_VECTOR_USER: ${OCEANBASE_VECTOR_USER:-root@test} + OCEANBASE_VECTOR_PASSWORD: ${OCEANBASE_VECTOR_PASSWORD:-difyai123456} + OCEANBASE_VECTOR_DATABASE: ${OCEANBASE_VECTOR_DATABASE:-test} + OCEANBASE_CLUSTER_NAME: ${OCEANBASE_CLUSTER_NAME:-difyai} + OCEANBASE_MEMORY_LIMIT: ${OCEANBASE_MEMORY_LIMIT:-6G} + UPSTASH_VECTOR_URL: ${UPSTASH_VECTOR_URL:-https://xxx-vector.upstash.io} + UPSTASH_VECTOR_TOKEN: ${UPSTASH_VECTOR_TOKEN:-dify} + UPLOAD_FILE_SIZE_LIMIT: ${UPLOAD_FILE_SIZE_LIMIT:-15} + UPLOAD_FILE_BATCH_LIMIT: ${UPLOAD_FILE_BATCH_LIMIT:-5} + ETL_TYPE: ${ETL_TYPE:-dify} + UNSTRUCTURED_API_URL: ${UNSTRUCTURED_API_URL:-} + UNSTRUCTURED_API_KEY: ${UNSTRUCTURED_API_KEY:-} + SCARF_NO_ANALYTICS: ${SCARF_NO_ANALYTICS:-true} + PROMPT_GENERATION_MAX_TOKENS: ${PROMPT_GENERATION_MAX_TOKENS:-512} + CODE_GENERATION_MAX_TOKENS: ${CODE_GENERATION_MAX_TOKENS:-1024} + MULTIMODAL_SEND_FORMAT: ${MULTIMODAL_SEND_FORMAT:-base64} + UPLOAD_IMAGE_FILE_SIZE_LIMIT: ${UPLOAD_IMAGE_FILE_SIZE_LIMIT:-10} + UPLOAD_VIDEO_FILE_SIZE_LIMIT: ${UPLOAD_VIDEO_FILE_SIZE_LIMIT:-100} + UPLOAD_AUDIO_FILE_SIZE_LIMIT: ${UPLOAD_AUDIO_FILE_SIZE_LIMIT:-50} + SENTRY_DSN: ${SENTRY_DSN:-} + API_SENTRY_DSN: ${API_SENTRY_DSN:-} + API_SENTRY_TRACES_SAMPLE_RATE: ${API_SENTRY_TRACES_SAMPLE_RATE:-1.0} + API_SENTRY_PROFILES_SAMPLE_RATE: ${API_SENTRY_PROFILES_SAMPLE_RATE:-1.0} + WEB_SENTRY_DSN: ${WEB_SENTRY_DSN:-} + NOTION_INTEGRATION_TYPE: ${NOTION_INTEGRATION_TYPE:-public} + NOTION_CLIENT_SECRET: ${NOTION_CLIENT_SECRET:-} + NOTION_CLIENT_ID: ${NOTION_CLIENT_ID:-} + NOTION_INTERNAL_SECRET: ${NOTION_INTERNAL_SECRET:-} + MAIL_TYPE: ${MAIL_TYPE:-resend} + MAIL_DEFAULT_SEND_FROM: ${MAIL_DEFAULT_SEND_FROM:-} + RESEND_API_URL: ${RESEND_API_URL:-https://api.resend.com} + RESEND_API_KEY: ${RESEND_API_KEY:-your-resend-api-key} + SMTP_SERVER: ${SMTP_SERVER:-} + SMTP_PORT: ${SMTP_PORT:-465} + SMTP_USERNAME: ${SMTP_USERNAME:-} + SMTP_PASSWORD: ${SMTP_PASSWORD:-} + SMTP_USE_TLS: ${SMTP_USE_TLS:-true} + SMTP_OPPORTUNISTIC_TLS: ${SMTP_OPPORTUNISTIC_TLS:-false} + INDEXING_MAX_SEGMENTATION_TOKENS_LENGTH: ${INDEXING_MAX_SEGMENTATION_TOKENS_LENGTH:-4000} + INVITE_EXPIRY_HOURS: ${INVITE_EXPIRY_HOURS:-72} + RESET_PASSWORD_TOKEN_EXPIRY_MINUTES: ${RESET_PASSWORD_TOKEN_EXPIRY_MINUTES:-5} + CODE_EXECUTION_ENDPOINT: ${CODE_EXECUTION_ENDPOINT:-http://sandbox:8194} + CODE_EXECUTION_API_KEY: ${CODE_EXECUTION_API_KEY:-dify-sandbox} + CODE_MAX_NUMBER: ${CODE_MAX_NUMBER:-9223372036854775807} + CODE_MIN_NUMBER: ${CODE_MIN_NUMBER:--9223372036854775808} + CODE_MAX_DEPTH: ${CODE_MAX_DEPTH:-5} + CODE_MAX_PRECISION: ${CODE_MAX_PRECISION:-20} + CODE_MAX_STRING_LENGTH: ${CODE_MAX_STRING_LENGTH:-80000} + CODE_MAX_STRING_ARRAY_LENGTH: ${CODE_MAX_STRING_ARRAY_LENGTH:-30} + CODE_MAX_OBJECT_ARRAY_LENGTH: ${CODE_MAX_OBJECT_ARRAY_LENGTH:-30} + CODE_MAX_NUMBER_ARRAY_LENGTH: ${CODE_MAX_NUMBER_ARRAY_LENGTH:-1000} + CODE_EXECUTION_CONNECT_TIMEOUT: ${CODE_EXECUTION_CONNECT_TIMEOUT:-10} + CODE_EXECUTION_READ_TIMEOUT: ${CODE_EXECUTION_READ_TIMEOUT:-60} + CODE_EXECUTION_WRITE_TIMEOUT: ${CODE_EXECUTION_WRITE_TIMEOUT:-10} + TEMPLATE_TRANSFORM_MAX_LENGTH: ${TEMPLATE_TRANSFORM_MAX_LENGTH:-80000} + WORKFLOW_MAX_EXECUTION_STEPS: ${WORKFLOW_MAX_EXECUTION_STEPS:-500} + WORKFLOW_MAX_EXECUTION_TIME: ${WORKFLOW_MAX_EXECUTION_TIME:-1200} + WORKFLOW_CALL_MAX_DEPTH: ${WORKFLOW_CALL_MAX_DEPTH:-5} + MAX_VARIABLE_SIZE: ${MAX_VARIABLE_SIZE:-204800} + WORKFLOW_PARALLEL_DEPTH_LIMIT: ${WORKFLOW_PARALLEL_DEPTH_LIMIT:-3} + WORKFLOW_FILE_UPLOAD_LIMIT: ${WORKFLOW_FILE_UPLOAD_LIMIT:-10} + HTTP_REQUEST_NODE_MAX_BINARY_SIZE: ${HTTP_REQUEST_NODE_MAX_BINARY_SIZE:-10485760} + HTTP_REQUEST_NODE_MAX_TEXT_SIZE: ${HTTP_REQUEST_NODE_MAX_TEXT_SIZE:-1048576} + SSRF_PROXY_HTTP_URL: ${SSRF_PROXY_HTTP_URL:-http://ssrf_proxy:3128} + SSRF_PROXY_HTTPS_URL: ${SSRF_PROXY_HTTPS_URL:-http://ssrf_proxy:3128} + TEXT_GENERATION_TIMEOUT_MS: ${TEXT_GENERATION_TIMEOUT_MS:-60000} + PGUSER: ${PGUSER:-${DB_USERNAME}} + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-${DB_PASSWORD}} + POSTGRES_DB: ${POSTGRES_DB:-${DB_DATABASE}} + PGDATA: ${PGDATA:-/var/lib/postgresql/data/pgdata} + SANDBOX_API_KEY: ${SANDBOX_API_KEY:-dify-sandbox} + SANDBOX_GIN_MODE: ${SANDBOX_GIN_MODE:-release} + SANDBOX_WORKER_TIMEOUT: ${SANDBOX_WORKER_TIMEOUT:-15} + SANDBOX_ENABLE_NETWORK: ${SANDBOX_ENABLE_NETWORK:-true} + SANDBOX_HTTP_PROXY: ${SANDBOX_HTTP_PROXY:-http://ssrf_proxy:3128} + SANDBOX_HTTPS_PROXY: ${SANDBOX_HTTPS_PROXY:-http://ssrf_proxy:3128} + SANDBOX_PORT: ${SANDBOX_PORT:-8194} + WEAVIATE_PERSISTENCE_DATA_PATH: ${WEAVIATE_PERSISTENCE_DATA_PATH:-/var/lib/weaviate} + WEAVIATE_QUERY_DEFAULTS_LIMIT: ${WEAVIATE_QUERY_DEFAULTS_LIMIT:-25} + WEAVIATE_AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: ${WEAVIATE_AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED:-true} + WEAVIATE_DEFAULT_VECTORIZER_MODULE: ${WEAVIATE_DEFAULT_VECTORIZER_MODULE:-none} + WEAVIATE_CLUSTER_HOSTNAME: ${WEAVIATE_CLUSTER_HOSTNAME:-node1} + WEAVIATE_AUTHENTICATION_APIKEY_ENABLED: ${WEAVIATE_AUTHENTICATION_APIKEY_ENABLED:-true} + WEAVIATE_AUTHENTICATION_APIKEY_ALLOWED_KEYS: ${WEAVIATE_AUTHENTICATION_APIKEY_ALLOWED_KEYS:-WVF5YThaHlkYwhGUSmCRgsX3tD5ngdN8pkih} + WEAVIATE_AUTHENTICATION_APIKEY_USERS: ${WEAVIATE_AUTHENTICATION_APIKEY_USERS:-hello@dify.ai} + WEAVIATE_AUTHORIZATION_ADMINLIST_ENABLED: ${WEAVIATE_AUTHORIZATION_ADMINLIST_ENABLED:-true} + WEAVIATE_AUTHORIZATION_ADMINLIST_USERS: ${WEAVIATE_AUTHORIZATION_ADMINLIST_USERS:-hello@dify.ai} + CHROMA_SERVER_AUTHN_CREDENTIALS: ${CHROMA_SERVER_AUTHN_CREDENTIALS:-difyai123456} + CHROMA_SERVER_AUTHN_PROVIDER: ${CHROMA_SERVER_AUTHN_PROVIDER:-chromadb.auth.token_authn.TokenAuthenticationServerProvider} + CHROMA_IS_PERSISTENT: ${CHROMA_IS_PERSISTENT:-TRUE} + ORACLE_PWD: ${ORACLE_PWD:-Dify123456} + ORACLE_CHARACTERSET: ${ORACLE_CHARACTERSET:-AL32UTF8} + ETCD_AUTO_COMPACTION_MODE: ${ETCD_AUTO_COMPACTION_MODE:-revision} + ETCD_AUTO_COMPACTION_RETENTION: ${ETCD_AUTO_COMPACTION_RETENTION:-1000} + ETCD_QUOTA_BACKEND_BYTES: ${ETCD_QUOTA_BACKEND_BYTES:-4294967296} + ETCD_SNAPSHOT_COUNT: ${ETCD_SNAPSHOT_COUNT:-50000} + MINIO_ACCESS_KEY: ${MINIO_ACCESS_KEY:-minioadmin} + MINIO_SECRET_KEY: ${MINIO_SECRET_KEY:-minioadmin} + ETCD_ENDPOINTS: ${ETCD_ENDPOINTS:-etcd:2379} + MINIO_ADDRESS: ${MINIO_ADDRESS:-minio:9000} + MILVUS_AUTHORIZATION_ENABLED: ${MILVUS_AUTHORIZATION_ENABLED:-true} + PGVECTOR_PGUSER: ${PGVECTOR_PGUSER:-postgres} + PGVECTOR_POSTGRES_PASSWORD: ${PGVECTOR_POSTGRES_PASSWORD:-difyai123456} + PGVECTOR_POSTGRES_DB: ${PGVECTOR_POSTGRES_DB:-dify} + PGVECTOR_PGDATA: ${PGVECTOR_PGDATA:-/var/lib/postgresql/data/pgdata} + OPENSEARCH_DISCOVERY_TYPE: ${OPENSEARCH_DISCOVERY_TYPE:-single-node} + OPENSEARCH_BOOTSTRAP_MEMORY_LOCK: ${OPENSEARCH_BOOTSTRAP_MEMORY_LOCK:-true} + OPENSEARCH_JAVA_OPTS_MIN: ${OPENSEARCH_JAVA_OPTS_MIN:-512m} + OPENSEARCH_JAVA_OPTS_MAX: ${OPENSEARCH_JAVA_OPTS_MAX:-1024m} + OPENSEARCH_INITIAL_ADMIN_PASSWORD: ${OPENSEARCH_INITIAL_ADMIN_PASSWORD:-Qazwsxedc!@#123} + OPENSEARCH_MEMLOCK_SOFT: ${OPENSEARCH_MEMLOCK_SOFT:--1} + OPENSEARCH_MEMLOCK_HARD: ${OPENSEARCH_MEMLOCK_HARD:--1} + OPENSEARCH_NOFILE_SOFT: ${OPENSEARCH_NOFILE_SOFT:-65536} + OPENSEARCH_NOFILE_HARD: ${OPENSEARCH_NOFILE_HARD:-65536} + NGINX_SERVER_NAME: ${NGINX_SERVER_NAME:-_} + NGINX_HTTPS_ENABLED: ${NGINX_HTTPS_ENABLED:-false} + NGINX_PORT: ${NGINX_PORT:-80} + NGINX_SSL_PORT: ${NGINX_SSL_PORT:-443} + NGINX_SSL_CERT_FILENAME: ${NGINX_SSL_CERT_FILENAME:-dify.crt} + NGINX_SSL_CERT_KEY_FILENAME: ${NGINX_SSL_CERT_KEY_FILENAME:-dify.key} + NGINX_SSL_PROTOCOLS: ${NGINX_SSL_PROTOCOLS:-TLSv1.1 TLSv1.2 TLSv1.3} + NGINX_WORKER_PROCESSES: ${NGINX_WORKER_PROCESSES:-auto} + NGINX_CLIENT_MAX_BODY_SIZE: ${NGINX_CLIENT_MAX_BODY_SIZE:-15M} + NGINX_KEEPALIVE_TIMEOUT: ${NGINX_KEEPALIVE_TIMEOUT:-65} + NGINX_PROXY_READ_TIMEOUT: ${NGINX_PROXY_READ_TIMEOUT:-3600s} + NGINX_PROXY_SEND_TIMEOUT: ${NGINX_PROXY_SEND_TIMEOUT:-3600s} + NGINX_ENABLE_CERTBOT_CHALLENGE: ${NGINX_ENABLE_CERTBOT_CHALLENGE:-false} + CERTBOT_EMAIL: ${CERTBOT_EMAIL:-your_email@example.com} + CERTBOT_DOMAIN: ${CERTBOT_DOMAIN:-your_domain.com} + CERTBOT_OPTIONS: ${CERTBOT_OPTIONS:-} + SSRF_HTTP_PORT: ${SSRF_HTTP_PORT:-3128} + SSRF_COREDUMP_DIR: ${SSRF_COREDUMP_DIR:-/var/spool/squid} + SSRF_REVERSE_PROXY_PORT: ${SSRF_REVERSE_PROXY_PORT:-8194} + SSRF_SANDBOX_HOST: ${SSRF_SANDBOX_HOST:-sandbox} + SSRF_DEFAULT_TIME_OUT: ${SSRF_DEFAULT_TIME_OUT:-5} + SSRF_DEFAULT_CONNECT_TIME_OUT: ${SSRF_DEFAULT_CONNECT_TIME_OUT:-5} + SSRF_DEFAULT_READ_TIME_OUT: ${SSRF_DEFAULT_READ_TIME_OUT:-5} + SSRF_DEFAULT_WRITE_TIME_OUT: ${SSRF_DEFAULT_WRITE_TIME_OUT:-5} + EXPOSE_NGINX_PORT: ${PANEL_APP_PORT_HTTP:-8080} + EXPOSE_NGINX_SSL_PORT: ${PANEL_APP_PORT_HTTPS:-8443} + POSITION_TOOL_PINS: ${POSITION_TOOL_PINS:-} + POSITION_TOOL_INCLUDES: ${POSITION_TOOL_INCLUDES:-} + POSITION_TOOL_EXCLUDES: ${POSITION_TOOL_EXCLUDES:-} + POSITION_PROVIDER_PINS: ${POSITION_PROVIDER_PINS:-} + POSITION_PROVIDER_INCLUDES: ${POSITION_PROVIDER_INCLUDES:-} + POSITION_PROVIDER_EXCLUDES: ${POSITION_PROVIDER_EXCLUDES:-} + CSP_WHITELIST: ${CSP_WHITELIST:-} + CREATE_TIDB_SERVICE_JOB_ENABLED: ${CREATE_TIDB_SERVICE_JOB_ENABLED:-false} + MAX_SUBMIT_COUNT: ${MAX_SUBMIT_COUNT:-100} + TOP_K_MAX_VALUE: ${TOP_K_MAX_VALUE:-10} + DB_PLUGIN_DATABASE: ${DB_PLUGIN_DATABASE:-dify_plugin} + EXPOSE_PLUGIN_DAEMON_PORT: ${EXPOSE_PLUGIN_DAEMON_PORT:-5002} + PLUGIN_DAEMON_PORT: ${PLUGIN_DAEMON_PORT:-5002} + PLUGIN_DAEMON_KEY: ${PLUGIN_DAEMON_KEY:-lYkiYYT6owG+71oLerGzA7GXCgOT++6ovaezWAjpCjf+Sjc3ZtU+qUEi} + PLUGIN_DAEMON_URL: ${PLUGIN_DAEMON_URL:-http://plugin_daemon:5002} + PLUGIN_MAX_PACKAGE_SIZE: ${PLUGIN_MAX_PACKAGE_SIZE:-52428800} + PLUGIN_PPROF_ENABLED: ${PLUGIN_PPROF_ENABLED:-false} + PLUGIN_DEBUGGING_HOST: ${PLUGIN_DEBUGGING_HOST:-0.0.0.0} + PLUGIN_DEBUGGING_PORT: ${PLUGIN_DEBUGGING_PORT:-5003} + EXPOSE_PLUGIN_DEBUGGING_HOST: ${EXPOSE_PLUGIN_DEBUGGING_HOST:-localhost} + EXPOSE_PLUGIN_DEBUGGING_PORT: ${EXPOSE_PLUGIN_DEBUGGING_PORT:-5003} + PLUGIN_DIFY_INNER_API_KEY: ${PLUGIN_DIFY_INNER_API_KEY:-QaHbTe77CtuXmsfyhR7+vRjI/+XbV1AaFy691iy+kGDv2Jvy0/eAh8Y1} + PLUGIN_DIFY_INNER_API_URL: ${PLUGIN_DIFY_INNER_API_URL:-http://api:5001} + ENDPOINT_URL_TEMPLATE: ${ENDPOINT_URL_TEMPLATE:-http://localhost/e/{hook_id}} + MARKETPLACE_ENABLED: ${MARKETPLACE_ENABLED:-true} + MARKETPLACE_API_URL: ${MARKETPLACE_API_URL:-https://marketplace.dify.ai} + FORCE_VERIFYING_SIGNATURE: ${FORCE_VERIFYING_SIGNATURE:-true} + +services: + api: + image: langgenius/dify-api:1.1.1 + container_name: api-${CONTAINER_NAME} + restart: always + environment: + <<: *shared-api-worker-env + MODE: api + SENTRY_DSN: ${API_SENTRY_DSN:-} + SENTRY_TRACES_SAMPLE_RATE: ${API_SENTRY_TRACES_SAMPLE_RATE:-1.0} + SENTRY_PROFILES_SAMPLE_RATE: ${API_SENTRY_PROFILES_SAMPLE_RATE:-1.0} + PLUGIN_MAX_PACKAGE_SIZE: ${PLUGIN_MAX_PACKAGE_SIZE:-52428800} + INNER_API_KEY_FOR_PLUGIN: ${PLUGIN_DIFY_INNER_API_KEY:-QaHbTe77CtuXmsfyhR7+vRjI/+XbV1AaFy691iy+kGDv2Jvy0/eAh8Y1} + depends_on: + - db + - redis + volumes: + - ${DIFY_ROOT_PATH}/volumes/app/storage:/app/api/storage + networks: + - ssrf_proxy_network + - default + + worker: + image: langgenius/dify-api:1.1.1 + container_name: worker-${CONTAINER_NAME} + restart: always + environment: + <<: *shared-api-worker-env + MODE: worker + SENTRY_DSN: ${API_SENTRY_DSN:-} + SENTRY_TRACES_SAMPLE_RATE: ${API_SENTRY_TRACES_SAMPLE_RATE:-1.0} + SENTRY_PROFILES_SAMPLE_RATE: ${API_SENTRY_PROFILES_SAMPLE_RATE:-1.0} + PLUGIN_MAX_PACKAGE_SIZE: ${PLUGIN_MAX_PACKAGE_SIZE:-52428800} + INNER_API_KEY_FOR_PLUGIN: ${PLUGIN_DIFY_INNER_API_KEY:-QaHbTe77CtuXmsfyhR7+vRjI/+XbV1AaFy691iy+kGDv2Jvy0/eAh8Y1} + depends_on: + - db + - redis + volumes: + - ${DIFY_ROOT_PATH}/volumes/app/storage:/app/api/storage + networks: + - ssrf_proxy_network + - default + + web: + image: langgenius/dify-web:1.1.1 + container_name: ${CONTAINER_NAME} + restart: always + environment: + CONSOLE_API_URL: ${CONSOLE_API_URL:-} + APP_API_URL: ${APP_API_URL:-} + SENTRY_DSN: ${WEB_SENTRY_DSN:-} + NEXT_TELEMETRY_DISABLED: ${NEXT_TELEMETRY_DISABLED:-0} + TEXT_GENERATION_TIMEOUT_MS: ${TEXT_GENERATION_TIMEOUT_MS:-60000} + CSP_WHITELIST: ${CSP_WHITELIST:-} + MARKETPLACE_API_URL: ${MARKETPLACE_API_URL:-https://marketplace.dify.ai} + MARKETPLACE_URL: ${MARKETPLACE_URL:-https://marketplace.dify.ai} + TOP_K_MAX_VALUE: ${TOP_K_MAX_VALUE:-} + INDEXING_MAX_SEGMENTATION_TOKENS_LENGTH: ${INDEXING_MAX_SEGMENTATION_TOKENS_LENGTH:-} + + db: + image: postgres:15-alpine + container_name: db-${CONTAINER_NAME} + restart: always + environment: + PGUSER: ${PGUSER:-postgres} + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-difyai123456} + POSTGRES_DB: ${POSTGRES_DB:-dify} + PGDATA: ${PGDATA:-/var/lib/postgresql/data/pgdata} + command: > + postgres -c 'max_connections=${POSTGRES_MAX_CONNECTIONS:-100}' + -c 'shared_buffers=${POSTGRES_SHARED_BUFFERS:-128MB}' + -c 'work_mem=${POSTGRES_WORK_MEM:-4MB}' + -c 'maintenance_work_mem=${POSTGRES_MAINTENANCE_WORK_MEM:-64MB}' + -c 'effective_cache_size=${POSTGRES_EFFECTIVE_CACHE_SIZE:-4096MB}' + volumes: + - ${DIFY_ROOT_PATH}/volumes/db/data:/var/lib/postgresql/data + healthcheck: + test: [ 'CMD', 'pg_isready' ] + interval: 1s + timeout: 3s + retries: 30 + ports: + - '${EXPOSE_DB_PORT:-5432}:5432' + + redis: + image: redis:6-alpine + container_name: redis-${CONTAINER_NAME} + restart: always + environment: + REDISCLI_AUTH: ${REDIS_PASSWORD:-difyai123456} + volumes: + - ${DIFY_ROOT_PATH}/volumes/redis/data:/data + command: redis-server --requirepass ${REDIS_PASSWORD:-difyai123456} + healthcheck: + test: [ 'CMD', 'redis-cli', 'ping' ] + + sandbox: + image: langgenius/dify-sandbox:0.2.10 + container_name: sandbox-${CONTAINER_NAME} + restart: always + environment: + API_KEY: ${SANDBOX_API_KEY:-dify-sandbox} + GIN_MODE: ${SANDBOX_GIN_MODE:-release} + WORKER_TIMEOUT: ${SANDBOX_WORKER_TIMEOUT:-15} + ENABLE_NETWORK: ${SANDBOX_ENABLE_NETWORK:-true} + HTTP_PROXY: ${SANDBOX_HTTP_PROXY:-http://ssrf_proxy:3128} + HTTPS_PROXY: ${SANDBOX_HTTPS_PROXY:-http://ssrf_proxy:3128} + SANDBOX_PORT: ${SANDBOX_PORT:-8194} + volumes: + - ${DIFY_ROOT_PATH}/volumes/sandbox/dependencies:/dependencies + - ${DIFY_ROOT_PATH}/volumes/sandbox/conf:/conf + healthcheck: + test: [ 'CMD', 'curl', '-f', 'http://localhost:8194/health' ] + networks: + - ssrf_proxy_network + + plugin_daemon: + image: langgenius/dify-plugin-daemon:0.0.3-local + container_name: plugin_daemon-${CONTAINER_NAME} + restart: always + environment: + <<: *shared-api-worker-env + DB_DATABASE: ${DB_PLUGIN_DATABASE:-dify_plugin} + SERVER_PORT: ${PLUGIN_DAEMON_PORT:-5002} + SERVER_KEY: ${PLUGIN_DAEMON_KEY:-lYkiYYT6owG+71oLerGzA7GXCgOT++6ovaezWAjpCjf+Sjc3ZtU+qUEi} + MAX_PLUGIN_PACKAGE_SIZE: ${PLUGIN_MAX_PACKAGE_SIZE:-52428800} + PPROF_ENABLED: ${PLUGIN_PPROF_ENABLED:-false} + DIFY_INNER_API_URL: ${PLUGIN_DIFY_INNER_API_URL:-http://api:5001} + DIFY_INNER_API_KEY: ${INNER_API_KEY_FOR_PLUGIN:-QaHbTe77CtuXmsfyhR7+vRjI/+XbV1AaFy691iy+kGDv2Jvy0/eAh8Y1} + PLUGIN_REMOTE_INSTALLING_HOST: ${PLUGIN_REMOTE_INSTALL_HOST:-0.0.0.0} + PLUGIN_REMOTE_INSTALLING_PORT: ${PLUGIN_REMOTE_INSTALL_PORT:-5003} + PLUGIN_WORKING_PATH: ${PLUGIN_WORKING_PATH:-/app/storage/cwd} + FORCE_VERIFYING_SIGNATURE: ${FORCE_VERIFYING_SIGNATURE:-true} + ports: + - "${EXPOSE_PLUGIN_DEBUGGING_PORT:-5003}:${PLUGIN_DEBUGGING_PORT:-5003}" + volumes: + - ${DIFY_ROOT_PATH}/volumes/plugin_daemon:/app/storage + + + ssrf_proxy: + image: ubuntu/squid:latest + container_name: ssrf_proxy-${CONTAINER_NAME} + restart: always + volumes: + - ${DIFY_ROOT_PATH}/ssrf_proxy/squid.conf.template:/etc/squid/squid.conf.template + - ${DIFY_ROOT_PATH}/ssrf_proxy/docker-entrypoint.sh:/docker-entrypoint-mount.sh + entrypoint: [ 'sh', '-c', "cp /docker-entrypoint-mount.sh /docker-entrypoint.sh && sed -i 's/\r$$//' /docker-entrypoint.sh && chmod +x /docker-entrypoint.sh && /docker-entrypoint.sh" ] + environment: + HTTP_PORT: ${SSRF_HTTP_PORT:-3128} + COREDUMP_DIR: ${SSRF_COREDUMP_DIR:-/var/spool/squid} + REVERSE_PROXY_PORT: ${SSRF_REVERSE_PROXY_PORT:-8194} + SANDBOX_HOST: ${SSRF_SANDBOX_HOST:-sandbox} + SANDBOX_PORT: ${SANDBOX_PORT:-8194} + networks: + - ssrf_proxy_network + - default + + certbot: + image: certbot/certbot + container_name: certbot-${CONTAINER_NAME} + profiles: + - certbot + volumes: + - ${DIFY_ROOT_PATH}/volumes/certbot/conf:/etc/letsencrypt + - ${DIFY_ROOT_PATH}/volumes/certbot/www:/var/www/html + - ${DIFY_ROOT_PATH}/volumes/certbot/logs:/var/log/letsencrypt + - ${DIFY_ROOT_PATH}/volumes/certbot/conf/live:/etc/letsencrypt/live + - ${DIFY_ROOT_PATH}/certbot/update-cert.template.txt:/update-cert.template.txt + - ${DIFY_ROOT_PATH}/certbot/docker-entrypoint.sh:/docker-entrypoint.sh + environment: + - CERTBOT_EMAIL=${CERTBOT_EMAIL} + - CERTBOT_DOMAIN=${CERTBOT_DOMAIN} + - CERTBOT_OPTIONS=${CERTBOT_OPTIONS:-} + entrypoint: [ '/docker-entrypoint.sh' ] + command: [ 'tail', '-f', '/dev/null' ] + + nginx: + image: nginx:latest + container_name: nginx-${CONTAINER_NAME} + restart: always + volumes: + - ${DIFY_ROOT_PATH}/nginx/nginx.conf.template:/etc/nginx/nginx.conf.template + - ${DIFY_ROOT_PATH}/nginx/proxy.conf.template:/etc/nginx/proxy.conf.template + - ${DIFY_ROOT_PATH}/nginx/https.conf.template:/etc/nginx/https.conf.template + - ${DIFY_ROOT_PATH}/nginx/conf.d:/etc/nginx/conf.d + - ${DIFY_ROOT_PATH}/nginx/docker-entrypoint.sh:/docker-entrypoint-mount.sh + - ${DIFY_ROOT_PATH}/nginx/ssl:/etc/ssl # cert dir (legacy) + - ${DIFY_ROOT_PATH}/volumes/certbot/conf/live:/etc/letsencrypt/live # cert dir (with certbot container) + - ${DIFY_ROOT_PATH}/volumes/certbot/conf:/etc/letsencrypt + - ${DIFY_ROOT_PATH}/volumes/certbot/www:/var/www/html + entrypoint: [ 'sh', '-c', "cp /docker-entrypoint-mount.sh /docker-entrypoint.sh && sed -i 's/\r$$//' /docker-entrypoint.sh && chmod +x /docker-entrypoint.sh && /docker-entrypoint.sh" ] + environment: + NGINX_SERVER_NAME: ${NGINX_SERVER_NAME:-_} + NGINX_HTTPS_ENABLED: ${NGINX_HTTPS_ENABLED:-false} + NGINX_SSL_PORT: ${NGINX_SSL_PORT:-443} + NGINX_PORT: ${NGINX_PORT:-80} + NGINX_SSL_CERT_FILENAME: ${NGINX_SSL_CERT_FILENAME:-dify.crt} + NGINX_SSL_CERT_KEY_FILENAME: ${NGINX_SSL_CERT_KEY_FILENAME:-dify.key} + NGINX_SSL_PROTOCOLS: ${NGINX_SSL_PROTOCOLS:-TLSv1.1 TLSv1.2 TLSv1.3} + NGINX_WORKER_PROCESSES: ${NGINX_WORKER_PROCESSES:-auto} + NGINX_CLIENT_MAX_BODY_SIZE: ${NGINX_CLIENT_MAX_BODY_SIZE:-15M} + NGINX_KEEPALIVE_TIMEOUT: ${NGINX_KEEPALIVE_TIMEOUT:-65} + NGINX_PROXY_READ_TIMEOUT: ${NGINX_PROXY_READ_TIMEOUT:-3600s} + NGINX_PROXY_SEND_TIMEOUT: ${NGINX_PROXY_SEND_TIMEOUT:-3600s} + NGINX_ENABLE_CERTBOT_CHALLENGE: ${NGINX_ENABLE_CERTBOT_CHALLENGE:-false} + CERTBOT_DOMAIN: ${CERTBOT_DOMAIN:-} + depends_on: + - api + - web + ports: + - '${PANEL_APP_PORT_HTTP:-80}:${NGINX_PORT:-80}' + - '${PANEL_APP_PORT_HTTPS:-443}:${NGINX_SSL_PORT:-443}' + + weaviate: + image: semitechnologies/weaviate:1.19.0 + container_name: weaviate-${CONTAINER_NAME} + profiles: + - '' + - weaviate + restart: always + volumes: + - ${DIFY_ROOT_PATH}/volumes/weaviate:/var/lib/weaviate + environment: + PERSISTENCE_DATA_PATH: ${WEAVIATE_PERSISTENCE_DATA_PATH:-/var/lib/weaviate} + QUERY_DEFAULTS_LIMIT: ${WEAVIATE_QUERY_DEFAULTS_LIMIT:-25} + AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: ${WEAVIATE_AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED:-false} + DEFAULT_VECTORIZER_MODULE: ${WEAVIATE_DEFAULT_VECTORIZER_MODULE:-none} + CLUSTER_HOSTNAME: ${WEAVIATE_CLUSTER_HOSTNAME:-node1} + AUTHENTICATION_APIKEY_ENABLED: ${WEAVIATE_AUTHENTICATION_APIKEY_ENABLED:-true} + AUTHENTICATION_APIKEY_ALLOWED_KEYS: ${WEAVIATE_AUTHENTICATION_APIKEY_ALLOWED_KEYS:-WVF5YThaHlkYwhGUSmCRgsX3tD5ngdN8pkih} + AUTHENTICATION_APIKEY_USERS: ${WEAVIATE_AUTHENTICATION_APIKEY_USERS:-hello@dify.ai} + AUTHORIZATION_ADMINLIST_ENABLED: ${WEAVIATE_AUTHORIZATION_ADMINLIST_ENABLED:-true} + AUTHORIZATION_ADMINLIST_USERS: ${WEAVIATE_AUTHORIZATION_ADMINLIST_USERS:-hello@dify.ai} + + qdrant: + image: langgenius/qdrant:v1.7.3 + container_name: qdrant-${CONTAINER_NAME} + profiles: + - qdrant + restart: always + volumes: + - ${DIFY_ROOT_PATH}/volumes/qdrant:/qdrant/storage + environment: + QDRANT_API_KEY: ${QDRANT_API_KEY:-difyai123456} + + couchbase-server: + build: ./conf/couchbase-server + profiles: + - couchbase + restart: always + environment: + - CLUSTER_NAME=dify_search + - COUCHBASE_ADMINISTRATOR_USERNAME=${COUCHBASE_USER:-Administrator} + - COUCHBASE_ADMINISTRATOR_PASSWORD=${COUCHBASE_PASSWORD:-password} + - COUCHBASE_BUCKET=${COUCHBASE_BUCKET_NAME:-Embeddings} + - COUCHBASE_BUCKET_RAMSIZE=512 + - COUCHBASE_RAM_SIZE=2048 + - COUCHBASE_EVENTING_RAM_SIZE=512 + - COUCHBASE_INDEX_RAM_SIZE=512 + - COUCHBASE_FTS_RAM_SIZE=1024 + hostname: couchbase-server + container_name: couchbase-server + working_dir: /opt/couchbase + stdin_open: true + tty: true + entrypoint: [ "" ] + command: sh -c "/opt/couchbase/init/init-cbserver.sh" + volumes: + - ${DIFY_ROOT_PATH}/volumes/couchbase/data:/opt/couchbase/var/lib/couchbase/data + healthcheck: + test: [ "CMD-SHELL", "curl -s -f -u Administrator:password http://localhost:8091/pools/default/buckets | grep -q '\\[{' || exit 1" ] + interval: 10s + retries: 10 + start_period: 30s + timeout: 10s + + pgvector: + image: pgvector/pgvector:pg16 + container_name: pgvector-${CONTAINER_NAME} + profiles: + - pgvector + restart: always + environment: + PGUSER: ${PGVECTOR_PGUSER:-postgres} + POSTGRES_PASSWORD: ${PGVECTOR_POSTGRES_PASSWORD:-difyai123456} + POSTGRES_DB: ${PGVECTOR_POSTGRES_DB:-dify} + PGDATA: ${PGVECTOR_PGDATA:-/var/lib/postgresql/data/pgdata} + volumes: + - ${DIFY_ROOT_PATH}/volumes/pgvector/data:/var/lib/postgresql/data + healthcheck: + test: [ 'CMD', 'pg_isready' ] + interval: 1s + timeout: 3s + retries: 30 + + pgvecto-rs: + image: tensorchord/pgvecto-rs:pg16-v0.3.0 + container_name: pgvecto-rs-${CONTAINER_NAME} + profiles: + - pgvecto-rs + restart: always + environment: + PGUSER: ${PGVECTOR_PGUSER:-postgres} + POSTGRES_PASSWORD: ${PGVECTOR_POSTGRES_PASSWORD:-difyai123456} + POSTGRES_DB: ${PGVECTOR_POSTGRES_DB:-dify} + PGDATA: ${PGVECTOR_PGDATA:-/var/lib/postgresql/data/pgdata} + volumes: + - ${DIFY_ROOT_PATH}/volumes/pgvecto_rs/data:/var/lib/postgresql/data + healthcheck: + test: [ 'CMD', 'pg_isready' ] + interval: 1s + timeout: 3s + retries: 30 + + chroma: + image: ghcr.io/chroma-core/chroma:0.5.20 + container_name: chroma-${CONTAINER_NAME} + profiles: + - chroma + restart: always + volumes: + - ${DIFY_ROOT_PATH}/volumes/chroma:/chroma/chroma + environment: + CHROMA_SERVER_AUTHN_CREDENTIALS: ${CHROMA_SERVER_AUTHN_CREDENTIALS:-difyai123456} + CHROMA_SERVER_AUTHN_PROVIDER: ${CHROMA_SERVER_AUTHN_PROVIDER:-chromadb.auth.token_authn.TokenAuthenticationServerProvider} + IS_PERSISTENT: ${CHROMA_IS_PERSISTENT:-TRUE} + + oceanbase: + image: quay.io/oceanbase/oceanbase-ce:4.3.3.0-100000142024101215 + container_name: oceanbase-${CONTAINER_NAME} + profiles: + - oceanbase + restart: always + volumes: + - ${DIFY_ROOT_PATH}/volumes/oceanbase/data:/root/ob + - ${DIFY_ROOT_PATH}/volumes/oceanbase/conf:/root/.obd/cluster + - ${DIFY_ROOT_PATH}/volumes/oceanbase/init.d:/root/boot/init.d + environment: + OB_MEMORY_LIMIT: ${OCEANBASE_MEMORY_LIMIT:-6G} + OB_SYS_PASSWORD: ${OCEANBASE_VECTOR_PASSWORD:-difyai123456} + OB_TENANT_PASSWORD: ${OCEANBASE_VECTOR_PASSWORD:-difyai123456} + OB_CLUSTER_NAME: ${OCEANBASE_CLUSTER_NAME:-difyai} + OB_SERVER_IP: '127.0.0.1' + + oracle: + image: container-registry.oracle.com/database/free:latest + container_name: oracle-${CONTAINER_NAME} + profiles: + - oracle + restart: always + volumes: + - source: oradata + type: volume + target: /opt/oracle/oradata + - ${DIFY_ROOT_PATH}/startupscripts:/opt/oracle/scripts/startup + environment: + ORACLE_PWD: ${ORACLE_PWD:-Dify123456} + ORACLE_CHARACTERSET: ${ORACLE_CHARACTERSET:-AL32UTF8} + + etcd: + image: quay.io/coreos/etcd:v3.5.5 + container_name: milvus-etcd-${CONTAINER_NAME} + profiles: + - milvus + environment: + ETCD_AUTO_COMPACTION_MODE: ${ETCD_AUTO_COMPACTION_MODE:-revision} + ETCD_AUTO_COMPACTION_RETENTION: ${ETCD_AUTO_COMPACTION_RETENTION:-1000} + ETCD_QUOTA_BACKEND_BYTES: ${ETCD_QUOTA_BACKEND_BYTES:-4294967296} + ETCD_SNAPSHOT_COUNT: ${ETCD_SNAPSHOT_COUNT:-50000} + volumes: + - ${DIFY_ROOT_PATH}/volumes/milvus/etcd:/etcd + command: etcd -advertise-client-urls=http://127.0.0.1:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd + healthcheck: + test: [ 'CMD', 'etcdctl', 'endpoint', 'health' ] + interval: 30s + timeout: 20s + retries: 3 + networks: + - milvus + + minio: + image: minio/minio:RELEASE.2023-03-20T20-16-18Z + container_name: milvus-minio-${CONTAINER_NAME} + profiles: + - milvus + environment: + MINIO_ACCESS_KEY: ${MINIO_ACCESS_KEY:-minioadmin} + MINIO_SECRET_KEY: ${MINIO_SECRET_KEY:-minioadmin} + volumes: + - ${DIFY_ROOT_PATH}/volumes/milvus/minio:/minio_data + command: minio server /minio_data --console-address ":9001" + healthcheck: + test: [ 'CMD', 'curl', '-f', 'http://localhost:9000/minio/health/live' ] + interval: 30s + timeout: 20s + retries: 3 + networks: + - milvus + + milvus-standalone: + image: milvusdb/milvus:v2.5.0-beta + container_name: milvus-standalone-${CONTAINER_NAME} + profiles: + - milvus + command: [ 'milvus', 'run', 'standalone' ] + environment: + ETCD_ENDPOINTS: ${ETCD_ENDPOINTS:-etcd:2379} + MINIO_ADDRESS: ${MINIO_ADDRESS:-minio:9000} + common.security.authorizationEnabled: ${MILVUS_AUTHORIZATION_ENABLED:-true} + volumes: + - ${DIFY_ROOT_PATH}/volumes/milvus/milvus:/var/lib/milvus + healthcheck: + test: [ 'CMD', 'curl', '-f', 'http://localhost:9091/healthz' ] + interval: 30s + start_period: 90s + timeout: 20s + retries: 3 + depends_on: + - etcd + - minio + ports: + - 19530:19530 + - 9091:9091 + networks: + - milvus + + opensearch: + image: opensearchproject/opensearch:latest + container_name: opensearch-${CONTAINER_NAME} + profiles: + - opensearch + environment: + discovery.type: ${OPENSEARCH_DISCOVERY_TYPE:-single-node} + bootstrap.memory_lock: ${OPENSEARCH_BOOTSTRAP_MEMORY_LOCK:-true} + OPENSEARCH_JAVA_OPTS: -Xms${OPENSEARCH_JAVA_OPTS_MIN:-512m} -Xmx${OPENSEARCH_JAVA_OPTS_MAX:-1024m} + OPENSEARCH_INITIAL_ADMIN_PASSWORD: ${OPENSEARCH_INITIAL_ADMIN_PASSWORD:-Qazwsxedc!@#123} + ulimits: + memlock: + soft: ${OPENSEARCH_MEMLOCK_SOFT:--1} + hard: ${OPENSEARCH_MEMLOCK_HARD:--1} + nofile: + soft: ${OPENSEARCH_NOFILE_SOFT:-65536} + hard: ${OPENSEARCH_NOFILE_HARD:-65536} + volumes: + - ${DIFY_ROOT_PATH}/volumes/opensearch/data:/usr/share/opensearch/data + networks: + - opensearch-net + + opensearch-dashboards: + image: opensearchproject/opensearch-dashboards:latest + container_name: opensearch-dashboards-${CONTAINER_NAME} + profiles: + - opensearch + environment: + OPENSEARCH_HOSTS: '["https://opensearch:9200"]' + volumes: + - ${DIFY_ROOT_PATH}/volumes/opensearch/opensearch_dashboards.yml:/usr/share/opensearch-dashboards/config/opensearch_dashboards.yml + networks: + - opensearch-net + depends_on: + - opensearch + + myscale: + image: myscale/myscaledb:1.6.4 + container_name: myscale-${CONTAINER_NAME} + profiles: + - myscale + restart: always + tty: true + volumes: + - ${DIFY_ROOT_PATH}/volumes/myscale/data:/var/lib/clickhouse + - ${DIFY_ROOT_PATH}/volumes/myscale/log:/var/log/clickhouse-server + - ${DIFY_ROOT_PATH}/volumes/myscale/config/users.d/custom_users_config.xml:/etc/clickhouse-server/users.d/custom_users_config.xml + ports: + - ${MYSCALE_PORT:-8123}:${MYSCALE_PORT:-8123} + + elasticsearch: + image: docker.elastic.co/elasticsearch/elasticsearch:8.14.3 + container_name: elasticsearch-${CONTAINER_NAME} + profiles: + - elasticsearch + - elasticsearch-ja + restart: always + volumes: + - ${DIFY_ROOT_PATH}/elasticsearch/docker-entrypoint.sh:/docker-entrypoint-mount.sh + - dify_es01_data:/usr/share/elasticsearch/data + environment: + ELASTIC_PASSWORD: ${ELASTICSEARCH_PASSWORD:-elastic} + VECTOR_STORE: ${VECTOR_STORE:-} + cluster.name: dify-es-cluster + node.name: dify-es0 + discovery.type: single-node + xpack.license.self_generated.type: basic + xpack.security.enabled: 'true' + xpack.security.enrollment.enabled: 'false' + xpack.security.http.ssl.enabled: 'false' + ports: + - ${ELASTICSEARCH_PORT:-9200}:9200 + deploy: + resources: + limits: + memory: 2g + entrypoint: [ 'sh', '-c', "sh /docker-entrypoint-mount.sh" ] + healthcheck: + test: [ 'CMD', 'curl', '-s', 'http://localhost:9200/_cluster/health?pretty' ] + interval: 30s + timeout: 10s + retries: 50 + + kibana: + image: docker.elastic.co/kibana/kibana:8.14.3 + container_name: kibana-${CONTAINER_NAME} + profiles: + - elasticsearch + depends_on: + - elasticsearch + restart: always + environment: + XPACK_ENCRYPTEDSAVEDOBJECTS_ENCRYPTIONKEY: d1a66dfd-c4d3-4a0a-8290-2abcb83ab3aa + NO_PROXY: localhost,127.0.0.1,elasticsearch,kibana + XPACK_SECURITY_ENABLED: 'true' + XPACK_SECURITY_ENROLLMENT_ENABLED: 'false' + XPACK_SECURITY_HTTP_SSL_ENABLED: 'false' + XPACK_FLEET_ISAIRGAPPED: 'true' + I18N_LOCALE: zh-CN + SERVER_PORT: '5601' + ELASTICSEARCH_HOSTS: http://elasticsearch:9200 + ports: + - ${KIBANA_PORT:-5601}:5601 + healthcheck: + test: [ 'CMD-SHELL', 'curl -s http://localhost:5601 >/dev/null || exit 1' ] + interval: 30s + timeout: 10s + retries: 3 + + unstructured: + image: downloads.unstructured.io/unstructured-io/unstructured-api:latest + container_name: unstructured-${CONTAINER_NAME} + profiles: + - unstructured + restart: always + volumes: + - ${DIFY_ROOT_PATH}/volumes/unstructured:/app/data + +networks: + ssrf_proxy_network: + driver: bridge + internal: true + milvus: + driver: bridge + opensearch-net: + driver: bridge + internal: true + +volumes: + oradata: + dify_es01_data: diff --git a/apps/dify/1.1.1/envs/default.env b/apps/dify/1.1.1/envs/default.env new file mode 100644 index 0000000..ddd3301 --- /dev/null +++ b/apps/dify/1.1.1/envs/default.env @@ -0,0 +1 @@ +ENV_FILE=.env diff --git a/apps/dify/1.1.1/envs/dify.env b/apps/dify/1.1.1/envs/dify.env new file mode 100644 index 0000000..9f6732e --- /dev/null +++ b/apps/dify/1.1.1/envs/dify.env @@ -0,0 +1,965 @@ +# ------------------------------ +# Environment Variables for API service & worker +# ------------------------------ + +# ------------------------------ +# Common Variables +# ------------------------------ + +# The backend URL of the console API, +# used to concatenate the authorization callback. +# If empty, it is the same domain. +# Example: https://api.console.dify.ai +CONSOLE_API_URL= + +# The front-end URL of the console web, +# used to concatenate some front-end addresses and for CORS configuration use. +# If empty, it is the same domain. +# Example: https://console.dify.ai +CONSOLE_WEB_URL= + +# Service API Url, +# used to display Service API Base Url to the front-end. +# If empty, it is the same domain. +# Example: https://api.dify.ai +SERVICE_API_URL= + +# WebApp API backend Url, +# used to declare the back-end URL for the front-end API. +# If empty, it is the same domain. +# Example: https://api.app.dify.ai +APP_API_URL= + +# WebApp Url, +# used to display WebAPP API Base Url to the front-end. +# If empty, it is the same domain. +# Example: https://app.dify.ai +APP_WEB_URL= + +# File preview or download Url prefix. +# used to display File preview or download Url to the front-end or as Multi-model inputs; +# Url is signed and has expiration time. +FILES_URL= + +# ------------------------------ +# Server Configuration +# ------------------------------ + +# The log level for the application. +# Supported values are `DEBUG`, `INFO`, `WARNING`, `ERROR`, `CRITICAL` +LOG_LEVEL=INFO +# Log file path +LOG_FILE=/app/logs/server.log +# Log file max size, the unit is MB +LOG_FILE_MAX_SIZE=20 +# Log file max backup count +LOG_FILE_BACKUP_COUNT=5 +# Log dateformat +LOG_DATEFORMAT=%Y-%m-%d %H:%M:%S +# Log Timezone +LOG_TZ=UTC + +# Debug mode, default is false. +# It is recommended to turn on this configuration for local development +# to prevent some problems caused by monkey patch. +DEBUG=false + +# Flask debug mode, it can output trace information at the interface when turned on, +# which is convenient for debugging. +FLASK_DEBUG=false + +# A secretkey that is used for securely signing the session cookie +# and encrypting sensitive information on the database. +# You can generate a strong key using `openssl rand -base64 42`. +SECRET_KEY=sk-9f73s3ljTXVcMT3Blb3ljTqtsKiGHXVcMT3BlbkFJLK7U + +# Password for admin user initialization. +# If left unset, admin user will not be prompted for a password +# when creating the initial admin account. +# The length of the password cannot exceed 30 charactors. +INIT_PASSWORD= + +# Deployment environment. +# Supported values are `PRODUCTION`, `TESTING`. Default is `PRODUCTION`. +# Testing environment. There will be a distinct color label on the front-end page, +# indicating that this environment is a testing environment. +DEPLOY_ENV=PRODUCTION + +# Whether to enable the version check policy. +# If set to empty, https://updates.dify.ai will be called for version check. +CHECK_UPDATE_URL=https://updates.dify.ai + +# Used to change the OpenAI base address, default is https://api.openai.com/v1. +# When OpenAI cannot be accessed in China, replace it with a domestic mirror address, +# or when a local model provides OpenAI compatible API, it can be replaced. +OPENAI_API_BASE=https://api.openai.com/v1 + +# When enabled, migrations will be executed prior to application startup +# and the application will start after the migrations have completed. +MIGRATION_ENABLED=true + +# File Access Time specifies a time interval in seconds for the file to be accessed. +# The default value is 300 seconds. +FILES_ACCESS_TIMEOUT=300 + +# Access token expiration time in minutes +ACCESS_TOKEN_EXPIRE_MINUTES=60 + +# Refresh token expiration time in days +REFRESH_TOKEN_EXPIRE_DAYS=30 + +# The maximum number of active requests for the application, where 0 means unlimited, should be a non-negative integer. +APP_MAX_ACTIVE_REQUESTS=0 +APP_MAX_EXECUTION_TIME=1200 + +# ------------------------------ +# Container Startup Related Configuration +# Only effective when starting with docker image or docker-compose. +# ------------------------------ + +# API service binding address, default: 0.0.0.0, i.e., all addresses can be accessed. +DIFY_BIND_ADDRESS=0.0.0.0 + +# API service binding port number, default 5001. +DIFY_PORT=5001 + +# The number of API server workers, i.e., the number of workers. +# Formula: number of cpu cores x 2 + 1 for sync, 1 for Gevent +# Reference: https://docs.gunicorn.org/en/stable/design.html#how-many-workers +SERVER_WORKER_AMOUNT=1 + +# Defaults to gevent. If using windows, it can be switched to sync or solo. +SERVER_WORKER_CLASS=gevent + +# Default number of worker connections, the default is 10. +SERVER_WORKER_CONNECTIONS=10 + +# Similar to SERVER_WORKER_CLASS. +# If using windows, it can be switched to sync or solo. +CELERY_WORKER_CLASS= + +# Request handling timeout. The default is 200, +# it is recommended to set it to 360 to support a longer sse connection time. +GUNICORN_TIMEOUT=360 + +# The number of Celery workers. The default is 1, and can be set as needed. +CELERY_WORKER_AMOUNT= + +# Flag indicating whether to enable autoscaling of Celery workers. +# +# Autoscaling is useful when tasks are CPU intensive and can be dynamically +# allocated and deallocated based on the workload. +# +# When autoscaling is enabled, the maximum and minimum number of workers can +# be specified. The autoscaling algorithm will dynamically adjust the number +# of workers within the specified range. +# +# Default is false (i.e., autoscaling is disabled). +# +# Example: +# CELERY_AUTO_SCALE=true +CELERY_AUTO_SCALE=false + +# The maximum number of Celery workers that can be autoscaled. +# This is optional and only used when autoscaling is enabled. +# Default is not set. +CELERY_MAX_WORKERS= + +# The minimum number of Celery workers that can be autoscaled. +# This is optional and only used when autoscaling is enabled. +# Default is not set. +CELERY_MIN_WORKERS= + +# API Tool configuration +API_TOOL_DEFAULT_CONNECT_TIMEOUT=10 +API_TOOL_DEFAULT_READ_TIMEOUT=60 + + +# ------------------------------ +# Database Configuration +# The database uses PostgreSQL. Please use the public schema. +# It is consistent with the configuration in the 'db' service below. +# ------------------------------ + +DB_USERNAME=postgres +DB_PASSWORD=difyai123456 +DB_HOST=db +DB_PORT=5432 +DB_DATABASE=dify +# The size of the database connection pool. +# The default is 30 connections, which can be appropriately increased. +SQLALCHEMY_POOL_SIZE=30 +# Database connection pool recycling time, the default is 3600 seconds. +SQLALCHEMY_POOL_RECYCLE=3600 +# Whether to print SQL, default is false. +SQLALCHEMY_ECHO=false + +# Maximum number of connections to the database +# Default is 100 +# +# Reference: https://www.postgresql.org/docs/current/runtime-config-connection.html#GUC-MAX-CONNECTIONS +POSTGRES_MAX_CONNECTIONS=100 + +# Sets the amount of shared memory used for postgres's shared buffers. +# Default is 128MB +# Recommended value: 25% of available memory +# Reference: https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-SHARED-BUFFERS +POSTGRES_SHARED_BUFFERS=128MB + +# Sets the amount of memory used by each database worker for working space. +# Default is 4MB +# +# Reference: https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-WORK-MEM +POSTGRES_WORK_MEM=4MB + +# Sets the amount of memory reserved for maintenance activities. +# Default is 64MB +# +# Reference: https://www.postgresql.org/docs/current/runtime-config-resource.html#GUC-MAINTENANCE-WORK-MEM +POSTGRES_MAINTENANCE_WORK_MEM=64MB + +# Sets the planner's assumption about the effective cache size. +# Default is 4096MB +# +# Reference: https://www.postgresql.org/docs/current/runtime-config-query.html#GUC-EFFECTIVE-CACHE-SIZE +POSTGRES_EFFECTIVE_CACHE_SIZE=4096MB + +# ------------------------------ +# Redis Configuration +# This Redis configuration is used for caching and for pub/sub during conversation. +# ------------------------------ + +REDIS_HOST=redis +REDIS_PORT=6379 +REDIS_USERNAME= +REDIS_PASSWORD=difyai123456 +REDIS_USE_SSL=false +REDIS_DB=0 + +# Whether to use Redis Sentinel mode. +# If set to true, the application will automatically discover and connect to the master node through Sentinel. +REDIS_USE_SENTINEL=false + +# List of Redis Sentinel nodes. If Sentinel mode is enabled, provide at least one Sentinel IP and port. +# Format: `:,:,:` +REDIS_SENTINELS= +REDIS_SENTINEL_SERVICE_NAME= +REDIS_SENTINEL_USERNAME= +REDIS_SENTINEL_PASSWORD= +REDIS_SENTINEL_SOCKET_TIMEOUT=0.1 + +# List of Redis Cluster nodes. If Cluster mode is enabled, provide at least one Cluster IP and port. +# Format: `:,:,:` +REDIS_USE_CLUSTERS=false +REDIS_CLUSTERS= +REDIS_CLUSTERS_PASSWORD= + +# ------------------------------ +# Celery Configuration +# ------------------------------ + +# Use redis as the broker, and redis db 1 for celery broker. +# Format as follows: `redis://:@:/` +# Example: redis://:difyai123456@redis:6379/1 +# If use Redis Sentinel, format as follows: `sentinel://:@:/` +# Example: sentinel://localhost:26379/1;sentinel://localhost:26380/1;sentinel://localhost:26381/1 +CELERY_BROKER_URL=redis://:difyai123456@redis:6379/1 +BROKER_USE_SSL=false + +# If you are using Redis Sentinel for high availability, configure the following settings. +CELERY_USE_SENTINEL=false +CELERY_SENTINEL_MASTER_NAME= +CELERY_SENTINEL_SOCKET_TIMEOUT=0.1 + +# ------------------------------ +# CORS Configuration +# Used to set the front-end cross-domain access policy. +# ------------------------------ + +# Specifies the allowed origins for cross-origin requests to the Web API, +# e.g. https://dify.app or * for all origins. +WEB_API_CORS_ALLOW_ORIGINS=* + +# Specifies the allowed origins for cross-origin requests to the console API, +# e.g. https://cloud.dify.ai or * for all origins. +CONSOLE_CORS_ALLOW_ORIGINS=* + +# ------------------------------ +# File Storage Configuration +# ------------------------------ + +# The type of storage to use for storing user files. +STORAGE_TYPE=opendal + +# Apache OpenDAL Configuration +# The configuration for OpenDAL consists of the following format: OPENDAL__. +# You can find all the service configurations (CONFIG_NAME) in the repository at: https://github.com/apache/opendal/tree/main/core/src/services. +# Dify will scan configurations starting with OPENDAL_ and automatically apply them. +# The scheme name for the OpenDAL storage. +OPENDAL_SCHEME=fs +# Configurations for OpenDAL Local File System. +OPENDAL_FS_ROOT=storage + +# S3 Configuration +# +S3_ENDPOINT= +S3_REGION=us-east-1 +S3_BUCKET_NAME=difyai +S3_ACCESS_KEY= +S3_SECRET_KEY= +# Whether to use AWS managed IAM roles for authenticating with the S3 service. +# If set to false, the access key and secret key must be provided. +S3_USE_AWS_MANAGED_IAM=false + +# Azure Blob Configuration +# +AZURE_BLOB_ACCOUNT_NAME=difyai +AZURE_BLOB_ACCOUNT_KEY=difyai +AZURE_BLOB_CONTAINER_NAME=difyai-container +AZURE_BLOB_ACCOUNT_URL=https://.blob.core.windows.net + +# Google Storage Configuration +# +GOOGLE_STORAGE_BUCKET_NAME=your-bucket-name +GOOGLE_STORAGE_SERVICE_ACCOUNT_JSON_BASE64= + +# The Alibaba Cloud OSS configurations, +# +ALIYUN_OSS_BUCKET_NAME=your-bucket-name +ALIYUN_OSS_ACCESS_KEY=your-access-key +ALIYUN_OSS_SECRET_KEY=your-secret-key +ALIYUN_OSS_ENDPOINT=https://oss-ap-southeast-1-internal.aliyuncs.com +ALIYUN_OSS_REGION=ap-southeast-1 +ALIYUN_OSS_AUTH_VERSION=v4 +# Don't start with '/'. OSS doesn't support leading slash in object names. +ALIYUN_OSS_PATH=your-path + +# Tencent COS Configuration +# +TENCENT_COS_BUCKET_NAME=your-bucket-name +TENCENT_COS_SECRET_KEY=your-secret-key +TENCENT_COS_SECRET_ID=your-secret-id +TENCENT_COS_REGION=your-region +TENCENT_COS_SCHEME=your-scheme + +# Oracle Storage Configuration +# +OCI_ENDPOINT=https://objectstorage.us-ashburn-1.oraclecloud.com +OCI_BUCKET_NAME=your-bucket-name +OCI_ACCESS_KEY=your-access-key +OCI_SECRET_KEY=your-secret-key +OCI_REGION=us-ashburn-1 + +# Huawei OBS Configuration +# +HUAWEI_OBS_BUCKET_NAME=your-bucket-name +HUAWEI_OBS_SECRET_KEY=your-secret-key +HUAWEI_OBS_ACCESS_KEY=your-access-key +HUAWEI_OBS_SERVER=your-server-url + +# Volcengine TOS Configuration +# +VOLCENGINE_TOS_BUCKET_NAME=your-bucket-name +VOLCENGINE_TOS_SECRET_KEY=your-secret-key +VOLCENGINE_TOS_ACCESS_KEY=your-access-key +VOLCENGINE_TOS_ENDPOINT=your-server-url +VOLCENGINE_TOS_REGION=your-region + +# Baidu OBS Storage Configuration +# +BAIDU_OBS_BUCKET_NAME=your-bucket-name +BAIDU_OBS_SECRET_KEY=your-secret-key +BAIDU_OBS_ACCESS_KEY=your-access-key +BAIDU_OBS_ENDPOINT=your-server-url + +# Supabase Storage Configuration +# +SUPABASE_BUCKET_NAME=your-bucket-name +SUPABASE_API_KEY=your-access-key +SUPABASE_URL=your-server-url + +# ------------------------------ +# Vector Database Configuration +# ------------------------------ + +# The type of vector store to use. +# Supported values are `weaviate`, `qdrant`, `milvus`, `myscale`, `relyt`, `pgvector`, `pgvecto-rs`, `chroma`, `opensearch`, `tidb_vector`, `oracle`, `tencent`, `elasticsearch`, `elasticsearch-ja`, `analyticdb`, `couchbase`, `vikingdb`, `oceanbase`. +VECTOR_STORE=weaviate + +# The Weaviate endpoint URL. Only available when VECTOR_STORE is `weaviate`. +WEAVIATE_ENDPOINT=http://weaviate:8080 +WEAVIATE_API_KEY=WVF5YThaHlkYwhGUSmCRgsX3tD5ngdN8pkih + +# The Qdrant endpoint URL. Only available when VECTOR_STORE is `qdrant`. +QDRANT_URL=http://qdrant:6333 +QDRANT_API_KEY=difyai123456 +QDRANT_CLIENT_TIMEOUT=20 +QDRANT_GRPC_ENABLED=false +QDRANT_GRPC_PORT=6334 + +# Milvus configuration Only available when VECTOR_STORE is `milvus`. +# The milvus uri. +MILVUS_URI=http://127.0.0.1:19530 +MILVUS_TOKEN= +MILVUS_USER=root +MILVUS_PASSWORD=Milvus +MILVUS_ENABLE_HYBRID_SEARCH=False + +# MyScale configuration, only available when VECTOR_STORE is `myscale` +# For multi-language support, please set MYSCALE_FTS_PARAMS with referring to: +# https://myscale.com/docs/en/text-search/#understanding-fts-index-parameters +MYSCALE_HOST=myscale +MYSCALE_PORT=8123 +MYSCALE_USER=default +MYSCALE_PASSWORD= +MYSCALE_DATABASE=dify +MYSCALE_FTS_PARAMS= + +# Couchbase configurations, only available when VECTOR_STORE is `couchbase` +# The connection string must include hostname defined in the docker-compose file (couchbase-server in this case) +COUCHBASE_CONNECTION_STRING=couchbase://couchbase-server +COUCHBASE_USER=Administrator +COUCHBASE_PASSWORD=password +COUCHBASE_BUCKET_NAME=Embeddings +COUCHBASE_SCOPE_NAME=_default + +# pgvector configurations, only available when VECTOR_STORE is `pgvector` +PGVECTOR_HOST=pgvector +PGVECTOR_PORT=5432 +PGVECTOR_USER=postgres +PGVECTOR_PASSWORD=difyai123456 +PGVECTOR_DATABASE=dify +PGVECTOR_MIN_CONNECTION=1 +PGVECTOR_MAX_CONNECTION=5 + +# pgvecto-rs configurations, only available when VECTOR_STORE is `pgvecto-rs` +PGVECTO_RS_HOST=pgvecto-rs +PGVECTO_RS_PORT=5432 +PGVECTO_RS_USER=postgres +PGVECTO_RS_PASSWORD=difyai123456 +PGVECTO_RS_DATABASE=dify + +# analyticdb configurations, only available when VECTOR_STORE is `analyticdb` +ANALYTICDB_KEY_ID=your-ak +ANALYTICDB_KEY_SECRET=your-sk +ANALYTICDB_REGION_ID=cn-hangzhou +ANALYTICDB_INSTANCE_ID=gp-ab123456 +ANALYTICDB_ACCOUNT=testaccount +ANALYTICDB_PASSWORD=testpassword +ANALYTICDB_NAMESPACE=dify +ANALYTICDB_NAMESPACE_PASSWORD=difypassword +ANALYTICDB_HOST=gp-test.aliyuncs.com +ANALYTICDB_PORT=5432 +ANALYTICDB_MIN_CONNECTION=1 +ANALYTICDB_MAX_CONNECTION=5 + +# TiDB vector configurations, only available when VECTOR_STORE is `tidb` +TIDB_VECTOR_HOST=tidb +TIDB_VECTOR_PORT=4000 +TIDB_VECTOR_USER= +TIDB_VECTOR_PASSWORD= +TIDB_VECTOR_DATABASE=dify + +# Tidb on qdrant configuration, only available when VECTOR_STORE is `tidb_on_qdrant` +TIDB_ON_QDRANT_URL=http://127.0.0.1 +TIDB_ON_QDRANT_API_KEY=dify +TIDB_ON_QDRANT_CLIENT_TIMEOUT=20 +TIDB_ON_QDRANT_GRPC_ENABLED=false +TIDB_ON_QDRANT_GRPC_PORT=6334 +TIDB_PUBLIC_KEY=dify +TIDB_PRIVATE_KEY=dify +TIDB_API_URL=http://127.0.0.1 +TIDB_IAM_API_URL=http://127.0.0.1 +TIDB_REGION=regions/aws-us-east-1 +TIDB_PROJECT_ID=dify +TIDB_SPEND_LIMIT=100 + +# Chroma configuration, only available when VECTOR_STORE is `chroma` +CHROMA_HOST=127.0.0.1 +CHROMA_PORT=8000 +CHROMA_TENANT=default_tenant +CHROMA_DATABASE=default_database +CHROMA_AUTH_PROVIDER=chromadb.auth.token_authn.TokenAuthClientProvider +CHROMA_AUTH_CREDENTIALS= + +# Oracle configuration, only available when VECTOR_STORE is `oracle` +ORACLE_HOST=oracle +ORACLE_PORT=1521 +ORACLE_USER=dify +ORACLE_PASSWORD=dify +ORACLE_DATABASE=FREEPDB1 + +# relyt configurations, only available when VECTOR_STORE is `relyt` +RELYT_HOST=db +RELYT_PORT=5432 +RELYT_USER=postgres +RELYT_PASSWORD=difyai123456 +RELYT_DATABASE=postgres + +# open search configuration, only available when VECTOR_STORE is `opensearch` +OPENSEARCH_HOST=opensearch +OPENSEARCH_PORT=9200 +OPENSEARCH_USER=admin +OPENSEARCH_PASSWORD=admin +OPENSEARCH_SECURE=true + +# tencent vector configurations, only available when VECTOR_STORE is `tencent` +TENCENT_VECTOR_DB_URL=http://127.0.0.1 +TENCENT_VECTOR_DB_API_KEY=dify +TENCENT_VECTOR_DB_TIMEOUT=30 +TENCENT_VECTOR_DB_USERNAME=dify +TENCENT_VECTOR_DB_DATABASE=dify +TENCENT_VECTOR_DB_SHARD=1 +TENCENT_VECTOR_DB_REPLICAS=2 + +# ElasticSearch configuration, only available when VECTOR_STORE is `elasticsearch` +ELASTICSEARCH_HOST=0.0.0.0 +ELASTICSEARCH_PORT=9200 +ELASTICSEARCH_USERNAME=elastic +ELASTICSEARCH_PASSWORD=elastic +KIBANA_PORT=5601 + +# baidu vector configurations, only available when VECTOR_STORE is `baidu` +BAIDU_VECTOR_DB_ENDPOINT=http://127.0.0.1:5287 +BAIDU_VECTOR_DB_CONNECTION_TIMEOUT_MS=30000 +BAIDU_VECTOR_DB_ACCOUNT=root +BAIDU_VECTOR_DB_API_KEY=dify +BAIDU_VECTOR_DB_DATABASE=dify +BAIDU_VECTOR_DB_SHARD=1 +BAIDU_VECTOR_DB_REPLICAS=3 + +# VikingDB configurations, only available when VECTOR_STORE is `vikingdb` +VIKINGDB_ACCESS_KEY=your-ak +VIKINGDB_SECRET_KEY=your-sk +VIKINGDB_REGION=cn-shanghai +VIKINGDB_HOST=api-vikingdb.xxx.volces.com +VIKINGDB_SCHEMA=http +VIKINGDB_CONNECTION_TIMEOUT=30 +VIKINGDB_SOCKET_TIMEOUT=30 + +# Lindorm configuration, only available when VECTOR_STORE is `lindorm` +LINDORM_URL=http://lindorm:30070 +LINDORM_USERNAME=lindorm +LINDORM_PASSWORD=lindorm + +# OceanBase Vector configuration, only available when VECTOR_STORE is `oceanbase` +OCEANBASE_VECTOR_HOST=oceanbase +OCEANBASE_VECTOR_PORT=2881 +OCEANBASE_VECTOR_USER=root@test +OCEANBASE_VECTOR_PASSWORD=difyai123456 +OCEANBASE_VECTOR_DATABASE=test +OCEANBASE_CLUSTER_NAME=difyai +OCEANBASE_MEMORY_LIMIT=6G + +# Upstash Vector configuration, only available when VECTOR_STORE is `upstash` +UPSTASH_VECTOR_URL=https://xxx-vector.upstash.io +UPSTASH_VECTOR_TOKEN=dify + +# ------------------------------ +# Knowledge Configuration +# ------------------------------ + +# Upload file size limit, default 15M. +UPLOAD_FILE_SIZE_LIMIT=15 + +# The maximum number of files that can be uploaded at a time, default 5. +UPLOAD_FILE_BATCH_LIMIT=5 + +# ETL type, support: `dify`, `Unstructured` +# `dify` Dify's proprietary file extraction scheme +# `Unstructured` Unstructured.io file extraction scheme +ETL_TYPE=dify + +# Unstructured API path and API key, needs to be configured when ETL_TYPE is Unstructured +# Or using Unstructured for document extractor node for pptx. +# For example: http://unstructured:8000/general/v0/general +UNSTRUCTURED_API_URL= +UNSTRUCTURED_API_KEY= +SCARF_NO_ANALYTICS=true + +# ------------------------------ +# Model Configuration +# ------------------------------ + +# The maximum number of tokens allowed for prompt generation. +# This setting controls the upper limit of tokens that can be used by the LLM +# when generating a prompt in the prompt generation tool. +# Default: 512 tokens. +PROMPT_GENERATION_MAX_TOKENS=512 + +# The maximum number of tokens allowed for code generation. +# This setting controls the upper limit of tokens that can be used by the LLM +# when generating code in the code generation tool. +# Default: 1024 tokens. +CODE_GENERATION_MAX_TOKENS=1024 + +# ------------------------------ +# Multi-modal Configuration +# ------------------------------ + +# The format of the image/video/audio/document sent when the multi-modal model is input, +# the default is base64, optional url. +# The delay of the call in url mode will be lower than that in base64 mode. +# It is generally recommended to use the more compatible base64 mode. +# If configured as url, you need to configure FILES_URL as an externally accessible address so that the multi-modal model can access the image/video/audio/document. +MULTIMODAL_SEND_FORMAT=base64 +# Upload image file size limit, default 10M. +UPLOAD_IMAGE_FILE_SIZE_LIMIT=10 +# Upload video file size limit, default 100M. +UPLOAD_VIDEO_FILE_SIZE_LIMIT=100 +# Upload audio file size limit, default 50M. +UPLOAD_AUDIO_FILE_SIZE_LIMIT=50 + +# ------------------------------ +# Sentry Configuration +# Used for application monitoring and error log tracking. +# ------------------------------ +SENTRY_DSN= + +# API Service Sentry DSN address, default is empty, when empty, +# all monitoring information is not reported to Sentry. +# If not set, Sentry error reporting will be disabled. +API_SENTRY_DSN= +# API Service The reporting ratio of Sentry events, if it is 0.01, it is 1%. +API_SENTRY_TRACES_SAMPLE_RATE=1.0 +# API Service The reporting ratio of Sentry profiles, if it is 0.01, it is 1%. +API_SENTRY_PROFILES_SAMPLE_RATE=1.0 + +# Web Service Sentry DSN address, default is empty, when empty, +# all monitoring information is not reported to Sentry. +# If not set, Sentry error reporting will be disabled. +WEB_SENTRY_DSN= + +# ------------------------------ +# Notion Integration Configuration +# Variables can be obtained by applying for Notion integration: https://www.notion.so/my-integrations +# ------------------------------ + +# Configure as "public" or "internal". +# Since Notion's OAuth redirect URL only supports HTTPS, +# if deploying locally, please use Notion's internal integration. +NOTION_INTEGRATION_TYPE=public +# Notion OAuth client secret (used for public integration type) +NOTION_CLIENT_SECRET= +# Notion OAuth client id (used for public integration type) +NOTION_CLIENT_ID= +# Notion internal integration secret. +# If the value of NOTION_INTEGRATION_TYPE is "internal", +# you need to configure this variable. +NOTION_INTERNAL_SECRET= + +# ------------------------------ +# Mail related configuration +# ------------------------------ + +# Mail type, support: resend, smtp +MAIL_TYPE=resend + +# Default send from email address, if not specified +MAIL_DEFAULT_SEND_FROM= + +# API-Key for the Resend email provider, used when MAIL_TYPE is `resend`. +RESEND_API_URL=https://api.resend.com +RESEND_API_KEY=your-resend-api-key + + +# SMTP server configuration, used when MAIL_TYPE is `smtp` +SMTP_SERVER= +SMTP_PORT=465 +SMTP_USERNAME= +SMTP_PASSWORD= +SMTP_USE_TLS=true +SMTP_OPPORTUNISTIC_TLS=false + +# ------------------------------ +# Others Configuration +# ------------------------------ + +# Maximum length of segmentation tokens for indexing +INDEXING_MAX_SEGMENTATION_TOKENS_LENGTH=4000 + +# Member invitation link valid time (hours), +# Default: 72. +INVITE_EXPIRY_HOURS=72 + +# Reset password token valid time (minutes), +RESET_PASSWORD_TOKEN_EXPIRY_MINUTES=5 + +# The sandbox service endpoint. +CODE_EXECUTION_ENDPOINT=http://sandbox:8194 +CODE_EXECUTION_API_KEY=dify-sandbox +CODE_MAX_NUMBER=9223372036854775807 +CODE_MIN_NUMBER=-9223372036854775808 +CODE_MAX_DEPTH=5 +CODE_MAX_PRECISION=20 +CODE_MAX_STRING_LENGTH=80000 +CODE_MAX_STRING_ARRAY_LENGTH=30 +CODE_MAX_OBJECT_ARRAY_LENGTH=30 +CODE_MAX_NUMBER_ARRAY_LENGTH=1000 +CODE_EXECUTION_CONNECT_TIMEOUT=10 +CODE_EXECUTION_READ_TIMEOUT=60 +CODE_EXECUTION_WRITE_TIMEOUT=10 +TEMPLATE_TRANSFORM_MAX_LENGTH=80000 + +# Workflow runtime configuration +WORKFLOW_MAX_EXECUTION_STEPS=500 +WORKFLOW_MAX_EXECUTION_TIME=1200 +WORKFLOW_CALL_MAX_DEPTH=5 +MAX_VARIABLE_SIZE=204800 +WORKFLOW_PARALLEL_DEPTH_LIMIT=3 +WORKFLOW_FILE_UPLOAD_LIMIT=10 + +# HTTP request node in workflow configuration +HTTP_REQUEST_NODE_MAX_BINARY_SIZE=10485760 +HTTP_REQUEST_NODE_MAX_TEXT_SIZE=1048576 + +# SSRF Proxy server HTTP URL +SSRF_PROXY_HTTP_URL=http://ssrf_proxy:3128 +# SSRF Proxy server HTTPS URL +SSRF_PROXY_HTTPS_URL=http://ssrf_proxy:3128 + +# ------------------------------ +# Environment Variables for web Service +# ------------------------------ + +# The timeout for the text generation in millisecond +TEXT_GENERATION_TIMEOUT_MS=60000 + +# ------------------------------ +# Environment Variables for db Service +# ------------------------------ + +PGUSER=${DB_USERNAME} +# The password for the default postgres user. +POSTGRES_PASSWORD=${DB_PASSWORD} +# The name of the default postgres database. +POSTGRES_DB=${DB_DATABASE} +# postgres data directory +PGDATA=/var/lib/postgresql/data/pgdata + +# ------------------------------ +# Environment Variables for sandbox Service +# ------------------------------ + +# The API key for the sandbox service +SANDBOX_API_KEY=dify-sandbox +# The mode in which the Gin framework runs +SANDBOX_GIN_MODE=release +# The timeout for the worker in seconds +SANDBOX_WORKER_TIMEOUT=15 +# Enable network for the sandbox service +SANDBOX_ENABLE_NETWORK=true +# HTTP proxy URL for SSRF protection +SANDBOX_HTTP_PROXY=http://ssrf_proxy:3128 +# HTTPS proxy URL for SSRF protection +SANDBOX_HTTPS_PROXY=http://ssrf_proxy:3128 +# The port on which the sandbox service runs +SANDBOX_PORT=8194 + +# ------------------------------ +# Environment Variables for weaviate Service +# (only used when VECTOR_STORE is weaviate) +# ------------------------------ +WEAVIATE_PERSISTENCE_DATA_PATH=/var/lib/weaviate +WEAVIATE_QUERY_DEFAULTS_LIMIT=25 +WEAVIATE_AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED=true +WEAVIATE_DEFAULT_VECTORIZER_MODULE=none +WEAVIATE_CLUSTER_HOSTNAME=node1 +WEAVIATE_AUTHENTICATION_APIKEY_ENABLED=true +WEAVIATE_AUTHENTICATION_APIKEY_ALLOWED_KEYS=WVF5YThaHlkYwhGUSmCRgsX3tD5ngdN8pkih +WEAVIATE_AUTHENTICATION_APIKEY_USERS=hello@dify.ai +WEAVIATE_AUTHORIZATION_ADMINLIST_ENABLED=true +WEAVIATE_AUTHORIZATION_ADMINLIST_USERS=hello@dify.ai + +# ------------------------------ +# Environment Variables for Chroma +# (only used when VECTOR_STORE is chroma) +# ------------------------------ + +# Authentication credentials for Chroma server +CHROMA_SERVER_AUTHN_CREDENTIALS=difyai123456 +# Authentication provider for Chroma server +CHROMA_SERVER_AUTHN_PROVIDER=chromadb.auth.token_authn.TokenAuthenticationServerProvider +# Persistence setting for Chroma server +CHROMA_IS_PERSISTENT=TRUE + +# ------------------------------ +# Environment Variables for Oracle Service +# (only used when VECTOR_STORE is Oracle) +# ------------------------------ +ORACLE_PWD=Dify123456 +ORACLE_CHARACTERSET=AL32UTF8 + +# ------------------------------ +# Environment Variables for milvus Service +# (only used when VECTOR_STORE is milvus) +# ------------------------------ +# ETCD configuration for auto compaction mode +ETCD_AUTO_COMPACTION_MODE=revision +# ETCD configuration for auto compaction retention in terms of number of revisions +ETCD_AUTO_COMPACTION_RETENTION=1000 +# ETCD configuration for backend quota in bytes +ETCD_QUOTA_BACKEND_BYTES=4294967296 +# ETCD configuration for the number of changes before triggering a snapshot +ETCD_SNAPSHOT_COUNT=50000 +# MinIO access key for authentication +MINIO_ACCESS_KEY=minioadmin +# MinIO secret key for authentication +MINIO_SECRET_KEY=minioadmin +# ETCD service endpoints +ETCD_ENDPOINTS=etcd:2379 +# MinIO service address +MINIO_ADDRESS=minio:9000 +# Enable or disable security authorization +MILVUS_AUTHORIZATION_ENABLED=true + +# ------------------------------ +# Environment Variables for pgvector / pgvector-rs Service +# (only used when VECTOR_STORE is pgvector / pgvector-rs) +# ------------------------------ +PGVECTOR_PGUSER=postgres +# The password for the default postgres user. +PGVECTOR_POSTGRES_PASSWORD=difyai123456 +# The name of the default postgres database. +PGVECTOR_POSTGRES_DB=dify +# postgres data directory +PGVECTOR_PGDATA=/var/lib/postgresql/data/pgdata + +# ------------------------------ +# Environment Variables for opensearch +# (only used when VECTOR_STORE is opensearch) +# ------------------------------ +OPENSEARCH_DISCOVERY_TYPE=single-node +OPENSEARCH_BOOTSTRAP_MEMORY_LOCK=true +OPENSEARCH_JAVA_OPTS_MIN=512m +OPENSEARCH_JAVA_OPTS_MAX=1024m +OPENSEARCH_INITIAL_ADMIN_PASSWORD=Qazwsxedc!@#123 +OPENSEARCH_MEMLOCK_SOFT=-1 +OPENSEARCH_MEMLOCK_HARD=-1 +OPENSEARCH_NOFILE_SOFT=65536 +OPENSEARCH_NOFILE_HARD=65536 + +# ------------------------------ +# Environment Variables for Nginx reverse proxy +# ------------------------------ +NGINX_SERVER_NAME=_ +NGINX_HTTPS_ENABLED=false +# HTTP port +NGINX_PORT=80 +# SSL settings are only applied when HTTPS_ENABLED is true +NGINX_SSL_PORT=443 +# if HTTPS_ENABLED is true, you're required to add your own SSL certificates/keys to the `./nginx/ssl` directory +# and modify the env vars below accordingly. +NGINX_SSL_CERT_FILENAME=dify.crt +NGINX_SSL_CERT_KEY_FILENAME=dify.key +NGINX_SSL_PROTOCOLS=TLSv1.1 TLSv1.2 TLSv1.3 + +# Nginx performance tuning +NGINX_WORKER_PROCESSES=auto +NGINX_CLIENT_MAX_BODY_SIZE=15M +NGINX_KEEPALIVE_TIMEOUT=65 + +# Proxy settings +NGINX_PROXY_READ_TIMEOUT=3600s +NGINX_PROXY_SEND_TIMEOUT=3600s + +# Set true to accept requests for /.well-known/acme-challenge/ +NGINX_ENABLE_CERTBOT_CHALLENGE=false + +# ------------------------------ +# Certbot Configuration +# ------------------------------ + +# Email address (required to get certificates from Let's Encrypt) +CERTBOT_EMAIL=your_email@example.com + +# Domain name +CERTBOT_DOMAIN=your_domain.com + +# certbot command options +# i.e: --force-renewal --dry-run --test-cert --debug +CERTBOT_OPTIONS= + +# ------------------------------ +# Environment Variables for SSRF Proxy +# ------------------------------ +SSRF_HTTP_PORT=3128 +SSRF_COREDUMP_DIR=/var/spool/squid +SSRF_REVERSE_PROXY_PORT=8194 +SSRF_SANDBOX_HOST=sandbox +SSRF_DEFAULT_TIME_OUT=5 +SSRF_DEFAULT_CONNECT_TIME_OUT=5 +SSRF_DEFAULT_READ_TIME_OUT=5 +SSRF_DEFAULT_WRITE_TIME_OUT=5 + +# ------------------------------ +# docker env var for specifying vector db type at startup +# (based on the vector db type, the corresponding docker +# compose profile will be used) +# if you want to use unstructured, add ',unstructured' to the end +# ------------------------------ +COMPOSE_PROFILES=${VECTOR_STORE:-weaviate} + +# ------------------------------ +# Docker Compose Service Expose Host Port Configurations +# ------------------------------ +EXPOSE_NGINX_PORT=80 +EXPOSE_NGINX_SSL_PORT=443 + +# ---------------------------------------------------------------------------- +# ModelProvider & Tool Position Configuration +# Used to specify the model providers and tools that can be used in the app. +# ---------------------------------------------------------------------------- + +# Pin, include, and exclude tools +# Use comma-separated values with no spaces between items. +# Example: POSITION_TOOL_PINS=bing,google +POSITION_TOOL_PINS= +POSITION_TOOL_INCLUDES= +POSITION_TOOL_EXCLUDES= + +# Pin, include, and exclude model providers +# Use comma-separated values with no spaces between items. +# Example: POSITION_PROVIDER_PINS=openai,openllm +POSITION_PROVIDER_PINS= +POSITION_PROVIDER_INCLUDES= +POSITION_PROVIDER_EXCLUDES= + +# CSP https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP +CSP_WHITELIST= + +# Enable or disable create tidb service job +CREATE_TIDB_SERVICE_JOB_ENABLED=false + +# Maximum number of submitted thread count in a ThreadPool for parallel node execution +MAX_SUBMIT_COUNT=100 + +# The maximum number of top-k value for RAG. +TOP_K_MAX_VALUE=10 + +# ------------------------------ +# Plugin Daemon Configuration +# ------------------------------ + +DB_PLUGIN_DATABASE=dify_plugin +EXPOSE_PLUGIN_DAEMON_PORT=5002 +PLUGIN_DAEMON_PORT=5002 +PLUGIN_DAEMON_KEY=lYkiYYT6owG+71oLerGzA7GXCgOT++6ovaezWAjpCjf+Sjc3ZtU+qUEi +PLUGIN_DAEMON_URL=http://plugin_daemon:5002 +PLUGIN_MAX_PACKAGE_SIZE=52428800 +PLUGIN_PPROF_ENABLED=false + +PLUGIN_DEBUGGING_HOST=0.0.0.0 +PLUGIN_DEBUGGING_PORT=5003 +EXPOSE_PLUGIN_DEBUGGING_HOST=localhost +EXPOSE_PLUGIN_DEBUGGING_PORT=5003 + +PLUGIN_DIFY_INNER_API_KEY=QaHbTe77CtuXmsfyhR7+vRjI/+XbV1AaFy691iy+kGDv2Jvy0/eAh8Y1 +PLUGIN_DIFY_INNER_API_URL=http://api:5001 + +ENDPOINT_URL_TEMPLATE=http://localhost/e/{hook_id} + +MARKETPLACE_ENABLED=true +MARKETPLACE_API_URL=https://marketplace.dify.ai + +FORCE_VERIFYING_SIGNATURE=true diff --git a/apps/dify/1.1.1/envs/global.env b/apps/dify/1.1.1/envs/global.env new file mode 100644 index 0000000..1dcc4aa --- /dev/null +++ b/apps/dify/1.1.1/envs/global.env @@ -0,0 +1 @@ +TZ=Asia/Shanghai \ No newline at end of file diff --git a/apps/dify/1.1.1/scripts/init.sh b/apps/dify/1.1.1/scripts/init.sh new file mode 100644 index 0000000..085059f --- /dev/null +++ b/apps/dify/1.1.1/scripts/init.sh @@ -0,0 +1,36 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + # setup-1 add default values + CURRENT_DIR=$(pwd) + sed -i '/^ENV_FILE=/d' .env + sed -i '/^GLOBAL_ENV_FILE=/d' .env + echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env + echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env + echo "APP_ENV_FILE=${CURRENT_DIR}/envs/dify.env" >> .env + + # setup-2 update dir permissions + mkdir -p "$DIFY_ROOT_PATH" + + cp -r conf/. "$DIFY_ROOT_PATH/" + + # setup-3 sync environment variables + env_source="envs/dify.env" + if [ -f "$env_source" ]; then + while IFS='=' read -r key value; do + if [[ -z "$key" || "$key" =~ ^# ]]; then + continue + fi + if ! grep -q "^$key=" .env; then + echo "$key=$value" >> .env + fi + done < "$env_source" + fi + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/apps/dify/1.1.1/scripts/uninstall.sh b/apps/dify/1.1.1/scripts/uninstall.sh new file mode 100644 index 0000000..c86c4fb --- /dev/null +++ b/apps/dify/1.1.1/scripts/uninstall.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/apps/dify/1.1.1/scripts/upgrade.sh b/apps/dify/1.1.1/scripts/upgrade.sh new file mode 100644 index 0000000..ea92b06 --- /dev/null +++ b/apps/dify/1.1.1/scripts/upgrade.sh @@ -0,0 +1,47 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + # setup-1 add default values + CURRENT_DIR=$(pwd) + sed -i '/^ENV_FILE=/d' .env + sed -i '/^GLOBAL_ENV_FILE=/d' .env + echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env + echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env + echo "APP_ENV_FILE=${CURRENT_DIR}/envs/dify.env" >> .env + + # setup-2 update dir permissions + mkdir -p "$DIFY_ROOT_PATH" + + if [ -d "conf" ]; then + find conf -type f | while read -r file; do + dest="$DIFY_ROOT_PATH/${file#conf/}" + if [ ! -e "$dest" ]; then + mkdir -p "$(dirname "$dest")" + cp "$file" "$dest" + fi + done + echo "Conf files copied to $DIFY_ROOT_PATH." + else + echo "Warning: conf directory not found." + fi + + # setup-3 sync environment variables + env_source="envs/dify.env" + if [ -f "$env_source" ]; then + while IFS='=' read -r key value; do + if [[ -z "$key" || "$key" =~ ^# ]]; then + continue + fi + if ! grep -q "^$key=" .env; then + echo "$key=$value" >> .env + fi + done < "$env_source" + fi + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/apps/dify/README.md b/apps/dify/README.md new file mode 100644 index 0000000..d38c5da --- /dev/null +++ b/apps/dify/README.md @@ -0,0 +1,95 @@ +Dify 是一个开源的 LLM 应用开发平台。其直观的界面结合了 AI 工作流、RAG 管道、Agent、模型管理、可观测性功能等,让您可以快速从原型到生产。以下是其核心功能列表: +

+ +![demo](https://raw.githubusercontent.com/langgenius/dify/refs/heads/main/images/demo.png) + +**1. 工作流**: + 在画布上构建和测试功能强大的 AI 工作流程,利用以下所有功能以及更多功能。 + +**2. 全面的模型支持**: + 与数百种专有/开源 LLMs 以及数十种推理提供商和自托管解决方案无缝集成,涵盖 GPT、Mistral、Llama3 以及任何与 OpenAI API 兼容的模型。完整的支持模型提供商列表可在[此处](https://docs.dify.ai/getting-started/readme/model-providers)找到。 + +![providers-v5](https://github.com/langgenius/dify/assets/13230914/5a17bdbe-097a-4100-8363-40255b70f6e3) + +**3. Prompt IDE**: + 用于制作提示、比较模型性能以及向基于聊天的应用程序添加其他功能(如文本转语音)的直观界面。 + +**4. RAG Pipeline**: + 广泛的 RAG 功能,涵盖从文档摄入到检索的所有内容,支持从 PDF、PPT 和其他常见文档格式中提取文本的开箱即用的支持。 + +**5. Agent 智能体**: + 您可以基于 LLM 函数调用或 ReAct 定义 Agent,并为 Agent 添加预构建或自定义工具。Dify 为 AI Agent 提供了50多种内置工具,如谷歌搜索、DALL·E、Stable Diffusion 和 WolframAlpha 等。 + +**6. LLMOps**: + 随时间监视和分析应用程序日志和性能。您可以根据生产数据和标注持续改进提示、数据集和模型。 + +**7. 后端即服务**: + 所有 Dify 的功能都带有相应的 API,因此您可以轻松地将 Dify 集成到自己的业务逻辑中。 + + +## 功能比较 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
功能Dify.AILangChainFlowiseOpenAI Assistant API
编程方法API + 应用程序导向Python 代码应用程序导向API 导向
支持的 LLMs丰富多样丰富多样丰富多样仅限 OpenAI
RAG引擎
Agent
工作流
可观测性
企业功能(SSO/访问控制)
本地部署
diff --git a/apps/dify/data.yml b/apps/dify/data.yml new file mode 100644 index 0000000..09a6959 --- /dev/null +++ b/apps/dify/data.yml @@ -0,0 +1,19 @@ +name: Dify +tags: + - AI / 大模型 +title: Dify 是一个开源的 LLM 应用开发平台 +description: Dify 是一个开源的 LLM 应用开发平台。支持 AI 工作流、RAG 管道、Agent、模型管理、可观测性等功能 +additionalProperties: + key: dify + name: Dify + tags: + - AI + shortDescZh: Dify 是一个开源的 LLM 应用开发平台 + shortDescEn: Dify is an open-source LLM application development platform + type: tool + crossVersionUpdate: true + limit: 0 + recommend: 0 + website: https://dify.ai/ + github: https://github.com/langgenius/dify/ + document: https://docs.dify.ai/ diff --git a/apps/dify/logo.png b/apps/dify/logo.png new file mode 100644 index 0000000..82eaea8 Binary files /dev/null and b/apps/dify/logo.png differ diff --git a/apps/diun/README.md b/apps/diun/README.md new file mode 100644 index 0000000..cb0ee06 --- /dev/null +++ b/apps/diun/README.md @@ -0,0 +1,82 @@ +# Diun + +Diun 是一个用于监控 Docker 镜像更新并发送通知的命令行工具。 + +## 功能特性 + +- 自动监控 Docker 镜像更新 +- 支持多种通知方式(Discord、Telegram、Slack、邮件等) +- 支持多种提供者(Docker、Kubernetes、Swarm、Nomad等) +- 基于 Cron 表达式的调度 +- 支持多种架构(amd64、arm64、arm/v6、arm/v7等) +- 轻量级设计,资源占用少 + +## 使用方法 + +1. 部署后 Diun 会自动开始监控 Docker 镜像 +2. 默认每6小时检查一次镜像更新 +3. 当检测到镜像更新时,会发送通知 +4. 通过 Docker 标签 `diun.enable=true` 控制哪些容器被监控 + +## 配置说明 + +- **时区**:Asia/Shanghai(上海时区) +- **数据存储**:`./data` 目录包含 bbolt 数据库 +- **配置文件**:`./diun.yml` 包含所有监控和通知配置 + +## 默认配置 + +应用使用以下默认配置: + +```yaml +watch: + workers: 20 + schedule: "0 */6 * * *" + firstCheckNotif: false + +providers: + docker: + watchByDefault: true +``` + +## 自定义配置 + +如需自定义监控、通知等配置,请编辑 `diun.yml` 文件。参考官方文档进行配置: + +- [配置概述](https://crazymax.dev/diun/configuration/overview/) +- [通知配置](https://crazymax.dev/diun/notifications/) +- [提供者配置](https://crazymax.dev/diun/providers/) + +## 支持的提供者 + +- **Docker**:监控 Docker 容器和镜像 +- **Kubernetes**:监控 Kubernetes 集群 +- **Swarm**:监控 Docker Swarm 服务 +- **Nomad**:监控 HashiCorp Nomad 任务 +- **Dockerfile**:监控 Dockerfile 中的基础镜像 +- **File**:从文件读取镜像列表 + +## 支持的通知方式 + +- Discord、Telegram、Slack +- 邮件、Matrix、MQTT +- Pushover、Rocket.Chat +- Webhook、Script、Signal +- Gotify、Ntfy、Teams + +## 监控配置 + +要监控特定的 Docker 容器,在容器标签中添加: + +```yaml +labels: + - "diun.enable=true" + - "diun.watch_repo=true" # 可选,监控仓库更新 +``` + +## 相关链接 + +- [官方网站](https://crazymax.dev/diun/) +- [GitHub 项目](https://github.com/crazy-max/diun) +- [Docker Hub](https://hub.docker.com/r/crazymax/diun/) +- [基础示例](https://crazymax.dev/diun/usage/basic-example/) \ No newline at end of file diff --git a/apps/diun/README_en.md b/apps/diun/README_en.md new file mode 100644 index 0000000..f7742d7 --- /dev/null +++ b/apps/diun/README_en.md @@ -0,0 +1,82 @@ +# Diun + +Diun is a CLI tool to monitor Docker image updates and send notifications. + +## Features + +- Automatically monitor Docker image updates +- Support multiple notification methods (Discord, Telegram, Slack, Email, etc.) +- Support multiple providers (Docker, Kubernetes, Swarm, Nomad, etc.) +- Cron-based scheduling +- Support multiple architectures (amd64, arm64, arm/v6, arm/v7, etc.) +- Lightweight design with low resource usage + +## Usage + +1. After deployment, Diun will automatically start monitoring Docker images +2. Default check interval is every 6 hours +3. When image updates are detected, notifications will be sent +4. Control which containers are monitored via Docker label `diun.enable=true` + +## Configuration + +- **Timezone**: Asia/Shanghai (Shanghai timezone) +- **Data Storage**: `./data` directory contains bbolt database +- **Config File**: `./diun.yml` contains all monitoring and notification configurations + +## Default Configuration + +The application uses the following default configuration: + +```yaml +watch: + workers: 20 + schedule: "0 */6 * * *" + firstCheckNotif: false + +providers: + docker: + watchByDefault: true +``` + +## Custom Configuration + +To customize monitoring, notifications, and other configurations, please edit the `diun.yml` file. Refer to the official documentation for configuration: + +- [Configuration Overview](https://crazymax.dev/diun/configuration/overview/) +- [Notifications](https://crazymax.dev/diun/notifications/) +- [Providers](https://crazymax.dev/diun/providers/) + +## Supported Providers + +- **Docker**: Monitor Docker containers and images +- **Kubernetes**: Monitor Kubernetes clusters +- **Swarm**: Monitor Docker Swarm services +- **Nomad**: Monitor HashiCorp Nomad tasks +- **Dockerfile**: Monitor base images in Dockerfiles +- **File**: Read image list from files + +## Supported Notifications + +- Discord, Telegram, Slack +- Email, Matrix, MQTT +- Pushover, Rocket.Chat +- Webhook, Script, Signal +- Gotify, Ntfy, Teams + +## Monitoring Configuration + +To monitor specific Docker containers, add these labels: + +```yaml +labels: + - "diun.enable=true" + - "diun.watch_repo=true" # Optional, monitor repository updates +``` + +## Links + +- [Official Website](https://crazymax.dev/diun/) +- [GitHub Project](https://github.com/crazy-max/diun) +- [Docker Hub](https://hub.docker.com/r/crazymax/diun/) +- [Basic Example](https://crazymax.dev/diun/usage/basic-example/) \ No newline at end of file diff --git a/apps/diun/data.yml b/apps/diun/data.yml new file mode 100644 index 0000000..04c8a01 --- /dev/null +++ b/apps/diun/data.yml @@ -0,0 +1,35 @@ +name: Diun +tags: + - 实用工具 +title: Docker 镜像更新通知工具 +description: Diun 是一个用于监控 Docker 镜像更新并发送通知的命令行工具 +additionalProperties: + key: diun + name: Diun + tags: + - Tool + shortDescZh: Docker 镜像更新通知命令行工具 + shortDescEn: Docker image update notification CLI tool + description: + en: Diun is a CLI tool to monitor Docker image updates and send notifications + ja: DiunはDockerイメージの更新を監視し、通知を送信するCLIツールです + ms: Diun ialah alat CLI untuk memantau kemas kini imej Docker dan menghantar notifikasi + pt-br: Diun é uma ferramenta CLI para monitorar atualizações de imagens Docker e enviar notificações + ru: Diun — это CLI-инструмент для мониторинга обновлений Docker-образов и отправки уведомлений + ko: Diun은 Docker 이미지 업데이트를 모니터링하고 알림을 보내는 CLI 도구입니다 + zh-Hant: Diun 是一個用於監控 Docker 映像更新並發送通知的命令列工具 + zh: Diun 是一个用于监控 Docker 镜像更新并发送通知的命令行工具 + type: tool + crossVersionUpdate: true + limit: 0 + recommend: 0 + website: https://crazymax.dev/diun/ + github: https://github.com/crazy-max/diun + document: https://crazymax.dev/diun/usage/basic-example/ + architectures: + - amd64 + - arm/v6 + - arm/v7 + - arm64 + - 386 + - ppc64le \ No newline at end of file diff --git a/apps/diun/latest/data.yml b/apps/diun/latest/data.yml new file mode 100644 index 0000000..a277543 --- /dev/null +++ b/apps/diun/latest/data.yml @@ -0,0 +1,2 @@ +additionalProperties: + formFields: [] \ No newline at end of file diff --git a/apps/diun/latest/diun.yml b/apps/diun/latest/diun.yml new file mode 100644 index 0000000..d531cda --- /dev/null +++ b/apps/diun/latest/diun.yml @@ -0,0 +1,8 @@ +watch: + workers: 20 + schedule: "0 */6 * * *" + firstCheckNotif: false + +providers: + docker: + watchByDefault: true \ No newline at end of file diff --git a/apps/diun/latest/docker-compose.yml b/apps/diun/latest/docker-compose.yml new file mode 100644 index 0000000..2f6c2cf --- /dev/null +++ b/apps/diun/latest/docker-compose.yml @@ -0,0 +1,19 @@ +services: + diun: + container_name: ${CONTAINER_NAME} + image: crazymax/diun:latest + command: serve + restart: always + networks: + - 1panel-network + volumes: + - ./data:/data + - ./diun.yml:/diun.yml:ro + - /var/run/docker.sock:/var/run/docker.sock + environment: + - "TZ=Asia/Shanghai" + - "LOG_LEVEL=info" + - "LOG_JSON=false" +networks: + 1panel-network: + external: true \ No newline at end of file diff --git a/apps/diun/logo.png b/apps/diun/logo.png new file mode 100644 index 0000000..0837313 Binary files /dev/null and b/apps/diun/logo.png differ diff --git a/apps/docker-copilot/README.md b/apps/docker-copilot/README.md new file mode 100644 index 0000000..38963e6 --- /dev/null +++ b/apps/docker-copilot/README.md @@ -0,0 +1,18 @@ +# DockerCopilot + +## 介绍 + +一个主打便捷的docker容器管理工具,现在已经支持所有平台。 +已经实现: +1. 一键更新容器 +2. 指定镜像和tag更新 +3. 启动、停止、重启容器 +4. 重命名容器 +5. 删除无TAG镜像 +6. 删除未使用镜像 +7. 更新进度查看 +8. 备份容器设置 +9. 恢复容器设置 + +## 开发环境 +go版本:1.21+ \ No newline at end of file diff --git a/apps/docker-copilot/data.yml b/apps/docker-copilot/data.yml new file mode 100644 index 0000000..56daa4c --- /dev/null +++ b/apps/docker-copilot/data.yml @@ -0,0 +1,22 @@ +name: Docker-Copilot +tags: + - 实用工具 +title: DockerCopilot +description: docker容器管理工具 +additionalProperties: + key: docker-copilot + name: Docker-Copilot + tags: + - Tools + shortDescZh: 一键更新容器 + shortDescEn: DockerCopilot Application + description: + zh: 便捷的docker容器管理工具。 + en: DockerCopilot is a convenient docker container management tool. + type: website + crossVersionUpdate: true + limit: 0 + recommend: 0 + website: https://github.com/onlyLTY/dockerCopilot + github: https://github.com/onlyLTY/dockerCopilot + document: https://github.com/onlyLTY/dockerCopilot diff --git a/apps/docker-copilot/latest/data.yml b/apps/docker-copilot/latest/data.yml new file mode 100644 index 0000000..c39e149 --- /dev/null +++ b/apps/docker-copilot/latest/data.yml @@ -0,0 +1,19 @@ +additionalProperties: + formFields: + - default: "12712" + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Service Port 12712 + labelZh: 服务端口 12712 + required: true + rule: paramPort + type: number + - default: "copilot" + edit: true + envKey: SECRET_KEY + labelEn: secretKey + labelZh: 密码,不少于八位且非纯数字 + random: true + required: true + rule: paramComplexity + type: password \ No newline at end of file diff --git a/apps/docker-copilot/latest/docker-compose.yml b/apps/docker-copilot/latest/docker-compose.yml new file mode 100644 index 0000000..f34024a --- /dev/null +++ b/apps/docker-copilot/latest/docker-compose.yml @@ -0,0 +1,21 @@ +services: + dockercopilot: + image: 0nlylty/dockercopilot:latest + container_name: ${CONTAINER_NAME} + restart: always + ports: + - ${PANEL_APP_PORT_HTTP}:12712 + volumes: + - /var/run/docker.sock:/var/run/docker.sock + - ./data:/data + networks: + - 1panel-network + environment: + - TZ=Asia/Shanghai + - DOCKER_HOST=unix:///var/run/docker.sock + - secretKey=${SECRET_KEY} + labels: + createdBy: Apps +networks: + 1panel-network: + external: true diff --git a/apps/docker-copilot/logo.png b/apps/docker-copilot/logo.png new file mode 100644 index 0000000..fc09bd9 Binary files /dev/null and b/apps/docker-copilot/logo.png differ diff --git a/apps/docmost/0.20.4/data.yml b/apps/docmost/0.20.4/data.yml new file mode 100644 index 0000000..b46ee7b --- /dev/null +++ b/apps/docmost/0.20.4/data.yml @@ -0,0 +1,19 @@ +additionalProperties: + formFields: + - default: 30049 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Port + labelZh: 端口 + required: true + rule: paramPort + type: number + - default: "" + edit: true + envKey: PANEL_DB_USER_PASSWORD + labelEn: Database Password + labelZh: 数据库用户密码 + random: true + required: true + rule: paramComplexity + type: password \ No newline at end of file diff --git a/apps/docmost/0.20.4/docker-compose.yml b/apps/docmost/0.20.4/docker-compose.yml new file mode 100644 index 0000000..6ccd033 --- /dev/null +++ b/apps/docmost/0.20.4/docker-compose.yml @@ -0,0 +1,38 @@ +services: + docmost: + container_name: ${CONTAINER_NAME} + restart: always + ports: + - "${PANEL_APP_PORT_HTTP}:3000" + volumes: + - docmost:/app/data/storage + environment: + APP_URL: "http://localhost:3000" + APP_SECRET: "52f235dee223c92a83a934ada13b83075c9855fe966b3cbf9dd86810e2b742ee" + DATABASE_URL: "postgresql://docmost:${PANEL_DB_USER_PASSWORD}@db:5432/docmost?schema=public" + REDIS_URL: "redis://redis:6379" + image: docmost/docmost:0.20.4 + labels: + createdBy: "Apps" + depends_on: + - db + - redis + db: + image: postgres:16-alpine + environment: + POSTGRES_DB: docmost + POSTGRES_USER: docmost + POSTGRES_PASSWORD: ${PANEL_DB_USER_PASSWORD} + restart: always + volumes: + - db_data:/var/lib/postgresql/data + + redis: + image: redis:7.2-alpine + restart: always + volumes: + - redis_data:/data +volumes: + docmost: + db_data: + redis_data: \ No newline at end of file diff --git a/apps/docmost/README.md b/apps/docmost/README.md new file mode 100644 index 0000000..20bb9fb --- /dev/null +++ b/apps/docmost/README.md @@ -0,0 +1,37 @@ +
+

Docmost

+

+ 开源协作wiki、文档笔记软件. +
+ Website | + Documentation +

+
+
+ +> [!提示] +> Docmost 目前处于**测试阶段**。我们非常重视您的反馈,我们正在努力推出稳定版本。. + +## 开始使用 +要开始使用 Docmost,请参阅的[documentation](https://docmost.com/docs). + +## 功能特色 +- 实时协作 +- 图表(Draw.io、Excalidraw 和 Mermaid) +- 空间 +- 权限管理 +- 群组 +- 评论 +- 页面历史记录 +- 搜索 +- 文件附件 + +#### 截图 +

+home +editor +

+ +### 贡献 +请查看 [开发文档](https://docmost.com/docs/self-hosting/development) + diff --git a/apps/docmost/README_en.md b/apps/docmost/README_en.md new file mode 100644 index 0000000..3ab5eba --- /dev/null +++ b/apps/docmost/README_en.md @@ -0,0 +1,34 @@ +
+

Docmost

+

+ Open-source collaborative wiki and documentation software. +
+ Website | + Documentation +

+
+> [!NOTE] +> Docmost is currently in **beta**. We value your feedback as we progress towards a stable release. + +## Getting started +To get started with Docmost, please refer to our [documentation](https://docmost.com/docs). + +## Features +- Real-time collaboration +- Diagrams (Draw.io, Excalidraw and Mermaid) +- Spaces +- Permissions management +- Groups +- Comments +- Page history +- Search +- File attachment + +#### Screenshots +

+home +editor +

+ +### Contributing +See the [development documentation](https://docmost.com/docs/self-hosting/development) diff --git a/apps/docmost/data.yml b/apps/docmost/data.yml new file mode 100644 index 0000000..0747cf8 --- /dev/null +++ b/apps/docmost/data.yml @@ -0,0 +1,22 @@ +name: Docmost +tags: + - 建站 +title: 开源协作wiki和文档软件 +description: 开源协作 wiki 和文档软件 +additionalProperties: + key: docmost + name: Docmost + tags: + - Website + shortDescZh: 开源协作wiki和文档软件 + shortDescEn: Open-source collaborative wiki and documentation software. + description: + zh: Docmost是Notion和Confluence等开源软件的替代品。 + en: Docmost is an open-source alternative to the likes of Notion and Confluence. + type: website + crossVersionUpdate: true + limit: 0 + recommend: 0 + website: https://docmost.com/ + github: https://github.com/docmost/docmost + document: https://docmost.com/docs/ \ No newline at end of file diff --git a/apps/docmost/logo.png b/apps/docmost/logo.png new file mode 100644 index 0000000..c0cf50b Binary files /dev/null and b/apps/docmost/logo.png differ diff --git a/apps/easytier/2.3.1/.env.sample b/apps/easytier/2.3.1/.env.sample new file mode 100644 index 0000000..fbe0f91 --- /dev/null +++ b/apps/easytier/2.3.1/.env.sample @@ -0,0 +1,8 @@ +COMMAND="-c /root/config.toml" +CONFIG_FILE_PATH="./data/config.toml" +CONFIG_FILE_PATH_INTERNAL="/root/config.toml" +CONTAINER_NAME="easytier" +DATA_PATH="./data/data" +HOSTNAME="easytier" +PRIVILEGED_MODE="true" +TIME_ZONE="Asia/Shanghai" diff --git a/apps/easytier/2.3.1/data.yml b/apps/easytier/2.3.1/data.yml new file mode 100644 index 0000000..e403177 --- /dev/null +++ b/apps/easytier/2.3.1/data.yml @@ -0,0 +1,51 @@ +additionalProperties: + formFields: + - default: "./data/data" + edit: true + envKey: DATA_PATH + labelEn: Data Path + labelZh: 数据路径 + required: true + type: text + - default: "./data/config.toml" + disabled: true + envKey: CONFIG_FILE_PATH + labelEn: Configuration file path + labelZh: 配置文件路径 + required: true + type: text + - default: "/root/config.toml" + disabled: true + envKey: CONFIG_FILE_PATH_INTERNAL + labelEn: Configuration file path(inside container) + labelZh: 配置文件路径 (容器内部) + required: true + type: text + - default: "Asia/Shanghai" + edit: true + envKey: TIME_ZONE + labelEn: Time Zone + labelZh: 时区 + required: true + type: text + - default: "true" + disabled: true + envKey: PRIVILEGED_MODE + labelEn: Privilege mode switch + labelZh: 特权模式开关 + required: true + type: text + - default: "easytier" + edit: true + envKey: HOSTNAME + labelEn: Hostname + labelZh: 主机名 + required: true + type: text + - default: "-c /root/config.toml" + disabled: true + envKey: COMMAND + labelEn: Command + labelZh: 命令 + required: true + type: text diff --git a/apps/easytier/2.3.1/data/config-example.toml b/apps/easytier/2.3.1/data/config-example.toml new file mode 100644 index 0000000..389dbfe --- /dev/null +++ b/apps/easytier/2.3.1/data/config-example.toml @@ -0,0 +1,68 @@ +# 实例名称,用于在同一台机器上标识此 VPN 节点 +instance_name = "" +# 主机名,用于标识此设备的主机名 +hostname = "" +# 实例 ID,一般为 UUID,在同一个 VPN 网络中唯一 +instance_id = "" +# 此 VPN 节点的 IPv4 地址,如果为空,则此节点将仅转发数据包,不会创建 TUN 设备 +ipv4 = "" +# 由 Easytier 自动确定并设置IP地址,默认从10.0.0.1开始。警告:在使用 DHCP 时,如果网络中出现 IP 冲突,IP 将自动更改 +dhcp = false + +# 监听器列表,用于接受连接 +listeners = [ +"tcp://0.0.0.0:11010", +"udp://0.0.0.0:11010", +"wg://0.0.0.0:11011", +"ws://0.0.0.0:11011/", +"wss://0.0.0.0:11012/", +] + +# 退出节点列表 +exit_nodes = [ +] + +# 用于管理的 RPC 门户地址 +rpc_portal = "127.0.0.1:15888" + +[network_identity] +# 网络名称,用于标识 VPN 网络 +network_name = "" +# 网络密钥,用于验证此节点属于 VPN 网络 +network_secret = "" + +# 这里是对等连接节点配置,可以多段配置 +[[peer]] +uri = "" + +[[peer]] +uri = "" + +# 这里是子网代理节点配置,可以有多段配置 +[[proxy_network]] +cidr = "10.0.1.0/24" + +[[proxy_network]] +cidr = "10.0.2.0/24" + +[flags] +# 连接到对等节点使用的默认协议 +default_protocol = "tcp" +# TUN 设备名称,如果为空,则使用默认名称 +dev_name = "" +# 是否启用加密 +enable_encryption = true +# 是否启用 IPv6 支持 +enable_ipv6 = true +# TUN 设备的 MTU +mtu = 1380 +# 延迟优先模式,将尝试使用最低延迟路径转发流量,默认使用最短路径 +latency_first = false +# 将本节点配置为退出节点 +enable_exit_node = false +# 禁用 TUN 设备 +no_tun = false +# 为子网代理启用 smoltcp 堆栈 +use_smoltcp = false +# 仅转发白名单网络的流量,支持通配符字符串。多个网络名称间可以使用英文空格间隔。如果该参数为空,则禁用转发。默认允许所有网络。例如:'*'(所有网络),'def*'(以def为前缀的网络),'net1 net2'(只允许net1和net2) +foreign_network_whitelist = "*" \ No newline at end of file diff --git a/apps/easytier/2.3.1/data/config.toml b/apps/easytier/2.3.1/data/config.toml new file mode 100644 index 0000000..ed8de6d --- /dev/null +++ b/apps/easytier/2.3.1/data/config.toml @@ -0,0 +1,17 @@ +instance_name = "default" +instance_id = "3d3db819-ad54-4d86-bf9a-faac864478ab" +dhcp = false +listeners = [ + "tcp://0.0.0.0:11010", + "udp://0.0.0.0:11010", + "wg://0.0.0.0:11011", + "ws://0.0.0.0:11011/", + "wss://0.0.0.0:11012/", +] +exit_nodes = [] +peer = [] +rpc_portal = "0.0.0.0:15889" + +[network_identity] +network_name = "default" +network_secret = "" diff --git a/apps/easytier/2.3.1/docker-compose.yml b/apps/easytier/2.3.1/docker-compose.yml new file mode 100644 index 0000000..8963145 --- /dev/null +++ b/apps/easytier/2.3.1/docker-compose.yml @@ -0,0 +1,20 @@ +services: + easytier: + image: "easytier/easytier:v2.3.1" + container_name: ${CONTAINER_NAME} + restart: always + network_mode: host + privileged: ${PRIVILEGED_MODE} + hostname: ${HOSTNAME} + environment: + - TZ=${TIME_ZONE} + volumes: + - ${DATA_PATH}:/root + - ${CONFIG_FILE_PATH}:${CONFIG_FILE_PATH_INTERNAL} + command: ${COMMAND} + labels: + createdBy: "Apps" + +networks: + 1panel-network: + external: true diff --git a/apps/easytier/README.md b/apps/easytier/README.md new file mode 100644 index 0000000..8de3903 --- /dev/null +++ b/apps/easytier/README.md @@ -0,0 +1,32 @@ +# EasyTier + +## 使用说明 + +> [!NOTE] +> +> **注意:默认启动为服务器(Public_Server)模式,请根据个人需求配置./data/config.toml** + +相关信息可通过容器日志与配置文件获取,注意参考官方文档来使用。 + +*** +[简体中文](https://github.com/EasyTier/EasyTier/blob/main/README_CN.md) | [English](https://github.com/EasyTier/EasyTier/blob/main/README.md) + +**请访问 [EasyTier 官网](https://www.easytier.top/) 以查看完整的文档。** + +一个简单、安全、去中心化的内网穿透 VPN 组网方案,使用 Rust 语言和 Tokio 框架实现。 + + +## 特点 + +- **去中心化**:无需依赖中心化服务,节点平等且独立。 +- **安全**:支持利用 WireGuard 加密通信,也支持 AES-GCM 加密保护中转流量。 +- **高性能**:全链路零拷贝,性能与主流组网软件相当。 +- **跨平台**:支持 MacOS/Linux/Windows/Android,未来将支持 IOS。可执行文件静态链接,部署简单。 +- **无公网 IP 组网**:支持利用共享的公网节点组网,可参考 [配置指南](https://github.com/EasyTier/EasyTier/blob/main/README_CN.md#%E6%97%A0%E5%85%AC%E7%BD%91IP%E7%BB%84%E7%BD%91) +- **NAT 穿透**:支持基于 UDP 的 NAT 穿透,即使在复杂的网络环境下也能建立稳定的连接。 +- **子网代理(点对网)**:节点可以将可访问的网段作为代理暴露给 VPN 子网,允许其他节点通过该节点访问这些子网。 +- **智能路由**:根据流量智能选择链路,减少延迟,提高吞吐量。 +- **TCP 支持**:在 UDP 受限的情况下,通过并发 TCP 链接提供可靠的数据传输,优化性能。 +- **高可用性**:支持多路径和在检测到高丢包率或网络错误时切换到健康路径。 +- **IPV6 支持**:支持利用 IPV6 组网。 +- **多协议类型**: 支持使用 WebSocket、QUIC 等协议进行节点间通信。 diff --git a/apps/easytier/data.yml b/apps/easytier/data.yml new file mode 100644 index 0000000..35e1eb2 --- /dev/null +++ b/apps/easytier/data.yml @@ -0,0 +1,22 @@ +name: EasyTier +tags: + - 实用工具 +title: 一个简单、安全、去中心化的内网穿透 VPN 组网方案 +description: 一个简单、安全、去中心化的内网穿透 VPN 组网方案 +additionalProperties: + key: easytier + name: EasyTier + tags: + - Tool + shortDescZh: 一个简单、安全、去中心化的内网穿透 VPN 组网方案 + shortDescEn: A simple, safe and decentralized VPN networking solution + description: + zh: 一个简单、安全、去中心化的内网穿透 VPN 组网方案 + en: A simple, safe and decentralized VPN networking solution + type: tool + crossVersionUpdate: true + limit: 1 + recommend: 0 + website: https://easytier.cn/ + github: https://github.com/EasyTier/EasyTier + document: https://easytier.cn/guide/installation.html diff --git a/apps/easytier/latest/.env.sample b/apps/easytier/latest/.env.sample new file mode 100644 index 0000000..2ad05e7 --- /dev/null +++ b/apps/easytier/latest/.env.sample @@ -0,0 +1,6 @@ +COMMAND="-i 10.144.144.1 --network-name abc --network-secret abc -p tcp://public.easytier.top:11010" +CONTAINER_NAME="easytier" +DATA_PATH="./data/data" +HOSTNAME="easytier" +PRIVILEGED_MODE="true" +TIME_ZONE="Asia/Shanghai" diff --git a/apps/easytier/latest/data.yml b/apps/easytier/latest/data.yml new file mode 100644 index 0000000..f2d753b --- /dev/null +++ b/apps/easytier/latest/data.yml @@ -0,0 +1,37 @@ +additionalProperties: + formFields: + - default: "./data" + edit: true + envKey: DATA_PATH + labelEn: Data Path + labelZh: 数据路径 + required: true + type: text + - default: "Asia/Shanghai" + edit: true + envKey: TIME_ZONE + labelEn: Time Zone + labelZh: 时区 + required: true + type: text + - default: "true" + disabled: true + envKey: PRIVILEGED_MODE + labelEn: Privilege mode switch + labelZh: 特权模式开关 + required: true + type: text + - default: "easytier" + edit: true + envKey: HOSTNAME + labelEn: Hostname + labelZh: 主机名 + required: true + type: text + - default: "-i --network-name <用户> --network-secret <密码> -e tcp://<服务器地址>:11010 -l <监听地址>" + edit: true + envKey: COMMAND + labelEn: Command (modified as required) + labelZh: 命令 (按需修改) + required: true + type: text diff --git a/apps/easytier/latest/data/config-example.toml b/apps/easytier/latest/data/config-example.toml new file mode 100644 index 0000000..389dbfe --- /dev/null +++ b/apps/easytier/latest/data/config-example.toml @@ -0,0 +1,68 @@ +# 实例名称,用于在同一台机器上标识此 VPN 节点 +instance_name = "" +# 主机名,用于标识此设备的主机名 +hostname = "" +# 实例 ID,一般为 UUID,在同一个 VPN 网络中唯一 +instance_id = "" +# 此 VPN 节点的 IPv4 地址,如果为空,则此节点将仅转发数据包,不会创建 TUN 设备 +ipv4 = "" +# 由 Easytier 自动确定并设置IP地址,默认从10.0.0.1开始。警告:在使用 DHCP 时,如果网络中出现 IP 冲突,IP 将自动更改 +dhcp = false + +# 监听器列表,用于接受连接 +listeners = [ +"tcp://0.0.0.0:11010", +"udp://0.0.0.0:11010", +"wg://0.0.0.0:11011", +"ws://0.0.0.0:11011/", +"wss://0.0.0.0:11012/", +] + +# 退出节点列表 +exit_nodes = [ +] + +# 用于管理的 RPC 门户地址 +rpc_portal = "127.0.0.1:15888" + +[network_identity] +# 网络名称,用于标识 VPN 网络 +network_name = "" +# 网络密钥,用于验证此节点属于 VPN 网络 +network_secret = "" + +# 这里是对等连接节点配置,可以多段配置 +[[peer]] +uri = "" + +[[peer]] +uri = "" + +# 这里是子网代理节点配置,可以有多段配置 +[[proxy_network]] +cidr = "10.0.1.0/24" + +[[proxy_network]] +cidr = "10.0.2.0/24" + +[flags] +# 连接到对等节点使用的默认协议 +default_protocol = "tcp" +# TUN 设备名称,如果为空,则使用默认名称 +dev_name = "" +# 是否启用加密 +enable_encryption = true +# 是否启用 IPv6 支持 +enable_ipv6 = true +# TUN 设备的 MTU +mtu = 1380 +# 延迟优先模式,将尝试使用最低延迟路径转发流量,默认使用最短路径 +latency_first = false +# 将本节点配置为退出节点 +enable_exit_node = false +# 禁用 TUN 设备 +no_tun = false +# 为子网代理启用 smoltcp 堆栈 +use_smoltcp = false +# 仅转发白名单网络的流量,支持通配符字符串。多个网络名称间可以使用英文空格间隔。如果该参数为空,则禁用转发。默认允许所有网络。例如:'*'(所有网络),'def*'(以def为前缀的网络),'net1 net2'(只允许net1和net2) +foreign_network_whitelist = "*" \ No newline at end of file diff --git a/apps/easytier/latest/data/config.toml b/apps/easytier/latest/data/config.toml new file mode 100644 index 0000000..ed8de6d --- /dev/null +++ b/apps/easytier/latest/data/config.toml @@ -0,0 +1,17 @@ +instance_name = "default" +instance_id = "3d3db819-ad54-4d86-bf9a-faac864478ab" +dhcp = false +listeners = [ + "tcp://0.0.0.0:11010", + "udp://0.0.0.0:11010", + "wg://0.0.0.0:11011", + "ws://0.0.0.0:11011/", + "wss://0.0.0.0:11012/", +] +exit_nodes = [] +peer = [] +rpc_portal = "0.0.0.0:15889" + +[network_identity] +network_name = "default" +network_secret = "" diff --git a/apps/easytier/latest/docker-compose.yml b/apps/easytier/latest/docker-compose.yml new file mode 100644 index 0000000..92c52d2 --- /dev/null +++ b/apps/easytier/latest/docker-compose.yml @@ -0,0 +1,15 @@ +services: + easytier: + image: "easytier/easytier:latest" + container_name: ${CONTAINER_NAME} + restart: always + network_mode: host + privileged: ${PRIVILEGED_MODE} + hostname: ${HOSTNAME} + environment: + - TZ=${TIME_ZONE} + volumes: + - ${DATA_PATH}:/root + command: ${COMMAND} + labels: + createdBy: "Apps" diff --git a/apps/easytier/logo.png b/apps/easytier/logo.png new file mode 100644 index 0000000..13bab39 Binary files /dev/null and b/apps/easytier/logo.png differ diff --git a/apps/glance-agent/README.md b/apps/glance-agent/README.md new file mode 100644 index 0000000..cd1f1da --- /dev/null +++ b/apps/glance-agent/README.md @@ -0,0 +1,216 @@ +# Glance Python 远程服务器监控 Agent + +## 项目简介 +本项目为 Glance Dashboard 提供远程服务器监控数据采集,使用 Python3 + FastAPI 实现,兼容 Glance `server-stats` 组件前端展示。支持 Docker 部署,适合多服务器统一监控。 + +## 功能特性 +- 采集主机名、平台、启动时间、CPU 负载/温度、内存、磁盘等信息 +- 提供 `/api/sysinfo/all` HTTP API,返回 Glance 兼容 JSON +- 支持 Docker 镜像和 docker-compose 一键部署 +- 可多实例部署,适配多服务器场景 +- **主机名自动识别**:容器内自动优先读取宿主机 `/etc/hostname`,无需手动配置 + +## API 说明 +- 路径:`/api/sysinfo/all` +- 方法:GET +- 返回: +```json +{ + "Hostname": "server1", + "Platform": "Linux-5.15.0-1051-azure-x86_64-with-glibc2.29", + "BootTime": 1710000000, + "HostInfoIsAvailable": true, + "CPU": { + "Load1Percent": 12.5, + "Load15Percent": 8.2, + "TemperatureC": 45.0, + "LoadIsAvailable": true, + "TemperatureIsAvailable": true + }, + "Memory": { + "IsAvailable": true, + "UsedPercent": 55.3, + "UsedMB": 2048, + "TotalMB": 4096, + "SwapIsAvailable": true, + "SwapUsedMB": 256, + "SwapTotalMB": 1024, + "SwapUsedPercent": 25.0 + }, + "Mountpoints": [ + { + "Name": "/dev/sda1", + "Path": "/", + "UsedMB": 10240, + "TotalMB": 20480, + "UsedPercent": 50.0 + } + ] +} +``` + +## Glance 集成方法 + +1. 将 `agent/custom-api-example.yaml` 内容合并到 Glance 的主配置文件(如 `glance.yml`)对应 widgets 区域。 +2. 每台服务器部署一个 agent,配置对应的 API 地址。 +3. 前端展示效果与本地 server-stats 一致。 + +### custom-api 配置示例 +```yaml +- type: custom-api + title: 远程服务器A + url: http://192.168.1.200:8000/api/sysinfo/all ## 请修改为实际的IP地址 + cache: 15s + template: | +
+
+
+
+ {{ .JSON.String "Hostname" }} +
+
+ {{ if .JSON.Bool "HostInfoIsAvailable" }} + uptime + {{ else }}unknown uptime{{ end }} +
+
+
+
+
PLATFORM
+
+ {{ if .JSON.Bool "HostInfoIsAvailable" }} + {{ .JSON.String "Platform" }} + {{ else }}Unknown{{ end }} +
+
+ + + + +
+
+
+ +
+
+
CPU
+ {{ if and (.JSON.Bool "CPU.TemperatureIsAvailable") (ge (.JSON.Float "CPU.TemperatureC") 80.0) }} + + + + {{ end }} +
+ {{ if .JSON.Bool "CPU.LoadIsAvailable" }} + {{ .JSON.Float "CPU.Load1Percent" }} % + {{ else }}n/a{{ end }} +
+
+
+
+
+
1M AVG
+
+
{{ .JSON.Float "CPU.Load1Percent" }} %
+
+
+
15M AVG
+
+
{{ .JSON.Float "CPU.Load15Percent" }} %
+
+ {{ if .JSON.Bool "CPU.TemperatureIsAvailable" }} +
+
TEMP C
+
+
{{ .JSON.Float "CPU.TemperatureC" }} °
+
+ {{ end }} +
+
+ {{ if .JSON.Bool "CPU.LoadIsAvailable" }} +
+
+ {{ end }} +
+
+
+ +
+
+
RAM
+
+ {{ if .JSON.Bool "Memory.IsAvailable" }} + {{ .JSON.Float "Memory.UsedPercent" }} % + {{ else }}n/a{{ end }} +
+
+
+
+
+
RAM
+
+
+ {{ .JSON.Float "Memory.UsedGB" }}GB / {{ .JSON.Float "Memory.TotalGB" }}GB +
+
+ {{ if .JSON.Bool "Memory.SwapIsAvailable" }} +
+
SWAP
+
+
+ {{ .JSON.Float "Memory.SwapUsedGB" }}GB / {{ .JSON.Float "Memory.SwapTotalGB" }}GB +
+
+ {{ end }} +
+
+ {{ if .JSON.Bool "Memory.IsAvailable" }} +
+ {{ if .JSON.Bool "Memory.SwapIsAvailable" }} +
+ {{ end }} + {{ end }} +
+
+
+ +
+
+
DISK
+
+ {{ if gt (.JSON.Array "Mountpoints" | len) 0 }} + {{ (index (.JSON.Array "Mountpoints") 0).Float "UsedPercent" }} % + {{ else }}n/a{{ end }} +
+
+
+
+
    + {{ range .JSON.Array "Mountpoints" }} +
  • +
    {{ if .String "Name" }}{{ .String "Name" }}{{ else }}{{ .String "Path" }}{{ end }}
    +
    +
    + {{ .Float "UsedGB" }}GB / {{ .Float "TotalGB" }}GB +
    +
  • + {{ end }} +
+
+
+ {{ if gt (.JSON.Array "Mountpoints" | len) 0 }} +
+ {{ if gt (.JSON.Array "Mountpoints" | len) 1 }} +
+ {{ end }} + {{ end }} +
+
+
+
+
+ +``` + +## 参考 +- [Glance-Monitor](https://github.com/arch3rPro/Glance-Monitor) +- [Document文档](https://github.com/arch3rPro/Glance-Monitor/blob/main/server-status-agent/README.md) diff --git a/apps/glance-agent/data.yml b/apps/glance-agent/data.yml new file mode 100644 index 0000000..2bc82b2 --- /dev/null +++ b/apps/glance-agent/data.yml @@ -0,0 +1,24 @@ +name: Glance-Agent +tags: + - 实用工具 + - 监控 + - Dashboard + - Other +title: glance-agent +description: 为Glance Dashboard提供远程服务器监控数据采集API接口 +additionalProperties: + key: glance-agent + name: Glance-Agent + tags: + - 实用工具 + - 监控 + - Dashboard + - Other + shortDescZh: 远程服务器监控数据采集agent + shortDescEn: Remote server monitoring data collection agent + type: tools + crossVersionUpdate: true + website: https://github.com/arch3rPro/Glance-Monitor + github: https://github.com/arch3rPro/Glance-Monitor + document: https://github.com/arch3rPro/Glance-Monitor/blob/main/server-status-agent/README.md + diff --git a/apps/glance-agent/latest/data.yml b/apps/glance-agent/latest/data.yml new file mode 100644 index 0000000..e4858c9 --- /dev/null +++ b/apps/glance-agent/latest/data.yml @@ -0,0 +1,10 @@ +additionalProperties: + formFields: + - default: "12080" + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Service Port 8000 + labelZh: 服务端口 8000 + required: true + rule: paramPort + type: number diff --git a/apps/glance-agent/latest/docker-compose.yml b/apps/glance-agent/latest/docker-compose.yml new file mode 100644 index 0000000..1acffa2 --- /dev/null +++ b/apps/glance-agent/latest/docker-compose.yml @@ -0,0 +1,18 @@ +services: + agent-image: + image: vuldocker/glance-agent:latest + container_name: ${CONTAINER_NAME} + restart: unless-stopped + ports: + - ${PANEL_APP_PORT_HTTP}:8000 + volumes: + - /etc/hostname:/host/etc/hostname:ro + networks: + - 1panel-network + environment: + - TZ=Asia/Shanghai + labels: + createdBy: Apps +networks: + 1panel-network: + external: true diff --git a/apps/glance-agent/logo.png b/apps/glance-agent/logo.png new file mode 100644 index 0000000..950a5c7 Binary files /dev/null and b/apps/glance-agent/logo.png differ diff --git a/apps/glm-free-api/README.md b/apps/glm-free-api/README.md new file mode 100644 index 0000000..9de5891 --- /dev/null +++ b/apps/glm-free-api/README.md @@ -0,0 +1,30 @@ +### 工具介绍 + +🚀 智谱清言ChatGLM-4-Plus大模型逆向API【特长:超强智能体】,支持高速流式输出、支持智能体对话、支持多轮对话、支持沉思模型、支持Zero思考推理模型、支持视频生成、支持AI绘图、支持联网搜索、支持长文档解读、支持代码调用、支持图像解析,零配置部署,多路token支持,自动清理会话痕迹,仅供测试,如需商用请前往官方开放平台。 + +### 风险说明 + +- 逆向API是不稳定的,建议前往智谱AI官方 https://open.bigmodel.cn/ 付费使用API,避免封禁的风险。 + +- 本组织和个人不接受任何资金捐助和交易,此项目是纯粹研究交流学习性质! + +- 仅限自用,禁止对外提供服务或商用,避免对官方造成服务压力,否则风险自担! + + +### 使用说明 + + +从 [智谱清言](https://chatglm.cn/) 获取refresh_token + +进入智谱清言随便发起一个对话,然后F12打开开发者工具,从Application > Cookies中找到chatglm_refresh_token的值,复制这个值填写到Lobechat或者CherryStudio等工具中,作为API密钥,API地址是你部署应用的IP加端口,例如:`https://192.168.1.105:8001/v1/chat/completions`,注意某些工具只需要填写`https://192.168.1.105:8001/`即可。 + +![获取chatglm_refresh_token](https://cdn.jsdelivr.net/gh/LLM-Red-Team/glm-free-api@master/doc/example-0.png) + +### 多账号接入 + +目前同个账号同时只能有*一路*输出,你可以通过提供多个账号的userToken value并使用`,`拼接提供: + +``` +API密钥:TOKEN1,TOKEN2,TOKEN3 +``` +每次请求服务会从中挑选一个。 diff --git a/apps/glm-free-api/data.yml b/apps/glm-free-api/data.yml new file mode 100644 index 0000000..13d9c39 --- /dev/null +++ b/apps/glm-free-api/data.yml @@ -0,0 +1,24 @@ +name: GLM-Free-API +tags: + - AI / 大模型 +title: 🚀 智谱清言ChatGLM-4-Plus大模型逆向API +description: 智谱AI (智谱清言) 接口转API +additionalProperties: + key: glm-free-api + name: GLM-Free-API + tags: + - AI + - Tools + shortDescZh: 🚀 智谱清言ChatGLM-4-Plus大模型逆向API + shortDescEn: A 1Panel deployment for glm-free-api + type: website + crossVersionUpdate: true + limit: 0 + recommend: 0 + architectures: + - amd64 + - arm64 + + website: https://open.bigmodel.cn/ + github: https://github.com/LLM-Red-Team/glm-free-api + document: https://github.com/LLM-Red-Team/glm-free-api \ No newline at end of file diff --git a/apps/glm-free-api/latest/data.yml b/apps/glm-free-api/latest/data.yml new file mode 100644 index 0000000..6f5a333 --- /dev/null +++ b/apps/glm-free-api/latest/data.yml @@ -0,0 +1,10 @@ +additionalProperties: + formFields: + - default: "8004" + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Service Port + labelZh: 服务端口 + required: true + rule: paramPort + type: number diff --git a/apps/glm-free-api/latest/docker-compose.yml b/apps/glm-free-api/latest/docker-compose.yml new file mode 100644 index 0000000..957ea2b --- /dev/null +++ b/apps/glm-free-api/latest/docker-compose.yml @@ -0,0 +1,16 @@ +services: + glm-free-api: + image: vinlic/glm-free-api:latest + container_name: ${CONTAINER_NAME} + ports: + - ${PANEL_APP_PORT_HTTP}:8000 + networks: + - 1panel-network + environment: + - TZ=Asia/Shanghai + labels: + createdBy: Apps + restart: always +networks: + 1panel-network: + external: true diff --git a/apps/glm-free-api/logo.png b/apps/glm-free-api/logo.png new file mode 100644 index 0000000..8a08de4 Binary files /dev/null and b/apps/glm-free-api/logo.png differ diff --git a/apps/hexo/README.md b/apps/hexo/README.md new file mode 100644 index 0000000..4112b0c --- /dev/null +++ b/apps/hexo/README.md @@ -0,0 +1,61 @@ +# Hexo + +> 一个快速、简单且功能强大的博客框架,由[Node.js](https://nodejs.org/)提供支持。 + +[网站](https://hexo.io/)| [文档](https://hexo.io/docs/)| [安装指南](https://hexo.io/docs/#Installation)| [贡献指南](https://hexo.io/docs/contributing)| [行为准则](https://github.com/hexojs/hexo/blob/master/CODE_OF_CONDUCT.md)| [API](https://hexo.io/api/) | [Twitter](https://twitter.com/hexojs) + +## 特征 + +- 快速生成 +- 支持 GitHub Flavored Markdown 和大多数 Octopress 插件 +- 一条命令即可部署到 GitHub Pages、Heroku 等。 +- 强大的 API,实现无限扩展 +- 数百个[主题](https://hexo.io/themes/)和[插件](https://hexo.io/plugins/) + +## 快速入门 + +**安装 Hexo** + +``` +$ npm install hexo-cli -g +``` + +在 macOS 和 Linux 上使用[brew](https://brew.sh/)安装: + +``` +$ brew install hexo +``` + +**设置你的博客** + +``` +$ hexo init blog +$ cd blog +``` + +**启动服务器** + +``` +$ hexo server +``` + +**创建新帖子** + +``` +$ hexo new "Hello Hexo" +``` + +**生成静态文件** + +``` +$ hexo generate +``` + +## 更多信息 + +- 阅读[文档](https://hexo.io/) +- 访问[精彩 Hexo](https://github.com/hexojs/awesome-hexo)列表 +- [在故障排除](https://hexo.io/docs/troubleshooting.html)中寻找解决方案 +- 加入[Google Group](https://groups.google.com/group/hexo)、[Discord](https://discord.gg/teM2Anj)、[Gitter](https://gitter.im/hexojs/hexo)或[Telegram上的讨论](https://t.me/hexojs) +- 请参阅wiki 上的[插件列表](https://hexo.io/plugins/)和[主题列表](https://hexo.io/themes/) +- 关注[@hexojs](https://twitter.com/hexojs)了解最新消息 \ No newline at end of file diff --git a/apps/hexo/README_en.md b/apps/hexo/README_en.md new file mode 100644 index 0000000..8f984e6 --- /dev/null +++ b/apps/hexo/README_en.md @@ -0,0 +1,69 @@ +Hexo logo + +# Hexo + +> A fast, simple & powerful blog framework, powered by [Node.js](https://nodejs.org). + +[Website](https://hexo.io) | +[Documentation](https://hexo.io/docs/) | +[Installation Guide](https://hexo.io/docs/#Installation) | +[Contribution Guide](https://hexo.io/docs/contributing) | +[Code of Conduct](CODE_OF_CONDUCT.md) | +[API](https://hexo.io/api/) | +[Twitter](https://twitter.com/hexojs) + +## Features + +- Blazing fast generating +- Support for GitHub Flavored Markdown and most Octopress plugins +- One-command deploy to GitHub Pages, Heroku, etc. +- Powerful API for limitless extensibility +- Hundreds of [themes](https://hexo.io/themes/) & [plugins](https://hexo.io/plugins/) + +## Quick Start + +**Install Hexo** + +``` bash +$ npm install hexo-cli -g +``` + +Install with [brew](https://brew.sh/) on macOS and Linux: + +```bash +$ brew install hexo +``` + +**Setup your blog** + +``` bash +$ hexo init blog +$ cd blog +``` + +**Start the server** + +``` bash +$ hexo server +``` + +**Create a new post** + +``` bash +$ hexo new "Hello Hexo" +``` + +**Generate static files** + +``` bash +$ hexo generate +``` + +## More Information + +- Read the [documentation](https://hexo.io/) +- Visit the [Awesome Hexo](https://github.com/hexojs/awesome-hexo) list +- Find solutions in [troubleshooting](https://hexo.io/docs/troubleshooting.html) +- Join discussion on [Google Group](https://groups.google.com/group/hexo), [Discord](https://discord.gg/teM2Anj), [Gitter](https://gitter.im/hexojs/hexo) or [Telegram](https://t.me/hexojs) +- See the [plugin list](https://hexo.io/plugins/) and the [theme list](https://hexo.io/themes/) on wiki +- Follow [@hexojs](https://twitter.com/hexojs) for latest news diff --git a/apps/hexo/data.yml b/apps/hexo/data.yml new file mode 100644 index 0000000..558a22f --- /dev/null +++ b/apps/hexo/data.yml @@ -0,0 +1,22 @@ +name: Hexo +tags: + - 建站 +title: 快速、简洁且高效的博客框架 +description: 快速、简洁且高效的博客框架 +additionalProperties: + key: hexo + name: Hexo + tags: + - Website + shortDescZh: 快速、简洁且高效的博客框架 + shortDescEn: A fast, simple & powerful blog framework + description: + zh: 快速、简洁且高效的博客框架 + en: A fast, simple & powerful blog framework + type: website + crossVersionUpdate: true + limit: 0 + recommend: 0 + website: https://hexo.io/ + github: https://github.com/hexojs/hexo + document: https://hexo.io/docs/ diff --git a/apps/hexo/latest/.env.sample b/apps/hexo/latest/.env.sample new file mode 100644 index 0000000..f6c6fa5 --- /dev/null +++ b/apps/hexo/latest/.env.sample @@ -0,0 +1,5 @@ +CONTAINER_NAME="hexo" +PANEL_APP_PORT_HTTP="40064" +DATA_PATH="./data" +GIT_USERNAME="gituser" +GIT_MAIL="user@email.com" diff --git a/apps/hexo/latest/data.yml b/apps/hexo/latest/data.yml new file mode 100644 index 0000000..753efcc --- /dev/null +++ b/apps/hexo/latest/data.yml @@ -0,0 +1,24 @@ +additionalProperties: + formFields: + - default: 40064 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Port + labelZh: 端口 + required: true + rule: paramPort + type: number + - default: "" + edit: true + envKey: GIT_USERNAME + labelEn: Git username + labelZh: Git 用户名 + required: true + type: text + - default: "" + edit: true + envKey: GIT_MAIL + labelEn: Git Email + labelZh: Git 邮箱 + required: true + type: text diff --git a/apps/hexo/latest/docker-compose.yml b/apps/hexo/latest/docker-compose.yml new file mode 100644 index 0000000..df809d8 --- /dev/null +++ b/apps/hexo/latest/docker-compose.yml @@ -0,0 +1,25 @@ +services: + hexo: + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:4000" + volumes: + - hexo_data:/app + environment: + - PUID=1000 + - PGID=1000 + - TZ=Asia/Shanghai + - GIT_USER=${GIT_USERNAME} + - GIT_EMAIL=${GIT_MAIL} + image: bloodstar/hexo:latest + labels: + createdBy: "Apps" +volumes: + hexo_data: + name: hexo_data +networks: + 1panel-network: + external: true diff --git a/apps/hexo/logo.png b/apps/hexo/logo.png new file mode 100644 index 0000000..cc61dce Binary files /dev/null and b/apps/hexo/logo.png differ diff --git a/apps/hexo/main/.env.sample b/apps/hexo/main/.env.sample new file mode 100644 index 0000000..f62b64a --- /dev/null +++ b/apps/hexo/main/.env.sample @@ -0,0 +1,2 @@ +CONTAINER_NAME="hexo" +PANEL_APP_PORT_HTTP="40064" diff --git a/apps/hexo/main/data.yml b/apps/hexo/main/data.yml new file mode 100644 index 0000000..58520a1 --- /dev/null +++ b/apps/hexo/main/data.yml @@ -0,0 +1,10 @@ +additionalProperties: + formFields: + - default: 40064 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Port + labelZh: 端口 + required: true + rule: paramPort + type: number diff --git a/apps/hexo/main/docker-compose.yml b/apps/hexo/main/docker-compose.yml new file mode 100644 index 0000000..528460a --- /dev/null +++ b/apps/hexo/main/docker-compose.yml @@ -0,0 +1,20 @@ +services: + hexo: + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:4000" + volumes: + - hexo_data:/home/hexo/.hexo + image: taskbjorn/hexo:main + labels: + createdBy: "Apps" + +volumes: + hexo_data: + +networks: + 1panel-network: + external: true diff --git a/apps/hubcmdui/README.md b/apps/hubcmdui/README.md new file mode 100644 index 0000000..c994dc6 --- /dev/null +++ b/apps/hubcmdui/README.md @@ -0,0 +1,15 @@ +## UI界面 + +- 默认容器监听`3000`端口,映射宿主机端口`30080` + +> 浏览器输入 `服务器地址:30080` 访问前端 + +[![img](https://camo.githubusercontent.com/be01aa91eb4e3b91bf86bcddfe66d282d83bffcc18628248181cc6cd58bb18f7/68747470733a2f2f63646e2e6a7364656c6976722e6e65742f67682f64717a626f792f496d616765732f64717a626f792d70726f78792f687562636d642d75695f30312e706e673f7261773d74727565)](https://camo.githubusercontent.com/be01aa91eb4e3b91bf86bcddfe66d282d83bffcc18628248181cc6cd58bb18f7/68747470733a2f2f63646e2e6a7364656c6976722e6e65742f67682f64717a626f792f496d616765732f64717a626f792d70726f78792f687562636d642d75695f30312e706e673f7261773d74727565) + +### 后台管理 + +> 浏览器输入 `服务器地址:30080/admin` 访问后端页面,默认登入账号密码: root / admin@123 + +![img](https://camo.githubusercontent.com/29330004e99dde6f76a1d0334fe72fa16675e415ea7185c624a994fb5b68d293/68747470733a2f2f63646e2e6a7364656c6976722e6e65742f67682f64717a626f792f496d616765732f64717a626f792d70726f78792f687562636d642d75695f30362e706e673f7261773d74727565) + +![img](https://camo.githubusercontent.com/44f52c58ade3f7a0eab80a2470b8eeccaadd2b241dcfbce4dc88e2a0c5744cb3/68747470733a2f2f63646e2e6a7364656c6976722e6e65742f67682f64717a626f792f496d616765732f64717a626f792d70726f78792f687562636d642d75695f30372e706e673f7261773d74727565) diff --git a/apps/hubcmdui/data.yml b/apps/hubcmdui/data.yml new file mode 100644 index 0000000..d946cbd --- /dev/null +++ b/apps/hubcmdui/data.yml @@ -0,0 +1,25 @@ +name: Hubcmd-ui +tags: + - Other +title: HubCMD-UI Docker镜像加速UI面板 +description: Docker镜像加速命令查询获取、镜像搜索、配置教程文档展示UI面板 +additionalProperties: + key: hubcmdui + name: Hubcmd-ui + tags: + - Tool + shortDescZh: Docker镜像加速查询UI面板 + shortDescEn: Docker image display UI panel + type: website + crossVersionUpdate: true + limit: 1 + recommend: 0 + website: https://github.com/dqzboy/Docker-Proxy + github: https://github.com/dqzboy/Docker-Proxy + document: https://dqzboy.github.io/docs/ + description: + en: Docker image acceleration command query, image search, configuration tutorial document display UI panel + zh: Docker镜像加速命令查询获取、镜像搜索、配置教程文档展示UI面板 + architectures: + - amd64 + - arm64 diff --git a/apps/hubcmdui/latest/data.yml b/apps/hubcmdui/latest/data.yml new file mode 100644 index 0000000..5169a81 --- /dev/null +++ b/apps/hubcmdui/latest/data.yml @@ -0,0 +1,10 @@ +additionalProperties: + formFields: + - default: "30080" + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Service Port 3000 + labelZh: 服务端口 3000 + required: true + rule: paramPort + type: number diff --git a/apps/hubcmdui/latest/docker-compose.yml b/apps/hubcmdui/latest/docker-compose.yml new file mode 100644 index 0000000..feecc7b --- /dev/null +++ b/apps/hubcmdui/latest/docker-compose.yml @@ -0,0 +1,19 @@ +services: + hubcmd-ui: + image: dqzboy/hubcmd-ui:latest + container_name: ${CONTAINER_NAME} + restart: always + ports: + - ${PANEL_APP_PORT_HTTP}:3000 + volumes: + - /var/run/docker.sock:/var/run/docker.sock + networks: + - 1panel-network + environment: + - LOG_LEVEL=INFO + - SIMPLE_LOGS=true + labels: + createdBy: Apps +networks: + 1panel-network: + external: true diff --git a/apps/hubcmdui/logo.png b/apps/hubcmdui/logo.png new file mode 100644 index 0000000..8a103df Binary files /dev/null and b/apps/hubcmdui/logo.png differ diff --git a/apps/jimeng-free-api/README.md b/apps/jimeng-free-api/README.md new file mode 100644 index 0000000..8ae4578 --- /dev/null +++ b/apps/jimeng-free-api/README.md @@ -0,0 +1,35 @@ +### 工具介绍 + +🚀 即梦3.0逆向API【特长:图像生成顶流】,零配置部署,多路token支持,仅供测试,如需商用请前往官方开放平台. + +### 风险说明 + +- 逆向 API 是不稳定的,建议前往即梦 AI 官方 https://jimeng.jianying.com/ 体验功能,避免封禁的风险。 + +- 本组织和个人不接受任何资金捐助和交易,此项目是纯粹研究交流学习性质! + +- 仅限自用,禁止对外提供服务或商用,避免对官方造成服务压力,否则风险自担! + + +### 使用说明 + +从 [即梦](https://jimeng.jianying.com/) 获取 sessionid + +进入即梦登录账号,然后 F12 打开开发者工具,从 Application > Cookies 中找到sessionid的值,复制这个值填写到Lobechat或者CherryStudio等工具中,作为API密钥,API地址是你部署应用的IP加端口,例如:`https://192.168.1.105:8001/v1/chat/completions`,注意某些工具只需要填写`https://192.168.1.105:8001/`即可。 + +![获取sessionid](https://cdn.jsdelivr.net/gh/LLM-Red-Team/jimeng-free-api@master/doc/example-0.png) + +### 多账号接入 + +目前同个账号同时只能有*一路*输出,你可以通过提供多个账号的userToken value并使用`,`拼接提供: + +``` +API密钥:TOKEN1,TOKEN2,TOKEN3 +``` +每次请求服务会从中挑选一个。 + +### 效果展示 +``` +可爱的熊猫漫画,熊猫看到地上有一个叫“即梦”的时间机器,然后说了一句“我借用一下没事吧” +``` +![效果展示](https://cdn.jsdelivr.net/gh/LLM-Red-Team/jimeng-free-api@master/doc/example-1.jpeg) diff --git a/apps/jimeng-free-api/data.yml b/apps/jimeng-free-api/data.yml new file mode 100644 index 0000000..8212d57 --- /dev/null +++ b/apps/jimeng-free-api/data.yml @@ -0,0 +1,24 @@ +name: Jimeng-Free-API +tags: + - AI / 大模型 +title: 🚀 即梦3.0逆向API【特长:图像生成顶流】 +description: 支持即梦超强图像生成能力(目前官方每日赠送 66 积分,可生成 66 次),零配置部署,多路 token 支持 +additionalProperties: + key: jimeng-free-api + name: Jimeng-Free-API + tags: + - AI + - Tools + shortDescZh: 🚀 即梦3.0逆向API【特长:图像生成顶流】 + shortDescEn: A 1Panel deployment for jimeng-free-api + type: website + crossVersionUpdate: true + limit: 0 + recommend: 0 + architectures: + - amd64 + - arm64 + + website: https://jimeng.jianying.com/ + github: https://github.com/LLM-Red-Team/jimeng-free-api + document: https://github.com/LLM-Red-Team/jimeng-free-api \ No newline at end of file diff --git a/apps/jimeng-free-api/latest/data.yml b/apps/jimeng-free-api/latest/data.yml new file mode 100644 index 0000000..563030b --- /dev/null +++ b/apps/jimeng-free-api/latest/data.yml @@ -0,0 +1,10 @@ +additionalProperties: + formFields: + - default: "8005" + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Service Port + labelZh: 服务端口 + required: true + rule: paramPort + type: number diff --git a/apps/jimeng-free-api/latest/docker-compose.yml b/apps/jimeng-free-api/latest/docker-compose.yml new file mode 100644 index 0000000..77017fd --- /dev/null +++ b/apps/jimeng-free-api/latest/docker-compose.yml @@ -0,0 +1,16 @@ +services: + jimeng-free-api: + image: vinlic/jimeng-free-api:latest + container_name: ${CONTAINER_NAME} + ports: + - ${PANEL_APP_PORT_HTTP}:8000 + networks: + - 1panel-network + environment: + - TZ=Asia/Shanghai + labels: + createdBy: Apps + restart: always +networks: + 1panel-network: + external: true diff --git a/apps/jimeng-free-api/logo.png b/apps/jimeng-free-api/logo.png new file mode 100644 index 0000000..25becc3 Binary files /dev/null and b/apps/jimeng-free-api/logo.png differ diff --git a/apps/kali-linux/README.md b/apps/kali-linux/README.md new file mode 100644 index 0000000..939d369 --- /dev/null +++ b/apps/kali-linux/README.md @@ -0,0 +1,53 @@ +# Kali Linux + +Kali Linux 是一个专为渗透测试和安全审计设计的 Debian 基础 Linux 发行版。 + +## 功能特性 + +- 预装数百种渗透测试工具 +- 专为安全研究人员和渗透测试人员设计 +- 支持多种架构(amd64、arm64) +- 基于 LinuxServer.io 的 Docker 镜像 +- 提供完整的渗透测试环境 +- 支持 Web 界面访问 + +## 使用方法 + +1. 部署后通过 Web 浏览器访问容器(默认端口 3000 和 3001) +2. 容器内提供完整的 Kali Linux 环境 +3. 使用预装的渗透测试工具进行安全测试 +4. 支持 Docker 套接字挂载,可在容器内运行 Docker 命令 + +## 预装工具 + +Kali Linux 包含数百种渗透测试工具,包括但不限于: + +- 信息收集工具(nmap、whois、dnsenum 等) +- 漏洞扫描工具(OpenVAS、Nessus 等) +- 无线网络工具(aircrack-ng、reaver 等) +- Web 应用测试工具(Burp Suite、OWASP ZAP 等) +- 密码破解工具(John the Ripper、Hashcat 等) +- 社会工程学工具(Social Engineer Toolkit 等) + +## 配置说明 + +- **端口 3000**:HTTP Web 访问端口 +- **端口 3001**:HTTPS Web 访问端口 +- **时区**:Asia/Shanghai(上海时区) +- **共享内存**:1GB,确保工具正常运行 +- **安全选项**:seccomp:unconfined,允许特权操作 +- **Docker 套接字**:挂载宿主机 Docker 套接字,支持容器内 Docker 操作 + +## 安全提醒 + +⚠️ **重要提醒**:Kali Linux 仅用于合法的安全测试和渗透测试。请确保: + +- 只在您拥有授权的系统上进行测试 +- 遵守当地法律法规 +- 不要用于恶意攻击或非法活动 + +## 相关链接 + +- [官方网站](https://www.kali.org/) +- [Docker Hub](https://hub.docker.com/r/linuxserver/kali-linux) +- [GitHub 项目](https://github.com/linuxserver/docker-kali-linux) \ No newline at end of file diff --git a/apps/kali-linux/README_en.md b/apps/kali-linux/README_en.md new file mode 100644 index 0000000..f1038f0 --- /dev/null +++ b/apps/kali-linux/README_en.md @@ -0,0 +1,53 @@ +# Kali Linux + +Kali Linux is a Debian-based Linux distribution designed for penetration testing and security auditing. + +## Features + +- Pre-installed with hundreds of penetration testing tools +- Designed for security researchers and penetration testers +- Supports multiple architectures (amd64, arm64) +- Based on LinuxServer.io Docker image +- Provides a complete penetration testing environment +- Supports web interface access + +## Usage + +1. Access the container via web browser after deployment (default ports 3000 and 3001) +2. Complete Kali Linux environment available inside the container +3. Use pre-installed penetration testing tools for security testing +4. Docker socket mounting supported, allowing Docker commands inside the container + +## Pre-installed Tools + +Kali Linux includes hundreds of penetration testing tools, including but not limited to: + +- Information gathering tools (nmap, whois, dnsenum, etc.) +- Vulnerability scanning tools (OpenVAS, Nessus, etc.) +- Wireless network tools (aircrack-ng, reaver, etc.) +- Web application testing tools (Burp Suite, OWASP ZAP, etc.) +- Password cracking tools (John the Ripper, Hashcat, etc.) +- Social engineering tools (Social Engineer Toolkit, etc.) + +## Configuration + +- **Port 3000**: HTTP web access port +- **Port 3001**: HTTPS web access port +- **Timezone**: Asia/Shanghai (Shanghai timezone) +- **Shared Memory**: 1GB, ensuring tools run properly +- **Security Options**: seccomp:unconfined, allowing privileged operations +- **Docker Socket**: Mounts host Docker socket, supporting Docker operations inside container + +## Security Notice + +⚠️ **Important Notice**: Kali Linux should only be used for legitimate security testing and penetration testing. Please ensure: + +- Only test systems you are authorized to test +- Comply with local laws and regulations +- Do not use for malicious attacks or illegal activities + +## Links + +- [Official Website](https://www.kali.org/) +- [Docker Hub](https://hub.docker.com/r/linuxserver/kali-linux) +- [GitHub Project](https://github.com/linuxserver/docker-kali-linux) \ No newline at end of file diff --git a/apps/kali-linux/data.yml b/apps/kali-linux/data.yml new file mode 100644 index 0000000..6631ad9 --- /dev/null +++ b/apps/kali-linux/data.yml @@ -0,0 +1,31 @@ +name: Kali Linux +tags: + - 开发工具 +title: Kali Linux 渗透测试环境 +description: Kali Linux 是一个专为渗透测试和安全审计设计的 Linux 发行版 +additionalProperties: + key: kali-linux + name: Kali Linux + tags: + - DevTool + shortDescZh: Kali Linux 渗透测试环境 + shortDescEn: Kali Linux Penetration Testing Environment + description: + en: Kali Linux is a Debian-based Linux distribution designed for penetration testing and security auditing + ja: Kali Linuxは、ペネトレーションテストとセキュリティ監査のために設計されたDebianベースのLinuxディストリビューションです + ms: Kali Linux adalah pengedaran Linux berasaskan Debian yang direka untuk ujian penembusan dan audit keselamatan + pt-br: Kali Linux é uma distribuição Linux baseada em Debian projetada para testes de penetração e auditoria de segurança + ru: Kali Linux - это дистрибутив Linux на основе Debian, разработанный для тестирования на проникновение и аудита безопасности + ko: Kali Linux는 침투 테스트 및 보안 감사를 위해 설계된 Debian 기반 Linux 배포판입니다 + zh-Hant: Kali Linux 是一個專為滲透測試和安全審計設計的 Debian 基礎 Linux 發行版 + zh: Kali Linux 是一个专为渗透测试和安全审计设计的 Debian 基础 Linux 发行版 + type: website + crossVersionUpdate: true + limit: 0 + recommend: 0 + website: https://www.kali.org/ + github: https://github.com/linuxserver/docker-kali-linux + document: https://hub.docker.com/r/linuxserver/kali-linux + architectures: + - amd64 + - arm64 \ No newline at end of file diff --git a/apps/kali-linux/latest/data.yml b/apps/kali-linux/latest/data.yml new file mode 100644 index 0000000..f1981ae --- /dev/null +++ b/apps/kali-linux/latest/data.yml @@ -0,0 +1,36 @@ +additionalProperties: + formFields: + - default: 3000 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Web Port 1 + labelZh: Web 端口 1 + required: true + rule: paramPort + type: number + label: + en: Web Port 1 + ja: Web ポート 1 + ms: Port Web 1 + pt-br: Porta Web 1 + ru: Веб Порт 1 + ko: 웹 포트 1 + zh-Hant: Web 埠 1 + zh: Web 端口 1 + - default: 3001 + edit: true + envKey: PANEL_APP_PORT_HTTPS + labelEn: HTTPS Port + labelZh: HTTPS 端口 + required: true + rule: paramPort + type: number + label: + en: HTTPS Port + ja: HTTPS ポート + ms: Port HTTPS + pt-br: Porta HTTPS + ru: HTTPS Порт + ko: HTTPS 포트 + zh-Hant: HTTPS 埠 + zh: HTTPS 端口 \ No newline at end of file diff --git a/apps/kali-linux/latest/docker-compose.yml b/apps/kali-linux/latest/docker-compose.yml new file mode 100644 index 0000000..a0c0b37 --- /dev/null +++ b/apps/kali-linux/latest/docker-compose.yml @@ -0,0 +1,27 @@ +services: + kali-linux: + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + security_opt: + - seccomp:unconfined + ports: + - "${PANEL_APP_PORT_HTTP}:3000" + - "${PANEL_APP_PORT_HTTPS}:3001" + volumes: + - ./config:/config + - /var/run/docker.sock:/var/run/docker.sock + environment: + - PUID=1000 + - PGID=1000 + - TZ=Asia/Shanghai + - SUBFOLDER=/ + - TITLE=Kali Linux + shm_size: "1gb" + image: lscr.io/linuxserver/kali-linux:latest + labels: + createdBy: "Apps" +networks: + 1panel-network: + external: true \ No newline at end of file diff --git a/apps/kali-linux/logo.png b/apps/kali-linux/logo.png new file mode 100644 index 0000000..b5499bd Binary files /dev/null and b/apps/kali-linux/logo.png differ diff --git a/apps/karakeep/0.24.1/data.yml b/apps/karakeep/0.24.1/data.yml new file mode 100644 index 0000000..d09bd7f --- /dev/null +++ b/apps/karakeep/0.24.1/data.yml @@ -0,0 +1,31 @@ +additionalProperties: + formFields: + - default: 30012 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Port + labelZh: 端口 + required: true + rule: paramPort + type: number + - default: "ky0QvBQNLBQFxY6OurQV/6Wg2KjHqS0YSktBRPJw23QWqq5m" + edit: true + envKey: NEXTAUTH_SECRET + labelEn: NextAuth Secret + labelZh: NextAuth密钥 + required: true + type: text + - default: "a+BQCRpK74QuCSqZPhJ6hDeryTn/1rFKhwuc5DC19hOrI8VR" + edit: true + envKey: MEILI_MASTER_KEY + labelEn: Meilisearch Master Key + labelZh: Meilisearch主密钥 + required: true + type: text + - default: "" + edit: true + envKey: OPENAI_API_KEY + labelEn: OpenAI API Key + labelZh: OpenAI API 密钥 + required: false + type: text \ No newline at end of file diff --git a/apps/karakeep/0.24.1/docker-compose.yml b/apps/karakeep/0.24.1/docker-compose.yml new file mode 100644 index 0000000..c9bd544 --- /dev/null +++ b/apps/karakeep/0.24.1/docker-compose.yml @@ -0,0 +1,46 @@ +services: + karakeep: + image: ghcr.io/karakeep-app/karakeep:0.24.1 + container_name: ${CONTAINER_NAME} + restart: unless-stopped + volumes: + # By default, the data is stored in a docker volume called "data". + # If you want to mount a custom directory, change the volume mapping to: + # - /path/to/your/directory:/data + - data:/data + ports: + - "${PANEL_APP_PORT_HTTP}:3000" + environment: + MEILI_ADDR: http://meilisearch:7700 + BROWSER_WEB_URL: http://chrome:9222 + OPENAI_API_KEY: ${OPENAI_API_KEY} + NEXTAUTH_SECRET: ${NEXTAUTH_SECRET} + MEILI_MASTER_KEY: ${MEILI_MASTER_KEY} + NEXTAUTH_URL: http://localhost:3000 + + # You almost never want to change the value of the DATA_DIR variable. + # If you want to mount a custom directory, change the volume mapping above instead. + DATA_DIR: /data # DON'T CHANGE THIS + chrome: + image: gcr.io/zenika-hub/alpine-chrome:123 + container_name: chrome-${CONTAINER_NAME} + restart: unless-stopped + command: + - --no-sandbox + - --disable-gpu + - --disable-dev-shm-usage + - --remote-debugging-address=0.0.0.0 + - --remote-debugging-port=9222 + - --hide-scrollbars + meilisearch: + image: getmeili/meilisearch:v1.11.1 + container_name: meili-${CONTAINER_NAME} + restart: unless-stopped + environment: + MEILI_NO_ANALYTICS: "true" + volumes: + - meilisearch:/meili_data + +volumes: + meilisearch: + data: diff --git a/apps/karakeep/README.md b/apps/karakeep/README.md new file mode 100644 index 0000000..3135be6 --- /dev/null +++ b/apps/karakeep/README.md @@ -0,0 +1,71 @@ +# [![img](https://github.com/hoarder-app/hoarder/raw/main/screenshots/logo.png)](https://github.com/hoarder-app/hoarder/blob/main/screenshots/logo.png) + +一款可自托管的书签应用程序,带有人工智能功能,适合数据囤积者使用。 + +> *karakeep(原名Hoarder) 是一个独立的非商业项目。它与 Hordr.app 或其所有者没有任何关联、支持或联系。* + +[![主页截图](https://github.com/hoarder-app/hoarder/raw/main/screenshots/homepage.png?raw=true)](https://github.com/hoarder-app/hoarder/blob/main/screenshots/homepage.png?raw=true) + +## 特征 + +- 🔗 为链接添加书签、做简单的笔记并存储图像和 PDF。 +- ⬇️ 自动获取链接标题、描述和图像。 +- 📋 将您的书签分类放入列表。 +- 🔎 对存储的所有内容进行全文搜索。 +- ✨ 基于 AI(又名 chatgpt)的自动标记。支持使用 ollama 的本地模型! +- 🎆 OCR 用于从图像中提取文本。 +- 🔖 [Chrome 插件](https://chromewebstore.google.com/detail/hoarder/kgcjekpmcjjogibpjebkhaanilehneje)和[Firefox 插件](https://addons.mozilla.org/en-US/firefox/addon/hoarder/)可快速添加书签。 +- 📱一个[iOS 应用程序](https://apps.apple.com/us/app/hoarder-app/id6479258022)和一个[Android 应用程序](https://play.google.com/store/apps/details?id=app.hoarder.hoardermobile&pcampaignid=web_share)。 +- 📰 自动从 RSS 源中收集信息。 +- 🔌 REST API。 +- 🌐 多语言支持。 +- 🖍️ 标记并存储您收藏的内容中的亮点。 +- 🗄️ 整页存档(使用[monolith](https://github.com/Y2Z/monolith))以防止链接腐烂。使用[youtube-dl](https://github.com/marado/youtube-dl)自动存档视频。 +- ☑️批量操作支持。 +- 🔐 SSO 支持。 +- 🌙 支持暗黑模式。 +- 💾 首先进行自我托管。 +- [计划] 下载内容以供在移动应用程序中离线阅读。 + +**⚠️该应用程序正在大力开发中,还远未稳定。** + +## 文档 + +- [安装](https://docs.hoarder.app/Installation/docker) +- [配置](https://docs.hoarder.app/configuration) +- [截图](https://docs.hoarder.app/screenshots) +- [安全注意事项](https://docs.hoarder.app/security-considerations) +- [发展](https://docs.hoarder.app/Development/setup) + +## 演示 + +您可以通过[https://try.hoarder.app](https://try.hoarder.app/)访问演示。使用以下凭据登录: + +``` +email: demo@hoarder.app +password: demodemo +``` + +该演示包含一些内容,但为了防止滥用,它处于只读模式。 + +## 堆 + +- 用于 Web 应用的[NextJS 。使用应用路由器。](https://nextjs.org/) +- [Drizzle](https://orm.drizzle.team/)用于数据库及其迁移。 +- [NextAuth](https://next-auth.js.org/)用于身份验证。 +- [tRPC](https://trpc.io/)用于客户端->服务器通信。 +- 用于抓取书签的[Puppeteer 。](https://pptr.dev/) +- [OpenAI](https://openai.com/),因为人工智能现在非常热门。 +- [Meilisearch](https://meilisearch.com/)提供全文搜索。 + +## 替代方案 + +- [memos](https://github.com/usememos/memos):我喜欢 memos。它在我的家庭服务器上运行,是我最常用的自托管应用程序之一。但是,它不会存档或预览其中共享的链接。我只是在那里转储了很多链接,如果我能通过查看我的时间线来确定哪个链接是那个链接,我会很高兴。此外,考虑到我在那里转储的各种东西,如果它能对我保存在那里的东西进行某种自动标记,我会很高兴。这正是我试图用 Hoarder 解决的用例。 +- [mymind](https://mymind.com/):Mymind 是这个项目最接近的替代品,我从中汲取了很多灵感。不过它是一款商业产品。 +- [raindrop](https://raindrop.io/):一款精致的开源书签管理器,支持链接、图像和文件。不过它不能自托管。 +- 书签管理器(主要侧重于书签链接): + - [Pocket](https://getpocket.com/):Pocket 让我对稍后阅读应用的想法产生了浓厚的兴趣。我[经常](https://blog.mbassem.com/2019/01/27/favorite-articles-2018/)使用它。但是,我最近开始在家做实验,并开始痴迷于在家庭服务器中运行我的服务的想法。Hoarder 旨在成为第一个自托管应用。 + - [Linkwarden](https://linkwarden.app/):一款开源自托管书签管理器,我在家里的实验室里运行过一段时间。它主要关注链接并支持协作收藏。 + - [Omnivore](https://omnivore.app/):Omnivore 是一款非常酷的开源稍后阅读应用程序。不幸的是,它严重依赖于谷歌云基础设施,这使得自托管变得相当困难。他们发布了一篇关于如何运行最小 Omnivore 的[博客文章](https://docs.omnivore.app/self-hosting/self-hosting.html),但缺少很多东西。自托管似乎并不是他们的首要任务,而这正是我关心的事情,所以我决定构建一个替代方案。 + - [Wallabag](https://wallabag.it/):Wallabag 是一款成熟的开源稍后阅读应用程序,使用 php 编写,我认为它是 reddit 上对此类应用程序的普遍推荐。说实话,我没有真正尝试过,而且它的 UI 对我来说有点过时。老实说,它可能比这个应用程序更稳定、功能更齐全,但那有什么乐趣呢? + - [Shiori](https://github.com/go-shiori/shiori):Shiori 是一个用 Go 编写的开源袖珍克隆版。它满足所有要求,但没有我超级复杂的基于 AI 的标记功能。(开玩笑的,我是在决定构建自己的应用程序后才发现它的,所以我们就在这里🤷)。 \ No newline at end of file diff --git a/apps/karakeep/data.yml b/apps/karakeep/data.yml new file mode 100644 index 0000000..c7e66a7 --- /dev/null +++ b/apps/karakeep/data.yml @@ -0,0 +1,21 @@ +name: karakeep +tags: + - 书签管理 + - AI工具 +title: karakeep书签管理器 +description: 原名Hoarder,一个自托管的全能书签管理工具,支持保存链接、笔记和图片,具有AI自动标签功能。 +additionalProperties: + key: karakeep + name: karakeep + tags: + - Tool + - AI + shortDescZh: 智能书签和笔记管理工具 + shortDescEn: Smart Bookmark and Note Manager + type: website + crossVersionUpdate: true + limit: 0 + recommend: 0 + website: https://karakeep.app/ + github: https://github.com/karakeep-app/karakeep + document: https://docs.karakeep.app/ \ No newline at end of file diff --git a/apps/karakeep/logo.png b/apps/karakeep/logo.png new file mode 100644 index 0000000..edfdd52 Binary files /dev/null and b/apps/karakeep/logo.png differ diff --git a/apps/keepassxc/README.md b/apps/keepassxc/README.md new file mode 100644 index 0000000..239769e --- /dev/null +++ b/apps/keepassxc/README.md @@ -0,0 +1,26 @@ +# KeePassXC + +KeePassXC 是一款开源、跨平台的密码管理器,支持Web界面和多种平台。 + +## 功能特性 + +- 跨平台密码管理,支持多种操作系统 +- 支持Web界面管理(默认端口3000) +- 数据库文件本地存储,安全可靠 +- 支持浏览器集成和自动填充 +- 支持多用户和多数据库 +- 轻量级、资源占用低 + +## 使用方法 + +1. 部署后访问 `http://服务器IP:3000` 进入Web管理界面 +2. 创建或导入密码数据库(.kdbx 文件) +3. 配置浏览器插件实现自动填充 +4. 数据库目录:`./db` + +## 相关链接 + +- [官方网站](https://keepassxc.org/) +- [GitHub 项目](https://github.com/keepassxreboot/keepassxc) +- [官方文档](https://keepassxc.org/docs/) +- [Docker Hub](https://hub.docker.com/r/linuxserver/keepassxc) \ No newline at end of file diff --git a/apps/keepassxc/README_en.md b/apps/keepassxc/README_en.md new file mode 100644 index 0000000..e088f30 --- /dev/null +++ b/apps/keepassxc/README_en.md @@ -0,0 +1,26 @@ +# KeePassXC + +KeePassXC is an open-source, cross-platform password manager with web interface support. + +## Features + +- Cross-platform password management for multiple OS +- Web UI management (default port 3000) +- Local database file storage, secure and reliable +- Browser integration and autofill support +- Multi-user and multi-database support +- Lightweight and low resource usage + +## Usage + +1. After deployment, access `http://your-server-ip:3000` for the web UI +2. Create or import a password database (.kdbx file) +3. Configure browser extension for autofill +4. Database directory: `./db` + +## Links + +- [Official Website](https://keepassxc.org/) +- [GitHub Project](https://github.com/keepassxreboot/keepassxc) +- [Official Documentation](https://keepassxc.org/docs/) +- [Docker Hub](https://hub.docker.com/r/linuxserver/keepassxc) \ No newline at end of file diff --git a/apps/keepassxc/data.yml b/apps/keepassxc/data.yml new file mode 100644 index 0000000..481b1b3 --- /dev/null +++ b/apps/keepassxc/data.yml @@ -0,0 +1,32 @@ +name: KeePassXC +tags: + - 实用工具 +title: 跨平台密码管理器 +description: KeePassXC 是一款开源、跨平台的密码管理器,支持Web界面和多种平台 +additionalProperties: + key: keepassxc + name: KeePassXC + tags: + - Tool + shortDescZh: 跨平台密码管理器 + shortDescEn: Cross-platform password manager + description: + en: KeePassXC is an open-source, cross-platform password manager with web interface support + ja: KeePassXCはWebインターフェースをサポートするオープンソースのクロスプラットフォームパスワードマネージャーです + ms: KeePassXC ialah pengurus kata laluan sumber terbuka merentas platform dengan sokongan antara muka web + pt-br: KeePassXC é um gerenciador de senhas de código aberto e multiplataforma com suporte a interface web + ru: KeePassXC — это кроссплатформенный менеджер паролей с открытым исходным кодом и поддержкой веб-интерфейса + ko: KeePassXC는 웹 인터페이스를 지원하는 오픈 소스 크로스 플랫폼 비밀번호 관리자입니다 + zh-Hant: KeePassXC 是一款開源、跨平台的密碼管理器,支援 Web 管理 + zh: KeePassXC 是一款开源、跨平台的密码管理器,支持Web界面和多种平台 + type: website + crossVersionUpdate: true + limit: 0 + recommend: 0 + website: https://keepassxc.org/ + github: https://github.com/keepassxreboot/keepassxc + document: https://keepassxc.org/docs/ + architectures: + - amd64 + - arm64 + - arm/v7 \ No newline at end of file diff --git a/apps/keepassxc/latest/data.yml b/apps/keepassxc/latest/data.yml new file mode 100644 index 0000000..7d80864 --- /dev/null +++ b/apps/keepassxc/latest/data.yml @@ -0,0 +1,19 @@ +additionalProperties: + formFields: + - default: 3000 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Web UI Port + labelZh: Web界面端口 + required: true + rule: paramPort + type: number + label: + en: Web UI Port + ja: Web UI ポート + ms: Port UI Web + pt-br: Porta da interface web + ru: Веб-порт интерфейса + ko: 웹 UI 포트 + zh-Hant: Web UI 埠 + zh: Web界面端口 \ No newline at end of file diff --git a/apps/keepassxc/latest/docker-compose.yml b/apps/keepassxc/latest/docker-compose.yml new file mode 100644 index 0000000..d19d770 --- /dev/null +++ b/apps/keepassxc/latest/docker-compose.yml @@ -0,0 +1,21 @@ +services: + keepassxc: + container_name: ${CONTAINER_NAME} + image: lscr.io/linuxserver/keepassxc:latest + restart: always + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:3000" + environment: + - TZ=Asia/Shanghai + - PUID=1000 + - PGID=1000 + volumes: + - ./config:/config + - ./db:/db + labels: + createdBy: "Apps" +networks: + 1panel-network: + external: true \ No newline at end of file diff --git a/apps/keepassxc/logo.png b/apps/keepassxc/logo.png new file mode 100644 index 0000000..7a54878 Binary files /dev/null and b/apps/keepassxc/logo.png differ diff --git a/apps/kimi-free-api/README.md b/apps/kimi-free-api/README.md new file mode 100644 index 0000000..438ff24 --- /dev/null +++ b/apps/kimi-free-api/README.md @@ -0,0 +1,34 @@ +### 工具介绍 + +🚀 KIMI AI 长文本大模型逆向API【特长:长文本解读整理】,支持高速流式输出、智能体对话、联网搜索、探索版、K1思考模型、长文档解读、图像解析、多轮对话,零配置部署,多路token支持,自动清理会话痕迹,仅供测试,如需商用请前往官方开放平台。 + +### 风险说明 + +- 逆向API是不稳定的,建议前往DeepSeek官方 https://platform.moonshot.cn/ 付费使用API,避免封禁的风险。 + +- 本组织和个人不接受任何资金捐助和交易,此项目是纯粹研究交流学习性质! + +- 仅限自用,禁止对外提供服务或商用,避免对官方造成服务压力,否则风险自担! + + +### 使用说明 + +从 [kimi.moonshot.cn](https://kimi.moonshot.cn/) 获取refresh_token + +进入kimi随便发起一个对话,然后F12打开开发者工具,从Application > Local Storage中找到`refresh_token`的值,复制这个值填写到Lobechat或者CherryStudio等工具中,作为API密钥,API地址是你部署应用的IP加端口,例如:`https://192.168.1.105:8001/v1/chat/completions`,注意某些工具只需要填写`https://192.168.1.105:8001/`即可。 + +![获取token](https://cdn.jsdelivr.net/gh/LLM-Red-Team/kimi-free-api@master/doc/example-0.png) + +如果你看到的`refresh_token`是一个数组,请使用`.`拼接起来再使用。 + +![example8](https://cdn.jsdelivr.net/gh/LLM-Red-Team/kimi-free-api@master/doc/example-8.jpg) + +### 多账号接入 + +目前同个账号同时只能有*一路*输出,你可以通过提供多个账号的userToken value并使用`,`拼接提供: + +``` +API密钥:TOKEN1,TOKEN2,TOKEN3 +``` + +每次请求服务会从中挑选一个。 diff --git a/apps/kimi-free-api/data.yml b/apps/kimi-free-api/data.yml new file mode 100644 index 0000000..a919fae --- /dev/null +++ b/apps/kimi-free-api/data.yml @@ -0,0 +1,24 @@ +name: Kimi-Free-API +tags: + - AI / 大模型 +title: 🚀 KIMI AI 长文本大模型逆向API +description: Moonshot AI(Kimi.ai)接口转API +additionalProperties: + key: kimi-free-api + name: Kimi-Free-API + tags: + - AI + - Tools + shortDescZh: 🚀 KIMI AI 长文本大模型逆向API + shortDescEn: A 1Panel deployment for kimi-free-api + type: website + crossVersionUpdate: true + limit: 0 + recommend: 0 + architectures: + - amd64 + - arm64 + + website: https://platform.moonshot.cn/ + github: https://github.com/LLM-Red-Team/kimi-free-api + document: https://github.com/LLM-Red-Team/kimi-free-api \ No newline at end of file diff --git a/apps/kimi-free-api/latest/data.yml b/apps/kimi-free-api/latest/data.yml new file mode 100644 index 0000000..2b7be3c --- /dev/null +++ b/apps/kimi-free-api/latest/data.yml @@ -0,0 +1,10 @@ +additionalProperties: + formFields: + - default: "8002" + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Service Port + labelZh: 服务端口 + required: true + rule: paramPort + type: number diff --git a/apps/kimi-free-api/latest/docker-compose.yml b/apps/kimi-free-api/latest/docker-compose.yml new file mode 100644 index 0000000..ce935a9 --- /dev/null +++ b/apps/kimi-free-api/latest/docker-compose.yml @@ -0,0 +1,16 @@ +services: + kimi-free-api: + image: vinlic/kimi-free-api:latest + container_name: ${CONTAINER_NAME} + ports: + - ${PANEL_APP_PORT_HTTP}:8000 + networks: + - 1panel-network + environment: + - TZ=Asia/Shanghai + labels: + createdBy: Apps + restart: always +networks: + 1panel-network: + external: true diff --git a/apps/kimi-free-api/logo.png b/apps/kimi-free-api/logo.png new file mode 100644 index 0000000..6e9e3a4 Binary files /dev/null and b/apps/kimi-free-api/logo.png differ diff --git a/apps/linkwarden/README.md b/apps/linkwarden/README.md new file mode 100644 index 0000000..6e80e17 --- /dev/null +++ b/apps/linkwarden/README.md @@ -0,0 +1,46 @@ +# Linkwarden + +Linkwarden 是一个自托管、开源的协作书签管理工具,支持网页归档、团队协作、全文搜索等功能。 + +## 主要特性 + +- 📸 自动捕获每个网页的屏幕截图、PDF、单个 html 文件和可读视图。 +- 🏛️ 将你的网页发送到 Wayback Machine ( archive.org ) 获取快照。(可选) +- ✨ 本地 AI 标记可根据链接内容自动标记链接(可选)。 +- 📂 按集合、子集合、名称、描述和多个标签组织链接。 +- 👥 协作收集集合中的链接。 +- 🎛️自定义每个成员的权限。 +- 🌐 与世界分享您收集的链接和保存的格式。 +- 📌 将您最喜欢的链接固定到仪表板。 +- 🔍 全文搜索、过滤和排序,方便检索。 +- 📱 响应式设计并支持大多数现代浏览器。 +- 🌓 支持暗/亮模式。 +- 🧩 浏览器扩展程序。在此加星标! +- 🔄 浏览器同步(使用Floccus!) +- ⬇️ 导入和导出您的书签。 +- 🔐 SSO 集成。(仅限企业用户和自托管用户) +- 📦可安装的渐进式 Web 应用程序 (PWA)。 +- 🍎 iOS 快捷方式将链接保存到 Linkwarden。 +- 🔑 API 密钥。 +- ✅ 批量操作。 +- 👥 用户管理。 +- 🌐 支持其他语言(i18n)。 +- 📁 图像和 PDF 上传。 +- 🎨 链接和收藏的自定义图标。 +- 🔔 RSS 订阅。 + +## 官网与文档 + +- 官网:https://linkwarden.app +- 文档:https://docs.linkwarden.app +- 源码:https://github.com/linkwarden/linkwarden + +## 1Panel 部署说明 + +1. 在 1Panel 应用商店搜索 Linkwarden 并安装 +2. 安装完成后,访问 `http://服务器IP:端口` 进行初始化设置 +3. 数据默认持久化在 `data` 目录下 + +## 相关截图 + +![dashboard](https://raw.githubusercontent.com/linkwarden/linkwarden/main/assets/dashboard.png) \ No newline at end of file diff --git a/apps/linkwarden/data.yml b/apps/linkwarden/data.yml new file mode 100644 index 0000000..140bee2 --- /dev/null +++ b/apps/linkwarden/data.yml @@ -0,0 +1,24 @@ +name: linkwarden +tags: + - 工具 + - 书签 + - 协作 + - 开源 +title: Linkwarden +description: Linkwarden 是一个自托管、开源的协作书签管理工具,支持网页归档、团队协作、全文搜索等功能。 +additionalProperties: + key: linkwarden + name: Linkwarden + tags: + - 工具 + - 书签 + - 协作 + - 开源 + shortDescZh: Linkwarden 书签归档与协作工具 + shortDescEn: Linkwarden - Collaborative Bookmark Manager + type: website + crossVersionUpdate: true + website: https://linkwarden.app + github: https://github.com/linkwarden/linkwarden + document: https://docs.linkwarden.app + diff --git a/apps/linkwarden/latest/.env.sample b/apps/linkwarden/latest/.env.sample new file mode 100644 index 0000000..dbcd3ab --- /dev/null +++ b/apps/linkwarden/latest/.env.sample @@ -0,0 +1,4 @@ +NEXTAUTH_URL=http://localhost:3000/api/v1/auth +NEXTAUTH_SECRET=${NEXTAUTH_SECRET} +MEILI_MASTER_KEY=${MEILI_MASTER_KEY} +POSTGRES_PASSWORD=${POSTGRES_PASSWORD} \ No newline at end of file diff --git a/apps/linkwarden/latest/data.yml b/apps/linkwarden/latest/data.yml new file mode 100644 index 0000000..b31f5a5 --- /dev/null +++ b/apps/linkwarden/latest/data.yml @@ -0,0 +1,34 @@ +additionalProperties: + formFields: + - default: "3000" + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Service Port 3000 + labelZh: 服务端口 3000 + required: true + rule: paramPort + type: number + - default: "" + edit: true + envKey: NEXTAUTH_SECRET + labelEn: NEXTAuth Secret + labelZh: NEXTAuth 密钥 + required: true + rule: paramComplexity + type: password + - default: "" + edit: true + envKey: POSTGRES_PASSWORD + labelEn: Postgres Password + labelZh: Postgres 数据库密码 + required: true + rule: paramComplexity + type: password + - default: "" + edit: true + envKey: MEILI_MASTER_KEY + labelEn: Meilisearch Master Key + labelZh: Meilisearch 主密钥 + required: true + rule: paramComplexity + type: password diff --git a/apps/linkwarden/latest/docker-compose.yml b/apps/linkwarden/latest/docker-compose.yml new file mode 100644 index 0000000..9e943af --- /dev/null +++ b/apps/linkwarden/latest/docker-compose.yml @@ -0,0 +1,47 @@ +services: + linkwarden: + image: ghcr.io/linkwarden/linkwarden:latest + container_name: ${CONTAINER_NAME} + restart: always + ports: + - ${PANEL_APP_PORT_HTTP}:3000 + volumes: + - ./data:/data/data + networks: + - 1panel-network + environment: + - DATABASE_URL=postgresql://postgres:${POSTGRES_PASSWORD}@postgres:5432/postgres + - NEXTAUTH_URL=http://localhost:3000/api/v1/auth + - NEXTAUTH_SECRET=${NEXTAUTH_SECRET} + depends_on: + - postgres + - meilisearch + labels: + createdBy: Apps + meilisearch: + image: getmeili/meilisearch:v1.12.8 + container_name: ${CONTAINER_NAME}-Meilisearch + restart: always + volumes: + - ./meili_data:/meili_data + networks: + - 1panel-network + environment: + - MEILI_MASTER_KEY=${MEILI_MASTER_KEY} + labels: + createdBy: Apps + postgres: + image: postgres:16-alpine + container_name: ${CONTAINER_NAME}-Postgres + restart: always + volumes: + - ./pgdata:/var/lib/postgresql/data + networks: + - 1panel-network + environment: + - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} + labels: + createdBy: Apps +networks: + 1panel-network: + external: true diff --git a/apps/linkwarden/logo.png b/apps/linkwarden/logo.png new file mode 100644 index 0000000..843f681 Binary files /dev/null and b/apps/linkwarden/logo.png differ diff --git a/apps/lobe-chat-data/1.77.16/.env b/apps/lobe-chat-data/1.77.16/.env new file mode 100644 index 0000000..28d716d --- /dev/null +++ b/apps/lobe-chat-data/1.77.16/.env @@ -0,0 +1,41 @@ +# Proxy,如果你需要的话(比如你使用 GitHub 作为鉴权服务提供商) +# HTTP_PROXY=http://localhost:7890 +# HTTPS_PROXY=http://localhost:7890 + + +# 其他环境变量,视需求而定,可以参照客户端版本的环境变量配置,注意不要有 ACCESS_CODE +# OPENAI_API_KEY=sk-xxxx +# OPENAI_PROXY_URL=https://api.openai.com/v1 +# OPENAI_MODEL_LIST=... + + +# =================== +# ===== 预设配置 ===== +# =================== +# 如没有特殊需要不用更改 +LOBE_PORT=3210 +CASDOOR_PORT=8000 +MINIO_PORT=9000 +APP_URL=http://192.168.123.105:3210 +AUTH_URL=http://192.168.123.105:3210/api/auth + +# Postgres 相关,也即 DB 必须的环境变量 +LOBE_DB_NAME=lobechat +POSTGRES_PASSWORD=uWNZugjBqixf8dxC + +AUTH_CASDOOR_ISSUER=http://192.168.123.105:8000 +# Casdoor secret +AUTH_CASDOOR_ID=a387a4892ee19b1a2249 +AUTH_CASDOOR_SECRET=dbf205949d704de81b0b5b3603174e23fbecc354 + +# MinIO S3 配置 +MINIO_ROOT_USER=admin +MINIO_ROOT_PASSWORD=YOUR_MINIO_PASSWORD + +# 在下方配置 minio 中添加的桶 +S3_PUBLIC_DOMAIN=http://192.168.123.105:9000 +S3_ENDPOINT=http://192.168.123.105:9000 +MINIO_LOBE_BUCKET=lobe + +# 为 casdoor 配置 +origin=http://192.168.123.105:8000 \ No newline at end of file diff --git a/apps/lobe-chat-data/1.77.16/data.yml b/apps/lobe-chat-data/1.77.16/data.yml new file mode 100644 index 0000000..e9aa99c --- /dev/null +++ b/apps/lobe-chat-data/1.77.16/data.yml @@ -0,0 +1,137 @@ +additionalProperties: + formFields: +# Default config + - default: 3210 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Application Port + labelZh: 应用端口 + required: true + rule: paramPort + type: number + - default: 8000 + edit: true + envKey: CASDOOR_PORT + labelEn: CASDOOR Port + labelZh: CASDOOR 端口 + required: true + rule: paramPort + type: number + - default: 9000 + edit: true + envKey: MINIO_PORT + labelEn: MinIO Port + labelZh: MinIO端口 + required: true + rule: paramPort + type: number + - default: http://Your-IP:3210 + edit: true + envKey: APP_URL + labelEn: Application URL + labelZh: 应用地址 + required: true + rule: paramExtUrl + type: text + - default: http://Your-IP:3210/api/auth + edit: true + envKey: AUTH_URL + labelEn: Auth Service URL + labelZh: 认证服务地址 + required: true + rule: paramExtUrl + type: text +# Postgres related + - default: lobechat + edit: true + envKey: LOBE_DB_NAME + labelEn: Database Name + labelZh: 数据库名称 + random: true + required: true + rule: paramCommon + type: text + - default: uWNZugjBqixf8dxC + edit: true + envKey: POSTGRES_PASSWORD + labelEn: Database Password + labelZh: 数据库密码 + required: true + rule: paramCommon + type: password + - default: http://Your-IP:8000 + edit: true + envKey: AUTH_CASDOOR_ISSUER + labelEn: AUTH CASDOOR ISSUER + labelZh: AUTH CASDOOR ISSUER + required: true + rule: paramExtUrl + type: text +# Casdoor secret + - default: a387a4892ee19b1a2249 + edit: true + envKey: AUTH_CASDOOR_ID + labelEn: AUTH CASDOOR ID + labelZh: AUTH CASDOOR ID + required: true + rule: paramCommon + type: text + - default: dbf205949d704de81b0b5b3603174e23fbecc354 + edit: true + envKey: AUTH_CASDOOR_SECRET + labelEn: AUTH CASDOOR SECRET + labelZh: AUTH CASDOOR SECRET + required: true + rule: paramCommon + type: password +# MinIO S3 configuration + - default: admin + edit: true + envKey: MINIO_ROOT_USER + labelEn: MinIO ROOT User + labelZh: MinIO ROOT User + required: true + rule: paramCommon + type: text + - default: e07a87a0 + edit: true + envKey: MINIO_ROOT_PASSWORD + labelEn: MinIO ROOT Password + labelZh: MinIO ROOT Password + required: true + rule: paramCommon + type: password +# Configure the bucket information of MinIO + - default: http://Your-IP:9000 + edit: true + envKey: S3_ENDPOINT + labelEn: S3 Endpoint + labelZh: S3 Endpoint + required: true + rule: paramExtUrl + type: text + - default: http://Your-IP:9000 + edit: true + envKey: S3_PUBLIC_DOMAIN + labelEn: S3 PUBLIC DOMAIN + labelZh: S3 PUBLIC DOMAIN + required: true + rule: paramExtUrl + type: text + - default: lobe + edit: true + envKey: MINIO_LOBE_BUCKET + labelEn: MINIO LOBE BUCKET + labelZh: MINIO LOBE BUCKET + required: true + rule: paramCommon + type: text +# Configure for casdoor + - default: http://Your-IP:8000 + edit: true + envKey: origin + labelEn: origin + labelZh: origin + required: true + rule: paramExtUrl + type: text \ No newline at end of file diff --git a/apps/lobe-chat-data/1.77.16/docker-compose.yml b/apps/lobe-chat-data/1.77.16/docker-compose.yml new file mode 100644 index 0000000..9ff7eec --- /dev/null +++ b/apps/lobe-chat-data/1.77.16/docker-compose.yml @@ -0,0 +1,122 @@ +services: + network-service: + image: alpine + container_name: lobe-network + restart: always + ports: + - '${MINIO_PORT}:${MINIO_PORT}' # MinIO API + - '9001:9001' # MinIO Console + - '${CASDOOR_PORT}:${CASDOOR_PORT}' # Casdoor + - '${PANEL_APP_PORT_HTTP}:3210' # LobeChat + command: tail -f /dev/null + networks: + - lobe-network + + postgresql: + image: pgvector/pgvector:pg17 + container_name: lobe-postgres + ports: + - '5432:5432' + volumes: + - './data:/var/lib/postgresql/data' + environment: + - 'POSTGRES_DB=${LOBE_DB_NAME}' + - 'POSTGRES_PASSWORD=${POSTGRES_PASSWORD}' + healthcheck: + test: ['CMD-SHELL', 'pg_isready -U postgres'] + interval: 5s + timeout: 5s + retries: 5 + restart: always + networks: + - lobe-network + + minio: + image: minio/minio + container_name: lobe-minio + network_mode: 'service:network-service' + volumes: + - './s3_data:/etc/minio/data' + - ./minio-entrypoint.sh:/entrypoint.sh + environment: + - 'MINIO_API_CORS_ALLOW_ORIGIN=*' + env_file: + - .env + restart: always + entrypoint: ["sh", "/entrypoint.sh"] + + casdoor: + image: casbin/casdoor:v1.843.0 + container_name: lobe-casdoor + entrypoint: /bin/sh -c './server --createDatabase=true' + network_mode: 'service:network-service' + depends_on: + postgresql: + condition: service_healthy + environment: + httpport: ${CASDOOR_PORT} + RUNNING_IN_DOCKER: 'true' + driverName: 'postgres' + dataSourceName: 'user=postgres password=${POSTGRES_PASSWORD} host=postgresql port=5432 sslmode=disable dbname=casdoor' + runmode: 'dev' + volumes: + - ./init_data.json:/init_data.json + env_file: + - .env + + searxng: + image: searxng/searxng + container_name: lobe-searxng + volumes: + - './searxng-settings.yml:/etc/searxng/settings.yml' + environment: + - 'SEARXNG_SETTINGS_FILE=/etc/searxng/settings.yml' + restart: always + networks: + - lobe-network + env_file: + - .env + + lobe: + image: lobehub/lobe-chat-database:1.77.16 + container_name: lobe-chat + network_mode: 'service:network-service' + depends_on: + postgresql: + condition: service_healthy + network-service: + condition: service_started + minio: + condition: service_started + casdoor: + condition: service_started + + environment: + - 'NEXT_AUTH_SSO_PROVIDERS=casdoor' + - 'KEY_VAULTS_SECRET=Kix2wcUONd4CX51E/ZPAd36BqM4wzJgKjPtz2sGztqQ=' + - 'NEXT_AUTH_SECRET=NX2kaPE923dt6BL2U8e9oSre5RfoT7hg' + - 'DATABASE_URL=postgresql://postgres:${POSTGRES_PASSWORD}@postgresql:5432/${LOBE_DB_NAME}' + - 'S3_BUCKET=${MINIO_LOBE_BUCKET}' + - 'S3_ENABLE_PATH_STYLE=1' + - 'S3_ACCESS_KEY=${MINIO_ROOT_USER}' + - 'S3_ACCESS_KEY_ID=${MINIO_ROOT_USER}' + - 'S3_SECRET_ACCESS_KEY=${MINIO_ROOT_PASSWORD}' + - 'LLM_VISION_IMAGE_USE_BASE64=1' + - 'S3_SET_ACL=0' + - 'SEARXNG_URL=http://searxng:8080' + env_file: + - .env + restart: always + volumes: + - ./lobe-entrypoint.sh:/entrypoint.sh + entrypoint: ["sh", "/entrypoint.sh"] + +volumes: + data: + driver: local + s3_data: + driver: local + +networks: + lobe-network: + driver: bridge diff --git a/apps/lobe-chat-data/1.77.16/init_data.json b/apps/lobe-chat-data/1.77.16/init_data.json new file mode 100644 index 0000000..2eb9fac --- /dev/null +++ b/apps/lobe-chat-data/1.77.16/init_data.json @@ -0,0 +1,1238 @@ +{ + "adapters": [ + { + "owner": "built-in", + "name": "user-adapter-built-in", + "createdTime": "2024-09-09T09:26:13Z", + "table": "casbin_user_rule", + "useSameDb": true, + "type": "", + "databaseType": "", + "host": "", + "port": 0, + "user": "", + "password": "", + "database": "" + }, + { + "owner": "built-in", + "name": "api-adapter-built-in", + "createdTime": "2024-09-09T09:26:12Z", + "table": "casbin_api_rule", + "useSameDb": true, + "type": "", + "databaseType": "", + "host": "", + "port": 0, + "user": "", + "password": "", + "database": "" + } + ], + "applications": [ + { + "owner": "admin", + "name": "lobechat", + "createdTime": "2024-09-09T09:26:06Z", + "displayName": "LobeChat", + "logo": "https://lobehub.com/icon-192x192.png", + "homepageUrl": "https://lobehub.com", + "description": "LobeChat", + "organization": "lobechat", + "cert": "cert-built-in", + "headerHtml": "", + "enablePassword": true, + "enableSignUp": true, + "enableSigninSession": false, + "enableAutoSignin": false, + "enableCodeSignin": false, + "enableSamlCompress": false, + "enableSamlC14n10": false, + "enableSamlPostBinding": false, + "enableWebAuthn": false, + "enableLinkWithEmail": true, + "orgChoiceMode": "", + "samlReplyUrl": "", + "providers": [], + "signinMethods": [ + { + "name": "Password", + "displayName": "Password", + "rule": "All" + } + ], + "signupItems": [ + { + "name": "ID", + "visible": false, + "required": true, + "prompted": false, + "customCss": "", + "label": "", + "placeholder": "", + "regex": "", + "rule": "Random" + }, + { + "name": "Username", + "visible": true, + "required": true, + "prompted": false, + "customCss": "", + "label": "", + "placeholder": "", + "regex": "", + "rule": "None" + }, + { + "name": "Display name", + "visible": true, + "required": true, + "prompted": false, + "customCss": "", + "label": "", + "placeholder": "", + "regex": "", + "rule": "None" + }, + { + "name": "Password", + "visible": true, + "required": true, + "prompted": false, + "customCss": "", + "label": "", + "placeholder": "", + "regex": "", + "rule": "None" + }, + { + "name": "Confirm password", + "visible": true, + "required": true, + "prompted": false, + "customCss": "", + "label": "", + "placeholder": "", + "regex": "", + "rule": "None" + }, + { + "name": "Signup button", + "visible": true, + "required": false, + "prompted": false, + "customCss": "", + "label": "", + "placeholder": "", + "regex": "", + "rule": "" + } + ], + "signinItems": [ + { + "name": "Back button", + "visible": true, + "label": "", + "customCss": ".back-button {\n top: 65px;\n left: 15px;\n position: absolute;\n}\n.back-inner-button{}", + "placeholder": "", + "rule": "None", + "isCustom": false + }, + { + "name": "Languages", + "visible": true, + "label": "", + "customCss": ".login-languages {\n top: 55px;\n right: 5px;\n position: absolute;\n}", + "placeholder": "", + "rule": "None", + "isCustom": false + }, + { + "name": "Logo", + "visible": true, + "label": "", + "customCss": ".login-logo-box {} \n.panel-logo {\n width: 80px;\n}", + "placeholder": "", + "rule": "None", + "isCustom": false + }, + { + "name": "Signin methods", + "visible": true, + "label": "", + "customCss": ".signin-methods {}", + "placeholder": "", + "rule": "None", + "isCustom": false + }, + { + "name": "Username", + "visible": true, + "label": "", + "customCss": ".login-username {}\n.login-username-input{}", + "placeholder": "", + "rule": "None", + "isCustom": false + }, + { + "name": "Password", + "visible": true, + "label": "", + "customCss": ".login-password {}\n.login-password-input{}", + "placeholder": "", + "rule": "None", + "isCustom": false + }, + { + "name": "Agreement", + "visible": true, + "label": "", + "customCss": ".login-agreement {}", + "placeholder": "", + "rule": "None", + "isCustom": false + }, + { + "name": "Forgot password?", + "visible": true, + "label": "", + "customCss": ".login-forget-password {\n display: inline-flex;\n justify-content: space-between;\n width: 320px;\n margin-bottom: 25px;\n}", + "placeholder": "", + "rule": "None", + "isCustom": false + }, + { + "name": "Login button", + "visible": true, + "label": "", + "customCss": ".login-button-box {\n margin-bottom: 5px;\n}\n.login-button {\n width: 100%;\n}", + "placeholder": "", + "rule": "None", + "isCustom": false + }, + { + "name": "Signup link", + "visible": true, + "label": "", + "customCss": ".login-signup-link {\n margin-bottom: 24px;\n display: flex;\n justify-content: end;\n}", + "placeholder": "", + "rule": "None", + "isCustom": false + }, + { + "name": "Providers", + "visible": true, + "label": "", + "customCss": ".provider-img {\n width: 30px;\n margin: 5px;\n}\n.provider-big-img {\n margin-bottom: 10px;\n}", + "placeholder": "", + "rule": "small", + "isCustom": false + } + ], + "grantTypes": [ + "authorization_code" + ], + "organizationObj": null, + "certPublicKey": "", + "tags": [], + "samlAttributes": null, + "isShared": false, + "clientId": "a387a4892ee19b1a2249", + "clientSecret": "dbf205949d704de81b0b5b3603174e23fbecc354", + "redirectUris": [ + "http://192.168.123.105:3210/api/auth/callback/casdoor", + "https://192.168.123.105:3210/api/auth/callback/casdoor", + "http://example.com/api/auth/callback/casdoor", + "https://example.com/api/auth/callback/casdoor" + ], + "tokenFormat": "JWT", + "tokenSigningMethod": "", + "tokenFields": [], + "expireInHours": 168, + "refreshExpireInHours": 0, + "signupUrl": "", + "signinUrl": "", + "forgetUrl": "", + "affiliationUrl": "", + "termsOfUse": "", + "signupHtml": "", + "signinHtml": "", + "themeData": null, + "footerHtml": "", + "formCss": "", + "formCssMobile": "", + "formOffset": 2, + "formSideHtml": "", + "formBackgroundUrl": "", + "failedSigninLimit": 5, + "failedSigninFrozenTime": 15 + } + ], + "certs": [ + { + "owner": "admin", + "name": "cert-built-in", + "createdTime": "2024-09-09T09:26:06Z", + "displayName": "Built-in Cert", + "scope": "JWT", + "type": "x509", + "cryptoAlgorithm": "RS256", + "bitSize": 4096, + "expireInYears": 20, + "certificate": "-----BEGIN CERTIFICATE-----\nMIIE3TCCAsWgAwIBAgIDAeJAMA0GCSqGSIb3DQEBCwUAMCgxDjAMBgNVBAoTBWFk\nbWluMRYwFAYDVQQDEw1jZXJ0LWJ1aWx0LWluMB4XDTI0MDkwOTA5MjYxMVoXDTQ0\nMDkwOTA5MjYxMVowKDEOMAwGA1UEChMFYWRtaW4xFjAUBgNVBAMTDWNlcnQtYnVp\nbHQtaW4wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC3EnylZ2VurCm4\ngVtZHBUw67qvuKoYuU9whqaJr2UQEboIX4ca+FtZCjDgcBoD80lwSoYrcKpTG+DI\nVEMDznUHOjKwongRWclV1jeE3jZqObtmG9872yt/WX+nxQLyDrk+nUGhci6Qrhgo\nYToN1DYaMqMV1Pi8catx8S0W3gg+ilb9mG3xdFpQo89o84mJhajTE/5/0jBuQ50D\nx8CRolpRWjZ6i9RNVfFQglei+aW0RNf1PY6RqMkxc/Hy0XwXf/bjM5Ax7Aajwteh\nx0Q1zeUaRMMhFu6REtz345oJdLJpUkpFwJN4dPQ35a0tqnjkD1MLZjvBhSgOt5IP\nAJA1HmcR83RMBS8B3iV6y/clPjr02cjyasORy+kL/aFMfZfwvuRWX1NqRE99+rUT\nlPszH2SQi7PCUItQK72nnMYWBMXgyS8/Mra48q7LDAB/ZQnWuEG1+P1SdsQUWM2U\naxkgjmfMNATVAgufrLOcOZDxAwVS7+quCF5f/QPTWaFqz5ofcpoUlf0iriv/k1mi\nl7OghX0eqyLI2cCSma+dgB1eMni91eDCLVRT25mGDYreFjkpAwpMx2uaBk5e6ffT\n2jmZ2Zp9iCrUomLXDNiwY2wZDClcDKFiHNhNPAN3IbvBC3c6qpt0dLsWvGYW2IQT\nTnI71r/YY1XN/mTa4t/zwI+/kghjMQIDAQABoxAwDjAMBgNVHRMBAf8EAjAAMA0G\nCSqGSIb3DQEBCwUAA4ICAQBJUMBYJXnNihlGA2NMFIZMlsnW+5tjUqqK/Pv+oSpt\nrqZxwDKFZL0NMxd4pVnLxIdU5HEcN2e01Xyqlaf5Tm3BZN6MaRVZAIRVfvxcNESQ\nYA0jSFjsJzZUFGIQf8P9a5u+7qqSmj4tZx4XaRjOGSOf8t2RMJDmAbUeydLiD8ny\nCcxTzetmyYky8J3NBUoYGRbwU6KKbkxHbT35QheAb3jT4CELopLZ57Aa5Fb8xTjQ\n6tNqwZ+Z3993FkTOWPYLNLM1l46oN3g9yVY4ncGjUJkxsLTpAXB4I+wdqeew9XXe\nxWNcY3cWWjA5VXgCNzntkPFM1D5IWkgP8MYVCvdv0Unfo78PahwVMoQMnDG4xLuS\n50gVKpukHLZQJNFPF0X4u/JeXauKPv/w7ssTTAK+8RIBYxBXQ72zDJNHyTqldR4e\nfPHZfcW7OTmUr5FGNZThyW7ipvZRWcLM4u4IaWF2ncllOSqAXs1gDxkk201J7Lrb\noZOjC3zgxE9HTCXpiszOAt5I38++5ufE3/hJW3ckz0jaJDeFqUphnn8eQhXPSwtC\nR8TL4ZpXSAFEpwahG+fCfZDK2KyPME33eXV3jtsYf0QHerYiMnP+tf1vAk3qtOzo\nE6Iv16fpBUvshk1Gm6E6bdhsP0hCrMwV4dm8uC3S52qcFiWZ6AC/HURaMbY+/lOs\n0A==\n-----END CERTIFICATE-----\n", + "privateKey": "-----BEGIN RSA PRIVATE KEY-----\nMIIJKAIBAAKCAgEAtxJ8pWdlbqwpuIFbWRwVMOu6r7iqGLlPcIamia9lEBG6CF+H\nGvhbWQow4HAaA/NJcEqGK3CqUxvgyFRDA851BzoysKJ4EVnJVdY3hN42ajm7Zhvf\nO9srf1l/p8UC8g65Pp1BoXIukK4YKGE6DdQ2GjKjFdT4vHGrcfEtFt4IPopW/Zht\n8XRaUKPPaPOJiYWo0xP+f9IwbkOdA8fAkaJaUVo2eovUTVXxUIJXovmltETX9T2O\nkajJMXPx8tF8F3/24zOQMewGo8LXocdENc3lGkTDIRbukRLc9+OaCXSyaVJKRcCT\neHT0N+WtLap45A9TC2Y7wYUoDreSDwCQNR5nEfN0TAUvAd4lesv3JT469NnI8mrD\nkcvpC/2hTH2X8L7kVl9TakRPffq1E5T7Mx9kkIuzwlCLUCu9p5zGFgTF4MkvPzK2\nuPKuywwAf2UJ1rhBtfj9UnbEFFjNlGsZII5nzDQE1QILn6yznDmQ8QMFUu/qrghe\nX/0D01mhas+aH3KaFJX9Iq4r/5NZopezoIV9HqsiyNnAkpmvnYAdXjJ4vdXgwi1U\nU9uZhg2K3hY5KQMKTMdrmgZOXun309o5mdmafYgq1KJi1wzYsGNsGQwpXAyhYhzY\nTTwDdyG7wQt3OqqbdHS7FrxmFtiEE05yO9a/2GNVzf5k2uLf88CPv5IIYzECAwEA\nAQKCAgEAtGj7fOTQCKiQ1MplgwMxvuwPJWwN9B9qMbIAHF9EcPmHIwlA00s8ehqY\n4BSZDpuKG6bVYam9r/khI0omYHHs0hqAKaFyQWcCChz4yW9SoIwUKSP+cbYiv3Ur\nX+G+bVwlIZdHPhqP2PQ3ylNGKqqeRmLwZGtkVBCQq9DIZmiYJ0mdQHwenHvVJPLJ\nStv1Bhk5rgleHAi+wWrQKRGIq/walWEZntp9dVjkXjqUsn7i1SuixoLLJK/41Us1\ne90FNQNeAbimuQun32n7peoBRiSJScHJqao3n6+/ImqhOgBOcYwutV559ZMLuKoW\nZ5I/YD/ZzroI2USnnRk6Tp53fmFfn55JyLRjXf82jGeavScNEpTfvE+qT9SGOSA9\nF8YkEzsnAOM6tov2NEkY9Ofjh25fc4QAoqbQY8HdIYUwB+BHU63Hhdgz5VVy2f+v\nXJIy4z86QlWsXfQkimz02+AXD2jOSMH+ne3Qs3Z6l2hHhcxJj+lnp2qUXI6iYBOI\nVkQ8D3WPpBldZ5cOGCN0MC/gcv7WTiLDdl4nLba+qeqTFCO2Ygc/knMU7RvZew5U\nCIvxdvkAwjpvY7xN6er/C0jSp57sE2IoqE2QaNBC9YCn34sWgSDb2AkDvmhdSixD\nNCumHKp0at4e13urQTduHKPTZiUkAKG93vcuLONFmDAco0Mp4AECggEBAN1OgCsj\nyucLi5ZSHDYc9yTOKW7nGYHOGIMXdHaPCe+8R/3aW+NwV6QzyHO4WFr6p21JcOse\nldmYlwLRDBaCfteodLGLGrOS9DG8lN5i4F0hiRKwkOma9bRwNNESVLLp9TvXaxVN\nhzofNhnqVBRhP9jEPREVUk3iN4D2+GifEGBVIRqvrPEdN2c2fdIKC8nucmQGg02I\nQxfLRK8IL2COUgoB3f1lf/w6brIySn4sbctw4KSyGPsrrWCCQrARqcZ9gyVCKV6t\n/SMJcvMQ0QG43cQxZK6P21gyd5sRWryo74lQSEWnvt9v6zfMDADMcxErzH6ZCLg1\naBvBwv98vkeClEECggEBANPFjvl8EDx/dSGDBcpFyAt6IV0fijXpzxS4/14Y0J1k\nxBsHfkpeuH65npbHcH9SFqQ/3Nyc6vTA4KVNroH5eyo2Y+PY1NjPOoJTiFf57W/X\ntduukaqUBZ3NsHG176jDgHYyrZPlEBRHquSDxUjkVdx8uQDxL8r6OrF4RgVduk1p\nytMadyXWwJ6AGtSgmHIUH5LMImfrxwh0X8GmzaG0nfjUe8kIzEJIU8xNi7K13UO+\n3B/9uI3fOGYQ/NrCv1RDj49qIj/2NpnSAfeUxaKICZ890ffMC9xJTFrR+QmaqtSc\n7uir0UXx1qH1Tx7HdAHR7Dk4cHW7HhrK33ULcc0eUvECggEAN96Wis2JbtTCU5u9\nFYgweHE3kpDzJosCMy4br8aiqows3JBgvEVjSsfr5hL281juJa/xutnI2Nsl3Icr\n9w7QuN8FPsEwZ39E+L10E8SAgeJyeW5r1x3Qw9HD87gd++EGkSnsFb+x0OGKRfab\nbV2zwaShCgwI8DKY8ozm33qwprE3H0aUcXZ/wyXFk94HZd41sLzYLx2kWoBtgYae\nd1DWs0IPaeZS7jlOMtxxY/MRcNe5TrrLhbVcGs4nyc1bwAl1r1VJnmZsTokXJPfs\n2/NwwRP7J/qXVGfBPDugXZqEhnTnGfakQEI/7qErspPqxL367UbzJZYOB1veP6Od\nYe48QQKCAQBnb1UYEjqz8eU6Cw7m7xJ4WJy3KVKOZrbYfktsoF40oiUOtqg+luky\nLGODbcJKzcN1UiQENTildxfCZaDYpww7X/mGLkA37W+8fCRaJB6OxCN1O1y2njno\nC7EkuSJnoaW7FaGmXPlvjlmv55SSt8QgP2L1TNh1IadNS1uX/2Ghsgx487JCbxQB\n1rxEInSTM7UANGiRrZ23SXAD2/8P/nIyOUaEuKFbtowHe9DB5wY9spk9nuVnliGr\n6Jw4FWryM1WJTOORriaZFvQTAz1M13krqDxH9gfM/pgmu+wRftP1qPkf99vtd+PH\nk1OjyvOkd+4TPLfhKRXZLEHcn0xkTW1hAoIBAD+7+n2Q6dzwFVJLPcPrlQtusEkn\nLYvAZlHqMjIZQGaqhRzunxACOVgbu87CFuf19AxmYC3b45ZfmgCuVTOGXMkZgKGK\njZbyg/bm6XypCwiixC/AIrlU0NG+3uWUSEle+BzYnmYyiAquCLu4TiHFDPWorqfd\nvEz+skrB/2OQe1UWkr66gP0P41hpGFVgz6mFUfJjepYUAUe2X8VfK1zWA97eZzGq\ngQTfC3LeDn3RtEQY6NtBMjfsXRiwtWtJcrSVg8BFp6NJgp8CJAckg03K25UYe8tk\n/YKZaoWowmGQqx7QkJ5Kckz70dS3rWhb8IKcLiir1sLz9UtsQeiue+Q/Ezo=\n-----END RSA PRIVATE KEY-----\n" + } + ], + "enforcers": [ + { + "owner": "built-in", + "name": "user-enforcer-built-in", + "createdTime": "2024-09-09T09:26:13Z", + "updatedTime": "2024-09-09 09:26:13", + "displayName": "User Enforcer", + "description": "", + "model": "built-in/user-model-built-in", + "adapter": "built-in/user-adapter-built-in", + "modelCfg": null + }, + { + "owner": "built-in", + "name": "api-enforcer-built-in", + "createdTime": "2024-09-09T09:26:12Z", + "updatedTime": "2024-09-09 09:26:12", + "displayName": "API Enforcer", + "description": "", + "model": "built-in/api-model-built-in", + "adapter": "built-in/api-adapter-built-in", + "modelCfg": null + } + ], + "groups": [], + "invitations": [], + "ldaps": [ + { + "id": "ldap-built-in", + "owner": "built-in", + "createdTime": "2024-09-09T09:26:12Z", + "serverName": "BuildIn LDAP Server", + "host": "example.com", + "port": 389, + "enableSsl": false, + "username": "cn=buildin,dc=example,dc=com", + "password": "123", + "baseDn": "ou=BuildIn,dc=example,dc=com", + "filter": "", + "filterFields": null, + "defaultGroup": "", + "autoSync": 0, + "lastSync": "" + } + ], + "models": [ + { + "owner": "built-in", + "name": "user-model-built-in", + "createdTime": "2024-09-09T09:26:13Z", + "displayName": "Built-in Model", + "description": "", + "modelText": "[request_definition]\nr = sub, obj, act\n\n[policy_definition]\np = sub, obj, act\n\n[role_definition]\ng = _, _\n\n[policy_effect]\ne = some(where (p.eft == allow))\n\n[matchers]\nm = g(r.sub, p.sub) \u0026\u0026 r.obj == p.obj \u0026\u0026 r.act == p.act" + }, + { + "owner": "built-in", + "name": "api-model-built-in", + "createdTime": "2024-09-09T09:26:12Z", + "displayName": "API Model", + "description": "", + "modelText": "[request_definition]\nr = subOwner, subName, method, urlPath, objOwner, objName\n\n[policy_definition]\np = subOwner, subName, method, urlPath, objOwner, objName\n\n[role_definition]\ng = _, _\n\n[policy_effect]\ne = some(where (p.eft == allow))\n\n[matchers]\nm = (r.subOwner == p.subOwner || p.subOwner == \"*\") \u0026\u0026 \\\n (r.subName == p.subName || p.subName == \"*\" || r.subName != \"anonymous\" \u0026\u0026 p.subName == \"!anonymous\") \u0026\u0026 \\\n (r.method == p.method || p.method == \"*\") \u0026\u0026 \\\n (r.urlPath == p.urlPath || p.urlPath == \"*\") \u0026\u0026 \\\n (r.objOwner == p.objOwner || p.objOwner == \"*\") \u0026\u0026 \\\n (r.objName == p.objName || p.objName == \"*\") || \\\n (r.subOwner == r.objOwner \u0026\u0026 r.subName == r.objName)" + } + ], + "organizations": [ + { + "owner": "admin", + "name": "built-in", + "createdTime": "2024-09-09T09:26:04Z", + "displayName": "Built-in Organization", + "websiteUrl": "https://example.com", + "logo": "", + "logoDark": "", + "favicon": "https://cdn.casbin.org/img/casbin/favicon.ico", + "passwordType": "plain", + "passwordSalt": "", + "passwordOptions": [ + "AtLeast6" + ], + "countryCodes": [ + "US", + "ES", + "FR", + "DE", + "GB", + "CN", + "JP", + "KR", + "VN", + "ID", + "SG", + "IN" + ], + "defaultAvatar": "https://cdn.casbin.org/img/casbin.svg", + "defaultApplication": "", + "tags": [], + "languages": [ + "en", + "zh", + "es", + "fr", + "de", + "id", + "ja", + "ko", + "ru", + "vi", + "pt" + ], + "themeData": null, + "masterPassword": "", + "defaultPassword": "", + "masterVerificationCode": "", + "initScore": 2000, + "enableSoftDeletion": false, + "isProfilePublic": false, + "useEmailAsUsername": false, + "enableTour": true, + "mfaItems": null, + "accountItems": [ + { + "name": "Organization", + "visible": true, + "viewRule": "Public", + "modifyRule": "Admin", + "regex": "" + }, + { + "name": "ID", + "visible": true, + "viewRule": "Public", + "modifyRule": "Immutable", + "regex": "" + }, + { + "name": "Name", + "visible": true, + "viewRule": "Public", + "modifyRule": "Admin", + "regex": "" + }, + { + "name": "Display name", + "visible": true, + "viewRule": "Public", + "modifyRule": "Self", + "regex": "" + }, + { + "name": "Avatar", + "visible": true, + "viewRule": "Public", + "modifyRule": "Self", + "regex": "" + }, + { + "name": "User type", + "visible": true, + "viewRule": "Public", + "modifyRule": "Admin", + "regex": "" + }, + { + "name": "Password", + "visible": true, + "viewRule": "Self", + "modifyRule": "Self", + "regex": "" + }, + { + "name": "Email", + "visible": true, + "viewRule": "Public", + "modifyRule": "Self", + "regex": "" + }, + { + "name": "Phone", + "visible": true, + "viewRule": "Public", + "modifyRule": "Self", + "regex": "" + }, + { + "name": "Country code", + "visible": true, + "viewRule": "Public", + "modifyRule": "Admin", + "regex": "" + }, + { + "name": "Country/Region", + "visible": true, + "viewRule": "Public", + "modifyRule": "Self", + "regex": "" + }, + { + "name": "Location", + "visible": true, + "viewRule": "Public", + "modifyRule": "Self", + "regex": "" + }, + { + "name": "Affiliation", + "visible": true, + "viewRule": "Public", + "modifyRule": "Self", + "regex": "" + }, + { + "name": "Title", + "visible": true, + "viewRule": "Public", + "modifyRule": "Self", + "regex": "" + }, + { + "name": "Homepage", + "visible": true, + "viewRule": "Public", + "modifyRule": "Self", + "regex": "" + }, + { + "name": "Bio", + "visible": true, + "viewRule": "Public", + "modifyRule": "Self", + "regex": "" + }, + { + "name": "Tag", + "visible": true, + "viewRule": "Public", + "modifyRule": "Admin", + "regex": "" + }, + { + "name": "Signup application", + "visible": true, + "viewRule": "Public", + "modifyRule": "Admin", + "regex": "" + }, + { + "name": "Roles", + "visible": true, + "viewRule": "Public", + "modifyRule": "Immutable", + "regex": "" + }, + { + "name": "Permissions", + "visible": true, + "viewRule": "Public", + "modifyRule": "Immutable", + "regex": "" + }, + { + "name": "Groups", + "visible": true, + "viewRule": "Public", + "modifyRule": "Admin", + "regex": "" + }, + { + "name": "3rd-party logins", + "visible": true, + "viewRule": "Self", + "modifyRule": "Self", + "regex": "" + }, + { + "name": "Properties", + "visible": true, + "viewRule": "Admin", + "modifyRule": "Admin", + "regex": "" + }, + { + "name": "Is admin", + "visible": true, + "viewRule": "Admin", + "modifyRule": "Admin", + "regex": "" + }, + { + "name": "Is forbidden", + "visible": true, + "viewRule": "Admin", + "modifyRule": "Admin", + "regex": "" + }, + { + "name": "Is deleted", + "visible": true, + "viewRule": "Admin", + "modifyRule": "Admin", + "regex": "" + }, + { + "name": "Multi-factor authentication", + "visible": true, + "viewRule": "Self", + "modifyRule": "Self", + "regex": "" + }, + { + "name": "WebAuthn credentials", + "visible": true, + "viewRule": "Self", + "modifyRule": "Self", + "regex": "" + }, + { + "name": "Managed accounts", + "visible": true, + "viewRule": "Self", + "modifyRule": "Self", + "regex": "" + }, + { + "name": "MFA accounts", + "visible": true, + "viewRule": "Self", + "modifyRule": "Self", + "regex": "" + } + ] + }, + { + "owner": "admin", + "name": "lobechat", + "createdTime": "2024-09-09T09:26:04Z", + "displayName": "LobeChat Organization", + "websiteUrl": "https://lobehub.com", + "logo": "https://lobehub.com/icon-192x192.png", + "logoDark": "", + "favicon": "https://lobehub.com/favicon.ico", + "passwordType": "plain", + "passwordSalt": "", + "passwordOptions": [ + "AtLeast6" + ], + "countryCodes": [ + "US", + "ES", + "FR", + "DE", + "GB", + "CN", + "JP", + "KR", + "VN", + "ID", + "SG", + "IN" + ], + "defaultAvatar": "https://cdn.casbin.org/img/casbin.svg", + "defaultApplication": "", + "tags": [], + "languages": [ + "en", + "zh", + "es", + "fr", + "de", + "id", + "ja", + "ko", + "ru", + "vi", + "pt" + ], + "themeData": null, + "masterPassword": "", + "defaultPassword": "", + "masterVerificationCode": "", + "initScore": 2000, + "enableSoftDeletion": false, + "isProfilePublic": false, + "useEmailAsUsername": false, + "enableTour": true, + "mfaItems": null, + "accountItems": [ + { + "name": "Organization", + "visible": true, + "viewRule": "Public", + "modifyRule": "Admin", + "regex": "" + }, + { + "name": "ID", + "visible": true, + "viewRule": "Public", + "modifyRule": "Immutable", + "regex": "" + }, + { + "name": "Name", + "visible": true, + "viewRule": "Public", + "modifyRule": "Admin", + "regex": "" + }, + { + "name": "Display name", + "visible": true, + "viewRule": "Public", + "modifyRule": "Self", + "regex": "" + }, + { + "name": "Avatar", + "visible": true, + "viewRule": "Public", + "modifyRule": "Self", + "regex": "" + }, + { + "name": "User type", + "visible": true, + "viewRule": "Public", + "modifyRule": "Admin", + "regex": "" + }, + { + "name": "Password", + "visible": true, + "viewRule": "Self", + "modifyRule": "Self", + "regex": "" + }, + { + "name": "Email", + "visible": true, + "viewRule": "Public", + "modifyRule": "Self", + "regex": "" + }, + { + "name": "Phone", + "visible": true, + "viewRule": "Public", + "modifyRule": "Self", + "regex": "" + }, + { + "name": "Country code", + "visible": true, + "viewRule": "Public", + "modifyRule": "Admin", + "regex": "" + }, + { + "name": "Country/Region", + "visible": true, + "viewRule": "Public", + "modifyRule": "Self", + "regex": "" + }, + { + "name": "Location", + "visible": true, + "viewRule": "Public", + "modifyRule": "Self", + "regex": "" + }, + { + "name": "Affiliation", + "visible": true, + "viewRule": "Public", + "modifyRule": "Self", + "regex": "" + }, + { + "name": "Title", + "visible": true, + "viewRule": "Public", + "modifyRule": "Self", + "regex": "" + }, + { + "name": "Homepage", + "visible": true, + "viewRule": "Public", + "modifyRule": "Self", + "regex": "" + }, + { + "name": "Bio", + "visible": true, + "viewRule": "Public", + "modifyRule": "Self", + "regex": "" + }, + { + "name": "Tag", + "visible": true, + "viewRule": "Public", + "modifyRule": "Admin", + "regex": "" + }, + { + "name": "Signup application", + "visible": true, + "viewRule": "Public", + "modifyRule": "Admin", + "regex": "" + }, + { + "name": "Roles", + "visible": true, + "viewRule": "Public", + "modifyRule": "Immutable", + "regex": "" + }, + { + "name": "Permissions", + "visible": true, + "viewRule": "Public", + "modifyRule": "Immutable", + "regex": "" + }, + { + "name": "Groups", + "visible": true, + "viewRule": "Public", + "modifyRule": "Admin", + "regex": "" + }, + { + "name": "3rd-party logins", + "visible": true, + "viewRule": "Self", + "modifyRule": "Self", + "regex": "" + }, + { + "name": "Properties", + "visible": true, + "viewRule": "Admin", + "modifyRule": "Admin", + "regex": "" + }, + { + "name": "Is admin", + "visible": true, + "viewRule": "Admin", + "modifyRule": "Admin", + "regex": "" + }, + { + "name": "Is forbidden", + "visible": true, + "viewRule": "Admin", + "modifyRule": "Admin", + "regex": "" + }, + { + "name": "Is deleted", + "visible": true, + "viewRule": "Admin", + "modifyRule": "Admin", + "regex": "" + }, + { + "name": "Multi-factor authentication", + "visible": true, + "viewRule": "Self", + "modifyRule": "Self", + "regex": "" + }, + { + "name": "WebAuthn credentials", + "visible": true, + "viewRule": "Self", + "modifyRule": "Self", + "regex": "" + }, + { + "name": "Managed accounts", + "visible": true, + "viewRule": "Self", + "modifyRule": "Self", + "regex": "" + }, + { + "name": "MFA accounts", + "visible": true, + "viewRule": "Self", + "modifyRule": "Self", + "regex": "" + } + ] + } + ], + "payments": [], + "permissions": [ + { + "owner": "built-in", + "name": "permission-built-in", + "createdTime": "2024-09-09T09:26:04Z", + "displayName": "Built-in Permission", + "description": "Built-in Permission", + "users": [ + "built-in/*" + ], + "groups": [], + "roles": [], + "domains": [], + "model": "user-model-built-in", + "adapter": "", + "resourceType": "Application", + "resources": [ + "app-built-in" + ], + "actions": [ + "Read", + "Write", + "Admin" + ], + "effect": "Allow", + "isEnabled": true, + "submitter": "admin", + "approver": "admin", + "approveTime": "2024-09-09T09:26:04Z", + "state": "Approved" + } + ], + "plans": [], + "pricings": [], + "products": [], + "providers": [], + "records": [], + "resources": [], + "roles": [], + "sessions": [], + "subscriptions": [], + "syncers": [], + "tokens": [], + "transactions": [], + "users": [ + { + "owner": "built-in", + "name": "admin", + "createdTime": "2024-09-09T09:26:05Z", + "updatedTime": "", + "deletedTime": "", + "id": "bbf2a176-203c-414c-8cdd-ec92b019e07a", + "externalId": "", + "type": "normal-user", + "password": "123", + "passwordSalt": "", + "passwordType": "plain", + "displayName": "Admin", + "firstName": "", + "lastName": "", + "avatar": "https://cdn.casbin.org/img/casbin.svg", + "avatarType": "", + "permanentAvatar": "", + "email": "admin@example.com", + "emailVerified": false, + "phone": "13245678910", + "countryCode": "US", + "region": "", + "location": "", + "address": [], + "affiliation": "Example Inc.", + "title": "", + "idCardType": "", + "idCard": "", + "homepage": "", + "bio": "", + "tag": "staff", + "language": "", + "gender": "", + "birthday": "", + "education": "", + "score": 2000, + "karma": 0, + "ranking": 1, + "balance": 0, + "currency": "", + "isDefaultAvatar": false, + "isOnline": false, + "isAdmin": true, + "isForbidden": false, + "isDeleted": false, + "signupApplication": "app-built-in", + "hash": "", + "preHash": "", + "accessKey": "", + "accessSecret": "", + "accessToken": "", + "createdIp": "127.0.0.1", + "lastSigninTime": "", + "lastSigninIp": "", + "github": "", + "google": "", + "qq": "", + "wechat": "", + "facebook": "", + "dingtalk": "", + "weibo": "", + "gitee": "", + "linkedin": "", + "wecom": "", + "lark": "", + "gitlab": "", + "adfs": "", + "baidu": "", + "alipay": "", + "casdoor": "", + "infoflow": "", + "apple": "", + "azuread": "", + "azureadb2c": "", + "slack": "", + "steam": "", + "bilibili": "", + "okta": "", + "douyin": "", + "line": "", + "amazon": "", + "auth0": "", + "battlenet": "", + "bitbucket": "", + "box": "", + "cloudfoundry": "", + "dailymotion": "", + "deezer": "", + "digitalocean": "", + "discord": "", + "dropbox": "", + "eveonline": "", + "fitbit": "", + "gitea": "", + "heroku": "", + "influxcloud": "", + "instagram": "", + "intercom": "", + "kakao": "", + "lastfm": "", + "mailru": "", + "meetup": "", + "microsoftonline": "", + "naver": "", + "nextcloud": "", + "onedrive": "", + "oura": "", + "patreon": "", + "paypal": "", + "salesforce": "", + "shopify": "", + "soundcloud": "", + "spotify": "", + "strava": "", + "stripe": "", + "tiktok": "", + "tumblr": "", + "twitch": "", + "twitter": "", + "typetalk": "", + "uber": "", + "vk": "", + "wepay": "", + "xero": "", + "yahoo": "", + "yammer": "", + "yandex": "", + "zoom": "", + "metamask": "", + "web3onboard": "", + "custom": "", + "webauthnCredentials": null, + "preferredMfaType": "", + "recoveryCodes": null, + "totpSecret": "", + "mfaPhoneEnabled": false, + "mfaEmailEnabled": false, + "invitation": "", + "invitationCode": "", + "faceIds": null, + "ldap": "", + "properties": {}, + "roles": null, + "permissions": null, + "groups": null, + "lastSigninWrongTime": "", + "signinWrongTimes": 0, + "managedAccounts": null, + "mfaAccounts": null, + "needUpdatePassword": false + }, + { + "owner": "lobechat", + "name": "user", + "createdTime": "2024-09-09T09:26:05Z", + "updatedTime": "", + "deletedTime": "", + "id": "b5a7c5b5-3e79-47ff-85a8-537b07fee2f9", + "externalId": "", + "type": "normal-user", + "password": "123", + "passwordSalt": "", + "passwordType": "plain", + "displayName": "User", + "firstName": "", + "lastName": "", + "avatar": "https://cdn.casbin.org/img/casbin.svg", + "avatarType": "", + "permanentAvatar": "", + "email": "user@example.com", + "emailVerified": false, + "phone": "13245678910", + "countryCode": "US", + "region": "", + "location": "", + "address": [], + "affiliation": "Example Inc.", + "title": "", + "idCardType": "", + "idCard": "", + "homepage": "", + "bio": "", + "tag": "staff", + "language": "", + "gender": "", + "birthday": "", + "education": "", + "score": 2000, + "karma": 0, + "ranking": 1, + "balance": 0, + "currency": "", + "isDefaultAvatar": false, + "isOnline": false, + "isAdmin": false, + "isForbidden": false, + "isDeleted": false, + "signupApplication": "lobechat", + "hash": "", + "preHash": "", + "accessKey": "", + "accessSecret": "", + "accessToken": "", + "createdIp": "127.0.0.1", + "lastSigninTime": "", + "lastSigninIp": "", + "github": "", + "google": "", + "qq": "", + "wechat": "", + "facebook": "", + "dingtalk": "", + "weibo": "", + "gitee": "", + "linkedin": "", + "wecom": "", + "lark": "", + "gitlab": "", + "adfs": "", + "baidu": "", + "alipay": "", + "casdoor": "", + "infoflow": "", + "apple": "", + "azuread": "", + "azureadb2c": "", + "slack": "", + "steam": "", + "bilibili": "", + "okta": "", + "douyin": "", + "line": "", + "amazon": "", + "auth0": "", + "battlenet": "", + "bitbucket": "", + "box": "", + "cloudfoundry": "", + "dailymotion": "", + "deezer": "", + "digitalocean": "", + "discord": "", + "dropbox": "", + "eveonline": "", + "fitbit": "", + "gitea": "", + "heroku": "", + "influxcloud": "", + "instagram": "", + "intercom": "", + "kakao": "", + "lastfm": "", + "mailru": "", + "meetup": "", + "microsoftonline": "", + "naver": "", + "nextcloud": "", + "onedrive": "", + "oura": "", + "patreon": "", + "paypal": "", + "salesforce": "", + "shopify": "", + "soundcloud": "", + "spotify": "", + "strava": "", + "stripe": "", + "tiktok": "", + "tumblr": "", + "twitch": "", + "twitter": "", + "typetalk": "", + "uber": "", + "vk": "", + "wepay": "", + "xero": "", + "yahoo": "", + "yammer": "", + "yandex": "", + "zoom": "", + "metamask": "", + "web3onboard": "", + "custom": "", + "webauthnCredentials": null, + "preferredMfaType": "", + "recoveryCodes": null, + "totpSecret": "", + "mfaPhoneEnabled": false, + "mfaEmailEnabled": false, + "invitation": "", + "invitationCode": "", + "faceIds": null, + "ldap": "", + "properties": {}, + "roles": null, + "permissions": null, + "groups": null, + "lastSigninWrongTime": "", + "signinWrongTimes": 0, + "managedAccounts": null, + "mfaAccounts": null, + "needUpdatePassword": false + } + ], + "webhooks": [] +} \ No newline at end of file diff --git a/apps/lobe-chat-data/1.77.16/lobe-entrypoint.sh b/apps/lobe-chat-data/1.77.16/lobe-entrypoint.sh new file mode 100644 index 0000000..e90dbdd --- /dev/null +++ b/apps/lobe-chat-data/1.77.16/lobe-entrypoint.sh @@ -0,0 +1,42 @@ +#!/bin/sh + +/bin/node /app/startServer.js & +LOBE_PID=$! +sleep 3 + +if [ $(wget --timeout=5 --spider --server-response ${AUTH_CASDOOR_ISSUER}/.well-known/openid-configuration 2>&1 | grep -c 'HTTP/1.1 200 OK') -eq 0 ]; then + echo '⚠️Warining: Unable to fetch OIDC configuration from Casdoor' + echo 'Request URL: ${AUTH_CASDOOR_ISSUER}/.well-known/openid-configuration' + echo 'Read more at: https://lobehub.com/docs/self-hosting/server-database/docker-compose#necessary-configuration' + echo '' + echo '⚠️注意:无法从 Casdoor 获取 OIDC 配置' + echo '请求 URL: ${AUTH_CASDOOR_ISSUER}/.well-known/openid-configuration' + echo '了解更多:https://lobehub.com/zh/docs/self-hosting/server-database/docker-compose#necessary-configuration' + echo '' +else + if ! wget -O - --timeout=5 ${AUTH_CASDOOR_ISSUER}/.well-known/openid-configuration 2>&1 | grep 'issuer' | grep ${AUTH_CASDOOR_ISSUER}; then + printf '❌Error: The Auth issuer is conflict, Issuer in OIDC configuration is: %s' $(wget -O - --timeout=5 ${AUTH_CASDOOR_ISSUER}/.well-known/openid-configuration 2>&1 | grep -E 'issuer.*' | awk -F '"' '{print $4}') + echo ' , but the issuer in .env file is: ${AUTH_CASDOOR_ISSUER} ' + echo 'Request URL: ${AUTH_CASDOOR_ISSUER}/.well-known/openid-configuration' + echo 'Read more at: https://lobehub.com/docs/self-hosting/server-database/docker-compose#necessary-configuration' + echo '' + printf '❌错误:Auth 的 issuer 冲突,OIDC 配置中的 issuer 是:%s' $(wget -O - --timeout=5 ${AUTH_CASDOOR_ISSUER}/.well-known/openid-configuration 2>&1 | grep -E 'issuer.*' | awk -F '"' '{print $4}') + echo ' , 但 .env 文件中的 issuer 是:${AUTH_CASDOOR_ISSUER} ' + echo '请求 URL: ${AUTH_CASDOOR_ISSUER}/.well-known/openid-configuration' + echo '了解更多:https://lobehub.com/zh/docs/self-hosting/server-database/docker-compose#necessary-configuration' + echo '' + fi +fi + +if [ $(wget --timeout=5 --spider --server-response ${S3_ENDPOINT}/minio/health/live 2>&1 | grep -c 'HTTP/1.1 200 OK') -eq 0 ]; then + echo '⚠️Warining: Unable to fetch MinIO health status' + echo 'Request URL: ${S3_ENDPOINT}/minio/health/live' + echo 'Read more at: https://lobehub.com/docs/self-hosting/server-database/docker-compose#necessary-configuration' + echo '' + echo '⚠️注意:无法获取 MinIO 健康状态' + echo '请求 URL: ${S3_ENDPOINT}/minio/health/live' + echo '了解更多:https://lobehub.com/zh/docs/self-hosting/server-database/docker-compose#necessary-configuration' + echo '' +fi + +wait $LOBE_PID \ No newline at end of file diff --git a/apps/lobe-chat-data/1.77.16/minio-entrypoint.sh b/apps/lobe-chat-data/1.77.16/minio-entrypoint.sh new file mode 100644 index 0000000..25a6375 --- /dev/null +++ b/apps/lobe-chat-data/1.77.16/minio-entrypoint.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +minio server /etc/minio/data --address ":${MINIO_PORT}" --console-address ":9001" & +MINIO_PID=$! + +while ! curl -s http://localhost:${MINIO_PORT}/minio/health/live; do + echo 'Waiting for MinIO to start...' + sleep 1 +done + +sleep 5 +mc alias set myminio http://localhost:${MINIO_PORT} ${MINIO_ROOT_USER} ${MINIO_ROOT_PASSWORD} +echo "Creating bucket ${MINIO_LOBE_BUCKET}" +mc mb myminio/${MINIO_LOBE_BUCKET} + +wait $MINIO_PID \ No newline at end of file diff --git a/apps/lobe-chat-data/1.77.16/searxng-settings.yml b/apps/lobe-chat-data/1.77.16/searxng-settings.yml new file mode 100644 index 0000000..ffb5e42 --- /dev/null +++ b/apps/lobe-chat-data/1.77.16/searxng-settings.yml @@ -0,0 +1,2582 @@ +general: + # Debug mode, only for development. Is overwritten by ${SEARXNG_DEBUG} + debug: false + # displayed name + instance_name: "searxng" + # For example: https://example.com/privacy + privacypolicy_url: false + # use true to use your own donation page written in searx/info/en/donate.md + # use false to disable the donation link + donation_url: false + # mailto:contact@example.com + contact_url: false + # record stats + enable_metrics: true + # expose stats in open metrics format at /metrics + # leave empty to disable (no password set) + # open_metrics: + open_metrics: '' + +brand: + new_issue_url: https://github.com/searxng/searxng/issues/new + docs_url: https://docs.searxng.org/ + public_instances: https://searx.space + wiki_url: https://github.com/searxng/searxng/wiki + issue_url: https://github.com/searxng/searxng/issues + # custom: + # maintainer: "Jon Doe" + # # Custom entries in the footer: [title]: [link] + # links: + # Uptime: https://uptime.searxng.org/history/darmarit-org + # About: "https://searxng.org" + +search: + # Filter results. 0: None, 1: Moderate, 2: Strict + safe_search: 0 + # Existing autocomplete backends: "baidu", "brave", "dbpedia", "duckduckgo", "google", "yandex", + # "mwmbl", "seznam", "stract", "swisscows", "qwant", "wikipedia" - + # leave blank to turn it off by default. + autocomplete: "" + # minimun characters to type before autocompleter starts + autocomplete_min: 4 + # backend for the favicon near URL in search results. + # Available resolvers: "allesedv", "duckduckgo", "google", "yandex" - leave blank to turn it off by default. + favicon_resolver: "" + # Default search language - leave blank to detect from browser information or + # use codes from 'languages.py' + default_lang: "auto" + # max_page: 0 # if engine supports paging, 0 means unlimited numbers of pages + # Available languages + # languages: + # - all + # - en + # - en-US + # - de + # - it-IT + # - fr + # - fr-BE + # ban time in seconds after engine errors + ban_time_on_fail: 5 + # max ban time in seconds after engine errors + max_ban_time_on_fail: 120 + suspended_times: + # Engine suspension time after error (in seconds; set to 0 to disable) + # For error "Access denied" and "HTTP error [402, 403]" + SearxEngineAccessDenied: 86400 + # For error "CAPTCHA" + SearxEngineCaptcha: 86400 + # For error "Too many request" and "HTTP error 429" + SearxEngineTooManyRequests: 3600 + # Cloudflare CAPTCHA + cf_SearxEngineCaptcha: 1296000 + cf_SearxEngineAccessDenied: 86400 + # ReCAPTCHA + recaptcha_SearxEngineCaptcha: 604800 + + # remove format to deny access, use lower case. + # formats: [html, csv, json, rss] + formats: + - html + - json +server: + # Is overwritten by ${SEARXNG_PORT} and ${SEARXNG_BIND_ADDRESS} + port: 8888 + bind_address: "127.0.0.1" + # public URL of the instance, to ensure correct inbound links. Is overwritten + # by ${SEARXNG_URL}. + base_url: / # "http://example.com/location" + # rate limit the number of request on the instance, block some bots. + # Is overwritten by ${SEARXNG_LIMITER} + limiter: false + # enable features designed only for public instances. + # Is overwritten by ${SEARXNG_PUBLIC_INSTANCE} + public_instance: false + + # If your instance owns a /etc/searxng/settings.yml file, then set the following + # values there. + + secret_key: "779c5b69fe650f147be9012abca6b44a8697acdb2817b46353f4779bb07d81d1" # Is overwritten by ${SEARXNG_SECRET} + # Proxy image results through SearXNG. Is overwritten by ${SEARXNG_IMAGE_PROXY} + image_proxy: false + # 1.0 and 1.1 are supported + http_protocol_version: "1.0" + # POST queries are more secure as they don't show up in history but may cause + # problems when using Firefox containers + method: "POST" + default_http_headers: + X-Content-Type-Options: nosniff + X-Download-Options: noopen + X-Robots-Tag: noindex, nofollow + Referrer-Policy: no-referrer + +redis: + # URL to connect redis database. Is overwritten by ${SEARXNG_REDIS_URL}. + # https://docs.searxng.org/admin/settings/settings_redis.html#settings-redis + url: false + +ui: + # Custom static path - leave it blank if you didn't change + static_path: "" + # Is overwritten by ${SEARXNG_STATIC_USE_HASH}. + static_use_hash: false + # Custom templates path - leave it blank if you didn't change + templates_path: "" + # query_in_title: When true, the result page's titles contains the query + # it decreases the privacy, since the browser can records the page titles. + query_in_title: false + # infinite_scroll: When true, automatically loads the next page when scrolling to bottom of the current page. + infinite_scroll: false + # ui theme + default_theme: simple + # center the results ? + center_alignment: false + # URL prefix of the internet archive, don't forget trailing slash (if needed). + # cache_url: "https://webcache.googleusercontent.com/search?q=cache:" + # Default interface locale - leave blank to detect from browser information or + # use codes from the 'locales' config section + default_locale: "" + # Open result links in a new tab by default + # results_on_new_tab: false + theme_args: + # style of simple theme: auto, light, dark + simple_style: auto + # Perform search immediately if a category selected. + # Disable to select multiple categories at once and start the search manually. + search_on_category_select: true + # Hotkeys: default or vim + hotkeys: default + # URL formatting: pretty, full or host + url_formatting: pretty + +# Lock arbitrary settings on the preferences page. +# +# preferences: +# lock: +# - categories +# - language +# - autocomplete +# - favicon +# - safesearch +# - method +# - doi_resolver +# - locale +# - theme +# - results_on_new_tab +# - infinite_scroll +# - search_on_category_select +# - method +# - image_proxy +# - query_in_title + +# searx supports result proxification using an external service: +# https://github.com/asciimoo/morty uncomment below section if you have running +# morty proxy the key is base64 encoded (keep the !!binary notation) +# Note: since commit af77ec3, morty accepts a base64 encoded key. +# +# result_proxy: +# url: http://127.0.0.1:3000/ +# # the key is a base64 encoded string, the YAML !!binary prefix is optional +# key: !!binary "your_morty_proxy_key" +# # [true|false] enable the "proxy" button next to each result +# proxify_results: true + +# communication with search engines +# +outgoing: + # default timeout in seconds, can be override by engine + request_timeout: 3.0 + # the maximum timeout in seconds + # max_request_timeout: 10.0 + # suffix of searx_useragent, could contain information like an email address + # to the administrator + useragent_suffix: "" + # The maximum number of concurrent connections that may be established. + pool_connections: 100 + # Allow the connection pool to maintain keep-alive connections below this + # point. + pool_maxsize: 20 + # See https://www.python-httpx.org/http2/ + enable_http2: true + # uncomment below section if you want to use a custom server certificate + # see https://www.python-httpx.org/advanced/#changing-the-verification-defaults + # and https://www.python-httpx.org/compatibility/#ssl-configuration + # verify: ~/.mitmproxy/mitmproxy-ca-cert.cer + # + # uncomment below section if you want to use a proxyq see: SOCKS proxies + # https://2.python-requests.org/en/latest/user/advanced/#proxies + # are also supported: see + # https://2.python-requests.org/en/latest/user/advanced/#socks + # + # proxies: + # all://: + # - http://proxy1:8080 + # - http://proxy2:8080 + # + # using_tor_proxy: true + # + # Extra seconds to add in order to account for the time taken by the proxy + # + # extra_proxy_timeout: 10 + # + # uncomment below section only if you have more than one network interface + # which can be the source of outgoing search requests + # + # source_ips: + # - 1.1.1.1 + # - 1.1.1.2 + # - fe80::/126 + +# External plugin configuration, for more details see +# https://docs.searxng.org/admin/settings/settings_plugins.html +# +# plugins: +# - mypackage.mymodule.MyPlugin +# - mypackage.mymodule.MyOtherPlugin +# - ... + +# Comment or un-comment plugin to activate / deactivate by default. +# https://docs.searxng.org/admin/settings/settings_plugins.html +# +# enabled_plugins: +# # these plugins are enabled if nothing is configured .. +# - 'Basic Calculator' +# - 'Hash plugin' +# - 'Self Information' +# - 'Tracker URL remover' +# - 'Unit converter plugin' +# - 'Ahmia blacklist' # activation depends on outgoing.using_tor_proxy +# # these plugins are disabled if nothing is configured .. +# - 'Hostnames plugin' # see 'hostnames' configuration below +# - 'Open Access DOI rewrite' +# - 'Tor check plugin' + +# Configuration of the "Hostnames plugin": +# +# hostnames: +# replace: +# '(.*\.)?youtube\.com$': 'invidious.example.com' +# '(.*\.)?youtu\.be$': 'invidious.example.com' +# '(.*\.)?reddit\.com$': 'teddit.example.com' +# '(.*\.)?redd\.it$': 'teddit.example.com' +# '(www\.)?twitter\.com$': 'nitter.example.com' +# remove: +# - '(.*\.)?facebook.com$' +# low_priority: +# - '(.*\.)?google(\..*)?$' +# high_priority: +# - '(.*\.)?wikipedia.org$' +# +# Alternatively you can use external files for configuring the "Hostnames plugin": +# +# hostnames: +# replace: 'rewrite-hosts.yml' +# +# Content of 'rewrite-hosts.yml' (place the file in the same directory as 'settings.yml'): +# '(.*\.)?youtube\.com$': 'invidious.example.com' +# '(.*\.)?youtu\.be$': 'invidious.example.com' +# + +checker: + # disable checker when in debug mode + off_when_debug: true + + # use "scheduling: false" to disable scheduling + # scheduling: interval or int + + # to activate the scheduler: + # * uncomment "scheduling" section + # * add "cache2 = name=searxngcache,items=2000,blocks=2000,blocksize=4096,bitmap=1" + # to your uwsgi.ini + + # scheduling: + # start_after: [300, 1800] # delay to start the first run of the checker + # every: [86400, 90000] # how often the checker runs + + # additional tests: only for the YAML anchors (see the engines section) + # + additional_tests: + rosebud: &test_rosebud + matrix: + query: rosebud + lang: en + result_container: + - not_empty + - ['one_title_contains', 'citizen kane'] + test: + - unique_results + + android: &test_android + matrix: + query: ['android'] + lang: ['en', 'de', 'fr', 'zh-CN'] + result_container: + - not_empty + - ['one_title_contains', 'google'] + test: + - unique_results + + # tests: only for the YAML anchors (see the engines section) + tests: + infobox: &tests_infobox + infobox: + matrix: + query: ["linux", "new york", "bbc"] + result_container: + - has_infobox + +categories_as_tabs: + general: + images: + videos: + news: + map: + music: + it: + science: + files: + social media: + +engines: + - name: 9gag + engine: 9gag + shortcut: 9g + disabled: true + + - name: adobe stock + engine: adobe_stock + shortcut: asi + categories: ["images"] + # https://docs.searxng.org/dev/engines/online/adobe_stock.html + adobe_order: relevance + adobe_content_types: ["photo", "illustration", "zip_vector", "template", "3d", "image"] + timeout: 6 + disabled: true + + - name: adobe stock video + engine: adobe_stock + shortcut: asv + network: adobe stock + categories: ["videos"] + adobe_order: relevance + adobe_content_types: ["video"] + timeout: 6 + disabled: true + + - name: adobe stock audio + engine: adobe_stock + shortcut: asa + network: adobe stock + categories: ["music"] + adobe_order: relevance + adobe_content_types: ["audio"] + timeout: 6 + disabled: true + + - name: alexandria + engine: json_engine + shortcut: alx + categories: general + paging: true + search_url: https://api.alexandria.org/?a=1&q={query}&p={pageno} + results_query: results + title_query: title + url_query: url + content_query: snippet + timeout: 1.5 + disabled: true + about: + website: https://alexandria.org/ + official_api_documentation: https://github.com/alexandria-org/alexandria-api/raw/master/README.md + use_official_api: true + require_api_key: false + results: JSON + + # - name: astrophysics data system + # engine: astrophysics_data_system + # sort: asc + # weight: 5 + # categories: [science] + # api_key: your-new-key + # shortcut: ads + + - name: alpine linux packages + engine: alpinelinux + disabled: true + shortcut: alp + + - name: annas archive + engine: annas_archive + disabled: true + shortcut: aa + + # - name: annas articles + # engine: annas_archive + # shortcut: aaa + # # https://docs.searxng.org/dev/engines/online/annas_archive.html + # aa_content: 'magazine' # book_fiction, book_unknown, book_nonfiction, book_comic + # aa_ext: 'pdf' # pdf, epub, .. + # aa_sort: oldest' # newest, oldest, largest, smallest + + - name: apk mirror + engine: apkmirror + timeout: 4.0 + shortcut: apkm + disabled: true + + - name: apple app store + engine: apple_app_store + shortcut: aps + disabled: true + + # Requires Tor + - name: ahmia + engine: ahmia + categories: onions + enable_http: true + shortcut: ah + + - name: anaconda + engine: xpath + paging: true + first_page_num: 0 + search_url: https://anaconda.org/search?q={query}&page={pageno} + results_xpath: //tbody/tr + url_xpath: ./td/h5/a[last()]/@href + title_xpath: ./td/h5 + content_xpath: ./td[h5]/text() + categories: it + timeout: 6.0 + shortcut: conda + disabled: true + + - name: arch linux wiki + engine: archlinux + shortcut: al + + - name: nixos wiki + engine: mediawiki + shortcut: nixw + base_url: https://wiki.nixos.org/ + search_type: text + disabled: true + categories: [it, software wikis] + + - name: artic + engine: artic + shortcut: arc + timeout: 4.0 + + - name: arxiv + engine: arxiv + shortcut: arx + timeout: 4.0 + + - name: ask + engine: ask + shortcut: ask + disabled: true + + # tmp suspended: dh key too small + # - name: base + # engine: base + # shortcut: bs + + - name: bandcamp + engine: bandcamp + shortcut: bc + categories: music + + - name: wikipedia + engine: wikipedia + shortcut: wp + # add "list" to the array to get results in the results list + display_type: ["infobox"] + categories: [general] + + - name: bilibili + engine: bilibili + shortcut: bil + disabled: true + + - name: bing + engine: bing + shortcut: bi + disabled: true + + - name: bing images + engine: bing_images + shortcut: bii + + - name: bing news + engine: bing_news + shortcut: bin + + - name: bing videos + engine: bing_videos + shortcut: biv + + - name: bitbucket + engine: xpath + paging: true + search_url: https://bitbucket.org/repo/all/{pageno}?name={query} + url_xpath: //article[@class="repo-summary"]//a[@class="repo-link"]/@href + title_xpath: //article[@class="repo-summary"]//a[@class="repo-link"] + content_xpath: //article[@class="repo-summary"]/p + categories: [it, repos] + timeout: 4.0 + disabled: true + shortcut: bb + about: + website: https://bitbucket.org/ + wikidata_id: Q2493781 + official_api_documentation: https://developer.atlassian.com/bitbucket + use_official_api: false + require_api_key: false + results: HTML + + - name: bpb + engine: bpb + shortcut: bpb + disabled: true + + - name: btdigg + engine: btdigg + shortcut: bt + disabled: true + + - name: openverse + engine: openverse + categories: images + shortcut: opv + + - name: media.ccc.de + engine: ccc_media + shortcut: c3tv + # We don't set language: de here because media.ccc.de is not just + # for a German audience. It contains many English videos and many + # German videos have English subtitles. + disabled: true + + - name: chefkoch + engine: chefkoch + shortcut: chef + # to show premium or plus results too: + # skip_premium: false + + - name: cloudflareai + engine: cloudflareai + shortcut: cfai + # get api token and accont id from https://developers.cloudflare.com/workers-ai/get-started/rest-api/ + cf_account_id: 'your_cf_accout_id' + cf_ai_api: 'your_cf_api' + # create your ai gateway by https://developers.cloudflare.com/ai-gateway/get-started/creating-gateway/ + cf_ai_gateway: 'your_cf_ai_gateway_name' + # find the model name from https://developers.cloudflare.com/workers-ai/models/#text-generation + cf_ai_model: 'ai_model_name' + # custom your preferences + # cf_ai_model_display_name: 'Cloudflare AI' + # cf_ai_model_assistant: 'prompts_for_assistant_role' + # cf_ai_model_system: 'prompts_for_system_role' + timeout: 30 + disabled: true + + # - name: core.ac.uk + # engine: core + # categories: science + # shortcut: cor + # # get your API key from: https://core.ac.uk/api-keys/register/ + # api_key: 'unset' + + - name: cppreference + engine: cppreference + shortcut: cpp + paging: false + disabled: true + + - name: crossref + engine: crossref + shortcut: cr + timeout: 30 + disabled: true + + - name: crowdview + engine: json_engine + shortcut: cv + categories: general + paging: false + search_url: https://crowdview-next-js.onrender.com/api/search-v3?query={query} + results_query: results + url_query: link + title_query: title + content_query: snippet + title_html_to_text: true + content_html_to_text: true + disabled: true + about: + website: https://crowdview.ai/ + + - name: yep + engine: yep + shortcut: yep + categories: general + search_type: web + timeout: 5 + disabled: true + + - name: yep images + engine: yep + shortcut: yepi + categories: images + search_type: images + disabled: true + + - name: yep news + engine: yep + shortcut: yepn + categories: news + search_type: news + disabled: true + + - name: curlie + engine: xpath + shortcut: cl + categories: general + disabled: true + paging: true + lang_all: '' + search_url: https://curlie.org/search?q={query}&lang={lang}&start={pageno}&stime=92452189 + page_size: 20 + results_xpath: //div[@id="site-list-content"]/div[@class="site-item"] + url_xpath: ./div[@class="title-and-desc"]/a/@href + title_xpath: ./div[@class="title-and-desc"]/a/div + content_xpath: ./div[@class="title-and-desc"]/div[@class="site-descr"] + about: + website: https://curlie.org/ + wikidata_id: Q60715723 + use_official_api: false + require_api_key: false + results: HTML + + - name: currency + engine: currency_convert + categories: general + shortcut: cc + + - name: deezer + engine: deezer + shortcut: dz + disabled: true + + - name: destatis + engine: destatis + shortcut: destat + disabled: true + + - name: deviantart + engine: deviantart + shortcut: da + timeout: 3.0 + + - name: ddg definitions + engine: duckduckgo_definitions + shortcut: ddd + weight: 2 + disabled: true + tests: *tests_infobox + + # cloudflare protected + # - name: digbt + # engine: digbt + # shortcut: dbt + # timeout: 6.0 + # disabled: true + + - name: docker hub + engine: docker_hub + shortcut: dh + categories: [it, packages] + + - name: encyclosearch + engine: json_engine + shortcut: es + categories: general + paging: true + search_url: https://encyclosearch.org/encyclosphere/search?q={query}&page={pageno}&resultsPerPage=15 + results_query: Results + url_query: SourceURL + title_query: Title + content_query: Description + disabled: true + about: + website: https://encyclosearch.org + official_api_documentation: https://encyclosearch.org/docs/#/rest-api + use_official_api: true + require_api_key: false + results: JSON + + - name: erowid + engine: xpath + paging: true + first_page_num: 0 + page_size: 30 + search_url: https://www.erowid.org/search.php?q={query}&s={pageno} + url_xpath: //dl[@class="results-list"]/dt[@class="result-title"]/a/@href + title_xpath: //dl[@class="results-list"]/dt[@class="result-title"]/a/text() + content_xpath: //dl[@class="results-list"]/dd[@class="result-details"] + categories: [] + shortcut: ew + disabled: true + about: + website: https://www.erowid.org/ + wikidata_id: Q1430691 + official_api_documentation: + use_official_api: false + require_api_key: false + results: HTML + + # - name: elasticsearch + # shortcut: es + # engine: elasticsearch + # base_url: http://localhost:9200 + # username: elastic + # password: changeme + # index: my-index + # # available options: match, simple_query_string, term, terms, custom + # query_type: match + # # if query_type is set to custom, provide your query here + # #custom_query_json: {"query":{"match_all": {}}} + # #show_metadata: false + # disabled: true + + - name: wikidata + engine: wikidata + shortcut: wd + timeout: 3.0 + weight: 2 + # add "list" to the array to get results in the results list + display_type: ["infobox"] + tests: *tests_infobox + categories: [general] + + - name: duckduckgo + engine: duckduckgo + shortcut: ddg + + - name: duckduckgo images + engine: duckduckgo_extra + categories: [images, web] + ddg_category: images + shortcut: ddi + disabled: true + + - name: duckduckgo videos + engine: duckduckgo_extra + categories: [videos, web] + ddg_category: videos + shortcut: ddv + disabled: true + + - name: duckduckgo news + engine: duckduckgo_extra + categories: [news, web] + ddg_category: news + shortcut: ddn + disabled: true + + - name: duckduckgo weather + engine: duckduckgo_weather + shortcut: ddw + disabled: true + + - name: apple maps + engine: apple_maps + shortcut: apm + disabled: true + timeout: 5.0 + + - name: emojipedia + engine: emojipedia + timeout: 4.0 + shortcut: em + disabled: true + + - name: tineye + engine: tineye + shortcut: tin + timeout: 9.0 + disabled: true + + - name: etymonline + engine: xpath + paging: true + search_url: https://etymonline.com/search?page={pageno}&q={query} + url_xpath: //a[contains(@class, "word__name--")]/@href + title_xpath: //a[contains(@class, "word__name--")] + content_xpath: //section[contains(@class, "word__defination")] + first_page_num: 1 + shortcut: et + categories: [dictionaries] + about: + website: https://www.etymonline.com/ + wikidata_id: Q1188617 + official_api_documentation: + use_official_api: false + require_api_key: false + results: HTML + + # - name: ebay + # engine: ebay + # shortcut: eb + # base_url: 'https://www.ebay.com' + # disabled: true + # timeout: 5 + + - name: 1x + engine: www1x + shortcut: 1x + timeout: 3.0 + disabled: true + + - name: fdroid + engine: fdroid + shortcut: fd + disabled: true + + - name: findthatmeme + engine: findthatmeme + shortcut: ftm + disabled: true + + - name: flickr + categories: images + shortcut: fl + # You can use the engine using the official stable API, but you need an API + # key, see: https://www.flickr.com/services/apps/create/ + # engine: flickr + # api_key: 'apikey' # required! + # Or you can use the html non-stable engine, activated by default + engine: flickr_noapi + + - name: free software directory + engine: mediawiki + shortcut: fsd + categories: [it, software wikis] + base_url: https://directory.fsf.org/ + search_type: title + timeout: 5.0 + disabled: true + about: + website: https://directory.fsf.org/ + wikidata_id: Q2470288 + + # - name: freesound + # engine: freesound + # shortcut: fnd + # disabled: true + # timeout: 15.0 + # API key required, see: https://freesound.org/docs/api/overview.html + # api_key: MyAPIkey + + - name: frinkiac + engine: frinkiac + shortcut: frk + disabled: true + + - name: fyyd + engine: fyyd + shortcut: fy + timeout: 8.0 + disabled: true + + - name: geizhals + engine: geizhals + shortcut: geiz + disabled: true + + - name: genius + engine: genius + shortcut: gen + + - name: gentoo + engine: mediawiki + shortcut: ge + categories: ["it", "software wikis"] + base_url: "https://wiki.gentoo.org/" + api_path: "api.php" + search_type: text + timeout: 10 + + - name: gitlab + engine: gitlab + base_url: https://gitlab.com + shortcut: gl + disabled: true + about: + website: https://gitlab.com/ + wikidata_id: Q16639197 + + # - name: gnome + # engine: gitlab + # base_url: https://gitlab.gnome.org + # shortcut: gn + # about: + # website: https://gitlab.gnome.org + # wikidata_id: Q44316 + + - name: github + engine: github + shortcut: gh + + - name: codeberg + # https://docs.searxng.org/dev/engines/online/gitea.html + engine: gitea + base_url: https://codeberg.org + shortcut: cb + disabled: true + + - name: gitea.com + engine: gitea + base_url: https://gitea.com + shortcut: gitea + disabled: true + + - name: goodreads + engine: goodreads + shortcut: good + timeout: 4.0 + disabled: true + + - name: google + engine: google + shortcut: go + # additional_tests: + # android: *test_android + + - name: google images + engine: google_images + shortcut: goi + # additional_tests: + # android: *test_android + # dali: + # matrix: + # query: ['Dali Christ'] + # lang: ['en', 'de', 'fr', 'zh-CN'] + # result_container: + # - ['one_title_contains', 'Salvador'] + + - name: google news + engine: google_news + shortcut: gon + # additional_tests: + # android: *test_android + + - name: google videos + engine: google_videos + shortcut: gov + # additional_tests: + # android: *test_android + + - name: google scholar + engine: google_scholar + shortcut: gos + + - name: google play apps + engine: google_play + categories: [files, apps] + shortcut: gpa + play_categ: apps + disabled: true + + - name: google play movies + engine: google_play + categories: videos + shortcut: gpm + play_categ: movies + disabled: true + + - name: material icons + engine: material_icons + categories: images + shortcut: mi + disabled: true + + - name: habrahabr + engine: xpath + paging: true + search_url: https://habr.com/en/search/page{pageno}/?q={query} + results_xpath: //article[contains(@class, "tm-articles-list__item")] + url_xpath: .//a[@class="tm-title__link"]/@href + title_xpath: .//a[@class="tm-title__link"] + content_xpath: .//div[contains(@class, "article-formatted-body")] + categories: it + timeout: 4.0 + disabled: true + shortcut: habr + about: + website: https://habr.com/ + wikidata_id: Q4494434 + official_api_documentation: https://habr.com/en/docs/help/api/ + use_official_api: false + require_api_key: false + results: HTML + + - name: hackernews + engine: hackernews + shortcut: hn + disabled: true + + - name: hex + engine: hex + shortcut: hex + disabled: true + # Valid values: name inserted_at updated_at total_downloads recent_downloads + sort_criteria: "recent_downloads" + page_size: 10 + + - name: crates.io + engine: crates + shortcut: crates + disabled: true + timeout: 6.0 + + - name: hoogle + engine: xpath + search_url: https://hoogle.haskell.org/?hoogle={query} + results_xpath: '//div[@class="result"]' + title_xpath: './/div[@class="ans"]//a' + url_xpath: './/div[@class="ans"]//a/@href' + content_xpath: './/div[@class="from"]' + page_size: 20 + categories: [it, packages] + shortcut: ho + about: + website: https://hoogle.haskell.org/ + wikidata_id: Q34010 + official_api_documentation: https://hackage.haskell.org/api + use_official_api: false + require_api_key: false + results: JSON + + - name: imdb + engine: imdb + shortcut: imdb + timeout: 6.0 + disabled: true + + - name: imgur + engine: imgur + shortcut: img + disabled: true + + - name: ina + engine: ina + shortcut: in + timeout: 6.0 + disabled: true + + - name: invidious + engine: invidious + # Instanes will be selected randomly, see https://api.invidious.io/ for + # instances that are stable (good uptime) and close to you. + base_url: + - https://invidious.adminforge.de + - https://inv.nadeko.net + shortcut: iv + timeout: 3.0 + disabled: true + + - name: ipernity + engine: ipernity + shortcut: ip + disabled: true + + - name: jisho + engine: jisho + shortcut: js + timeout: 3.0 + disabled: true + + - name: kickass + engine: kickass + base_url: + - https://kickasstorrents.to + - https://kickasstorrents.cr + - https://kickasstorrent.cr + - https://kickass.sx + - https://kat.am + shortcut: kc + timeout: 4.0 + + - name: lemmy communities + engine: lemmy + lemmy_type: Communities + shortcut: leco + + - name: lemmy users + engine: lemmy + network: lemmy communities + lemmy_type: Users + shortcut: leus + + - name: lemmy posts + engine: lemmy + network: lemmy communities + lemmy_type: Posts + shortcut: lepo + + - name: lemmy comments + engine: lemmy + network: lemmy communities + lemmy_type: Comments + shortcut: lecom + + - name: library genesis + engine: xpath + # search_url: https://libgen.is/search.php?req={query} + search_url: https://libgen.rs/search.php?req={query} + url_xpath: //a[contains(@href,"book/index.php?md5")]/@href + title_xpath: //a[contains(@href,"book/")]/text()[1] + content_xpath: //td/a[1][contains(@href,"=author")]/text() + categories: files + timeout: 7.0 + disabled: true + shortcut: lg + about: + website: https://libgen.fun/ + wikidata_id: Q22017206 + official_api_documentation: + use_official_api: false + require_api_key: false + results: HTML + + - name: z-library + engine: zlibrary + shortcut: zlib + categories: files + timeout: 7.0 + + - name: library of congress + engine: loc + shortcut: loc + categories: images + + - name: libretranslate + engine: libretranslate + # https://github.com/LibreTranslate/LibreTranslate?tab=readme-ov-file#mirrors + base_url: + - https://libretranslate.com/translate + # api_key: abc123 + shortcut: lt + disabled: true + + - name: lingva + engine: lingva + shortcut: lv + # set lingva instance in url, by default it will use the official instance + # url: https://lingva.thedaviddelta.com + + - name: lobste.rs + engine: xpath + search_url: https://lobste.rs/search?q={query}&what=stories&order=relevance + results_xpath: //li[contains(@class, "story")] + url_xpath: .//a[@class="u-url"]/@href + title_xpath: .//a[@class="u-url"] + content_xpath: .//a[@class="domain"] + categories: it + shortcut: lo + timeout: 5.0 + disabled: true + about: + website: https://lobste.rs/ + wikidata_id: Q60762874 + official_api_documentation: + use_official_api: false + require_api_key: false + results: HTML + + - name: mastodon users + engine: mastodon + mastodon_type: accounts + base_url: https://mastodon.social + shortcut: mau + + - name: mastodon hashtags + engine: mastodon + mastodon_type: hashtags + base_url: https://mastodon.social + shortcut: mah + + # - name: matrixrooms + # engine: mrs + # # https://docs.searxng.org/dev/engines/online/mrs.html + # # base_url: https://mrs-api-host + # shortcut: mtrx + # disabled: true + + - name: mdn + shortcut: mdn + engine: json_engine + categories: [it] + paging: true + search_url: https://developer.mozilla.org/api/v1/search?q={query}&page={pageno} + results_query: documents + url_query: mdn_url + url_prefix: https://developer.mozilla.org + title_query: title + content_query: summary + about: + website: https://developer.mozilla.org + wikidata_id: Q3273508 + official_api_documentation: null + use_official_api: false + require_api_key: false + results: JSON + + - name: metacpan + engine: metacpan + shortcut: cpan + disabled: true + number_of_results: 20 + + # - name: meilisearch + # engine: meilisearch + # shortcut: mes + # enable_http: true + # base_url: http://localhost:7700 + # index: my-index + + - name: mixcloud + engine: mixcloud + shortcut: mc + + # MongoDB engine + # Required dependency: pymongo + # - name: mymongo + # engine: mongodb + # shortcut: md + # exact_match_only: false + # host: '127.0.0.1' + # port: 27017 + # enable_http: true + # results_per_page: 20 + # database: 'business' + # collection: 'reviews' # name of the db collection + # key: 'name' # key in the collection to search for + + - name: mozhi + engine: mozhi + base_url: + - https://mozhi.aryak.me + - https://translate.bus-hit.me + - https://nyc1.mz.ggtyler.dev + # mozhi_engine: google - see https://mozhi.aryak.me for supported engines + timeout: 4.0 + shortcut: mz + disabled: true + + - name: mwmbl + engine: mwmbl + # api_url: https://api.mwmbl.org + shortcut: mwm + disabled: true + + - name: npm + engine: npm + shortcut: npm + timeout: 5.0 + disabled: true + + - name: nyaa + engine: nyaa + shortcut: nt + disabled: true + + - name: mankier + engine: json_engine + search_url: https://www.mankier.com/api/v2/mans/?q={query} + results_query: results + url_query: url + title_query: name + content_query: description + categories: it + shortcut: man + about: + website: https://www.mankier.com/ + official_api_documentation: https://www.mankier.com/api + use_official_api: true + require_api_key: false + results: JSON + + # read https://docs.searxng.org/dev/engines/online/mullvad_leta.html + # - name: mullvadleta + # engine: mullvad_leta + # leta_engine: google # choose one of the following: google, brave + # use_cache: true # Only 100 non-cache searches per day, suggested only for private instances + # search_url: https://leta.mullvad.net + # categories: [general, web] + # shortcut: ml + + - name: odysee + engine: odysee + shortcut: od + disabled: true + + - name: openairedatasets + engine: json_engine + paging: true + search_url: https://api.openaire.eu/search/datasets?format=json&page={pageno}&size=10&title={query} + results_query: response/results/result + url_query: metadata/oaf:entity/oaf:result/children/instance/webresource/url/$ + title_query: metadata/oaf:entity/oaf:result/title/$ + content_query: metadata/oaf:entity/oaf:result/description/$ + content_html_to_text: true + categories: "science" + shortcut: oad + timeout: 5.0 + about: + website: https://www.openaire.eu/ + wikidata_id: Q25106053 + official_api_documentation: https://api.openaire.eu/ + use_official_api: false + require_api_key: false + results: JSON + + - name: openairepublications + engine: json_engine + paging: true + search_url: https://api.openaire.eu/search/publications?format=json&page={pageno}&size=10&title={query} + results_query: response/results/result + url_query: metadata/oaf:entity/oaf:result/children/instance/webresource/url/$ + title_query: metadata/oaf:entity/oaf:result/title/$ + content_query: metadata/oaf:entity/oaf:result/description/$ + content_html_to_text: true + categories: science + shortcut: oap + timeout: 5.0 + about: + website: https://www.openaire.eu/ + wikidata_id: Q25106053 + official_api_documentation: https://api.openaire.eu/ + use_official_api: false + require_api_key: false + results: JSON + + - name: openlibrary + engine: openlibrary + shortcut: ol + timeout: 5 + disabled: true + + - name: openmeteo + engine: open_meteo + shortcut: om + disabled: true + + # - name: opensemanticsearch + # engine: opensemantic + # shortcut: oss + # base_url: 'http://localhost:8983/solr/opensemanticsearch/' + + - name: openstreetmap + engine: openstreetmap + shortcut: osm + + - name: openrepos + engine: xpath + paging: true + search_url: https://openrepos.net/search/node/{query}?page={pageno} + url_xpath: //li[@class="search-result"]//h3[@class="title"]/a/@href + title_xpath: //li[@class="search-result"]//h3[@class="title"]/a + content_xpath: //li[@class="search-result"]//div[@class="search-snippet-info"]//p[@class="search-snippet"] + categories: files + timeout: 4.0 + disabled: true + shortcut: or + about: + website: https://openrepos.net/ + wikidata_id: + official_api_documentation: + use_official_api: false + require_api_key: false + results: HTML + + - name: packagist + engine: json_engine + paging: true + search_url: https://packagist.org/search.json?q={query}&page={pageno} + results_query: results + url_query: url + title_query: name + content_query: description + categories: [it, packages] + disabled: true + timeout: 5.0 + shortcut: pack + about: + website: https://packagist.org + wikidata_id: Q108311377 + official_api_documentation: https://packagist.org/apidoc + use_official_api: true + require_api_key: false + results: JSON + + - name: pdbe + engine: pdbe + shortcut: pdb + # Hide obsolete PDB entries. Default is not to hide obsolete structures + # hide_obsolete: false + + - name: photon + engine: photon + shortcut: ph + + - name: pinterest + engine: pinterest + shortcut: pin + + - name: piped + engine: piped + shortcut: ppd + categories: videos + piped_filter: videos + timeout: 3.0 + + # URL to use as link and for embeds + frontend_url: https://srv.piped.video + # Instance will be selected randomly, for more see https://piped-instances.kavin.rocks/ + backend_url: + - https://pipedapi.adminforge.de + - https://pipedapi.nosebs.ru + - https://pipedapi.ducks.party + - https://pipedapi.reallyaweso.me + - https://api.piped.private.coffee + - https://pipedapi.darkness.services + + - name: piped.music + engine: piped + network: piped + shortcut: ppdm + categories: music + piped_filter: music_songs + timeout: 3.0 + + - name: piratebay + engine: piratebay + shortcut: tpb + # You may need to change this URL to a proxy if piratebay is blocked in your + # country + url: https://thepiratebay.org/ + timeout: 3.0 + + - name: pixiv + shortcut: pv + engine: pixiv + disabled: true + inactive: true + pixiv_image_proxies: + - https://pximg.example.org + # A proxy is required to load the images. Hosting an image proxy server + # for Pixiv: + # --> https://pixivfe.pages.dev/hosting-image-proxy-server/ + # Proxies from public instances. Ask the public instances owners if they + # agree to receive traffic from SearXNG! + # --> https://codeberg.org/VnPower/PixivFE#instances + # --> https://github.com/searxng/searxng/pull/3192#issuecomment-1941095047 + # image proxy of https://pixiv.cat + # - https://i.pixiv.cat + # image proxy of https://www.pixiv.pics + # - https://pximg.cocomi.eu.org + # image proxy of https://pixivfe.exozy.me + # - https://pximg.exozy.me + # image proxy of https://pixivfe.ducks.party + # - https://pixiv.ducks.party + # image proxy of https://pixiv.perennialte.ch + # - https://pximg.perennialte.ch + + - name: podcastindex + engine: podcastindex + shortcut: podcast + + # Required dependency: psychopg2 + # - name: postgresql + # engine: postgresql + # database: postgres + # username: postgres + # password: postgres + # limit: 10 + # query_str: 'SELECT * from my_table WHERE my_column = %(query)s' + # shortcut : psql + + - name: presearch + engine: presearch + search_type: search + categories: [general, web] + shortcut: ps + timeout: 4.0 + disabled: true + + - name: presearch images + engine: presearch + network: presearch + search_type: images + categories: [images, web] + timeout: 4.0 + shortcut: psimg + disabled: true + + - name: presearch videos + engine: presearch + network: presearch + search_type: videos + categories: [general, web] + timeout: 4.0 + shortcut: psvid + disabled: true + + - name: presearch news + engine: presearch + network: presearch + search_type: news + categories: [news, web] + timeout: 4.0 + shortcut: psnews + disabled: true + + - name: pub.dev + engine: xpath + shortcut: pd + search_url: https://pub.dev/packages?q={query}&page={pageno} + paging: true + results_xpath: //div[contains(@class,"packages-item")] + url_xpath: ./div/h3/a/@href + title_xpath: ./div/h3/a + content_xpath: ./div/div/div[contains(@class,"packages-description")]/span + categories: [packages, it] + timeout: 3.0 + disabled: true + first_page_num: 1 + about: + website: https://pub.dev/ + official_api_documentation: https://pub.dev/help/api + use_official_api: false + require_api_key: false + results: HTML + + - name: public domain image archive + engine: public_domain_image_archive + shortcut: pdia + + - name: pubmed + engine: pubmed + shortcut: pub + timeout: 3.0 + + - name: pypi + shortcut: pypi + engine: pypi + + - name: qwant + qwant_categ: web + engine: qwant + shortcut: qw + categories: [general, web] + additional_tests: + rosebud: *test_rosebud + + - name: qwant news + qwant_categ: news + engine: qwant + shortcut: qwn + categories: news + network: qwant + + - name: qwant images + qwant_categ: images + engine: qwant + shortcut: qwi + categories: [images, web] + network: qwant + + - name: qwant videos + qwant_categ: videos + engine: qwant + shortcut: qwv + categories: [videos, web] + network: qwant + + # - name: library + # engine: recoll + # shortcut: lib + # base_url: 'https://recoll.example.org/' + # search_dir: '' + # mount_prefix: /export + # dl_prefix: 'https://download.example.org' + # timeout: 30.0 + # categories: files + # disabled: true + + # - name: recoll library reference + # engine: recoll + # base_url: 'https://recoll.example.org/' + # search_dir: reference + # mount_prefix: /export + # dl_prefix: 'https://download.example.org' + # shortcut: libr + # timeout: 30.0 + # categories: files + # disabled: true + + - name: radio browser + engine: radio_browser + shortcut: rb + + - name: reddit + engine: reddit + shortcut: re + page_size: 25 + disabled: true + + - name: right dao + engine: xpath + paging: true + page_size: 12 + search_url: https://rightdao.com/search?q={query}&start={pageno} + results_xpath: //div[contains(@class, "description")] + url_xpath: ../div[contains(@class, "title")]/a/@href + title_xpath: ../div[contains(@class, "title")] + content_xpath: . + categories: general + shortcut: rd + disabled: true + about: + website: https://rightdao.com/ + use_official_api: false + require_api_key: false + results: HTML + + - name: rottentomatoes + engine: rottentomatoes + shortcut: rt + disabled: true + + # Required dependency: redis + # - name: myredis + # shortcut : rds + # engine: redis_server + # exact_match_only: false + # host: '127.0.0.1' + # port: 6379 + # enable_http: true + # password: '' + # db: 0 + + # tmp suspended: bad certificate + # - name: scanr structures + # shortcut: scs + # engine: scanr_structures + # disabled: true + + - name: searchmysite + engine: xpath + shortcut: sms + categories: general + paging: true + search_url: https://searchmysite.net/search/?q={query}&page={pageno} + results_xpath: //div[contains(@class,'search-result')] + url_xpath: .//a[contains(@class,'result-link')]/@href + title_xpath: .//span[contains(@class,'result-title-txt')]/text() + content_xpath: ./p[@id='result-hightlight'] + disabled: true + about: + website: https://searchmysite.net + + - name: sepiasearch + engine: sepiasearch + shortcut: sep + + - name: soundcloud + engine: soundcloud + shortcut: sc + + - name: stackoverflow + engine: stackexchange + shortcut: st + api_site: 'stackoverflow' + categories: [it, q&a] + + - name: askubuntu + engine: stackexchange + shortcut: ubuntu + api_site: 'askubuntu' + categories: [it, q&a] + + - name: superuser + engine: stackexchange + shortcut: su + api_site: 'superuser' + categories: [it, q&a] + + - name: discuss.python + engine: discourse + shortcut: dpy + base_url: 'https://discuss.python.org' + categories: [it, q&a] + disabled: true + + - name: caddy.community + engine: discourse + shortcut: caddy + base_url: 'https://caddy.community' + categories: [it, q&a] + disabled: true + + - name: pi-hole.community + engine: discourse + shortcut: pi + categories: [it, q&a] + base_url: 'https://discourse.pi-hole.net' + disabled: true + + - name: searchcode code + engine: searchcode_code + shortcut: scc + disabled: true + + # - name: searx + # engine: searx_engine + # shortcut: se + # instance_urls : + # - http://127.0.0.1:8888/ + # - ... + # disabled: true + + - name: semantic scholar + engine: semantic_scholar + disabled: true + shortcut: se + + # Spotify needs API credentials + # - name: spotify + # engine: spotify + # shortcut: stf + # api_client_id: ******* + # api_client_secret: ******* + + # - name: solr + # engine: solr + # shortcut: slr + # base_url: http://localhost:8983 + # collection: collection_name + # sort: '' # sorting: asc or desc + # field_list: '' # comma separated list of field names to display on the UI + # default_fields: '' # default field to query + # query_fields: '' # query fields + # enable_http: true + + # - name: springer nature + # engine: springer + # # get your API key from: https://dev.springernature.com/signup + # # working API key, for test & debug: "a69685087d07eca9f13db62f65b8f601" + # api_key: 'unset' + # shortcut: springer + # timeout: 15.0 + + - name: startpage + engine: startpage + shortcut: sp + startpage_categ: web + categories: [general, web] + additional_tests: + rosebud: *test_rosebud + + - name: startpage news + engine: startpage + startpage_categ: news + categories: [news, web] + shortcut: spn + + - name: startpage images + engine: startpage + startpage_categ: images + categories: [images, web] + shortcut: spi + + - name: tokyotoshokan + engine: tokyotoshokan + shortcut: tt + timeout: 6.0 + disabled: true + + - name: solidtorrents + engine: solidtorrents + shortcut: solid + timeout: 4.0 + base_url: + - https://solidtorrents.to + - https://bitsearch.to + + # For this demo of the sqlite engine download: + # https://liste.mediathekview.de/filmliste-v2.db.bz2 + # and unpack into searx/data/filmliste-v2.db + # Query to test: "!demo concert" + # + # - name: demo + # engine: sqlite + # shortcut: demo + # categories: general + # result_template: default.html + # database: searx/data/filmliste-v2.db + # query_str: >- + # SELECT title || ' (' || time(duration, 'unixepoch') || ')' AS title, + # COALESCE( NULLIF(url_video_hd,''), NULLIF(url_video_sd,''), url_video) AS url, + # description AS content + # FROM film + # WHERE title LIKE :wildcard OR description LIKE :wildcard + # ORDER BY duration DESC + + - name: tagesschau + engine: tagesschau + # when set to false, display URLs from Tagesschau, and not the actual source + # (e.g. NDR, WDR, SWR, HR, ...) + use_source_url: true + shortcut: ts + disabled: true + + - name: tmdb + engine: xpath + paging: true + categories: movies + search_url: https://www.themoviedb.org/search?page={pageno}&query={query} + results_xpath: //div[contains(@class,"movie") or contains(@class,"tv")]//div[contains(@class,"card")] + url_xpath: .//div[contains(@class,"poster")]/a/@href + thumbnail_xpath: .//img/@src + title_xpath: .//div[contains(@class,"title")]//h2 + content_xpath: .//div[contains(@class,"overview")] + shortcut: tm + disabled: true + + # Requires Tor + - name: torch + engine: xpath + paging: true + search_url: + http://xmh57jrknzkhv6y3ls3ubitzfqnkrwxhopf5aygthi7d6rplyvk3noyd.onion/cgi-bin/omega/omega?P={query}&DEFAULTOP=and + results_xpath: //table//tr + url_xpath: ./td[2]/a + title_xpath: ./td[2]/b + content_xpath: ./td[2]/small + categories: onions + enable_http: true + shortcut: tch + + # torznab engine lets you query any torznab compatible indexer. Using this + # engine in combination with Jackett opens the possibility to query a lot of + # public and private indexers directly from SearXNG. More details at: + # https://docs.searxng.org/dev/engines/online/torznab.html + # + # - name: Torznab EZTV + # engine: torznab + # shortcut: eztv + # base_url: http://localhost:9117/api/v2.0/indexers/eztv/results/torznab + # enable_http: true # if using localhost + # api_key: xxxxxxxxxxxxxxx + # show_magnet_links: true + # show_torrent_files: false + # # https://github.com/Jackett/Jackett/wiki/Jackett-Categories + # torznab_categories: # optional + # - 2000 + # - 5000 + + # tmp suspended - too slow, too many errors + # - name: urbandictionary + # engine : xpath + # search_url : https://www.urbandictionary.com/define.php?term={query} + # url_xpath : //*[@class="word"]/@href + # title_xpath : //*[@class="def-header"] + # content_xpath: //*[@class="meaning"] + # shortcut: ud + + - name: unsplash + engine: unsplash + shortcut: us + + - name: yandex + engine: yandex + categories: general + search_type: web + shortcut: yd + disabled: true + inactive: true + + - name: yandex images + engine: yandex + categories: images + search_type: images + shortcut: ydi + disabled: true + inactive: true + + - name: yandex music + engine: yandex_music + shortcut: ydm + disabled: true + # https://yandex.com/support/music/access.html + inactive: true + + - name: yahoo + engine: yahoo + shortcut: yh + disabled: true + + - name: yahoo news + engine: yahoo_news + shortcut: yhn + + - name: youtube + shortcut: yt + # You can use the engine using the official stable API, but you need an API + # key See: https://console.developers.google.com/project + # + # engine: youtube_api + # api_key: 'apikey' # required! + # + # Or you can use the html non-stable engine, activated by default + engine: youtube_noapi + + - name: dailymotion + engine: dailymotion + shortcut: dm + + - name: vimeo + engine: vimeo + shortcut: vm + + - name: wiby + engine: json_engine + paging: true + search_url: https://wiby.me/json/?q={query}&p={pageno} + url_query: URL + title_query: Title + content_query: Snippet + categories: [general, web] + shortcut: wib + disabled: true + about: + website: https://wiby.me/ + + - name: wikibooks + engine: mediawiki + weight: 0.5 + shortcut: wb + categories: [general, wikimedia] + base_url: "https://{language}.wikibooks.org/" + search_type: text + disabled: true + about: + website: https://www.wikibooks.org/ + wikidata_id: Q367 + + - name: wikinews + engine: mediawiki + shortcut: wn + categories: [news, wikimedia] + base_url: "https://{language}.wikinews.org/" + search_type: text + srsort: create_timestamp_desc + about: + website: https://www.wikinews.org/ + wikidata_id: Q964 + + - name: wikiquote + engine: mediawiki + weight: 0.5 + shortcut: wq + categories: [general, wikimedia] + base_url: "https://{language}.wikiquote.org/" + search_type: text + disabled: true + additional_tests: + rosebud: *test_rosebud + about: + website: https://www.wikiquote.org/ + wikidata_id: Q369 + + - name: wikisource + engine: mediawiki + weight: 0.5 + shortcut: ws + categories: [general, wikimedia] + base_url: "https://{language}.wikisource.org/" + search_type: text + disabled: true + about: + website: https://www.wikisource.org/ + wikidata_id: Q263 + + - name: wikispecies + engine: mediawiki + shortcut: wsp + categories: [general, science, wikimedia] + base_url: "https://species.wikimedia.org/" + search_type: text + disabled: true + about: + website: https://species.wikimedia.org/ + wikidata_id: Q13679 + tests: + wikispecies: + matrix: + query: "Campbell, L.I. et al. 2011: MicroRNAs" + lang: en + result_container: + - not_empty + - ['one_title_contains', 'Tardigrada'] + test: + - unique_results + + - name: wiktionary + engine: mediawiki + shortcut: wt + categories: [dictionaries, wikimedia] + base_url: "https://{language}.wiktionary.org/" + search_type: text + about: + website: https://www.wiktionary.org/ + wikidata_id: Q151 + + - name: wikiversity + engine: mediawiki + weight: 0.5 + shortcut: wv + categories: [general, wikimedia] + base_url: "https://{language}.wikiversity.org/" + search_type: text + disabled: true + about: + website: https://www.wikiversity.org/ + wikidata_id: Q370 + + - name: wikivoyage + engine: mediawiki + weight: 0.5 + shortcut: wy + categories: [general, wikimedia] + base_url: "https://{language}.wikivoyage.org/" + search_type: text + disabled: true + about: + website: https://www.wikivoyage.org/ + wikidata_id: Q373 + + - name: wikicommons.images + engine: wikicommons + shortcut: wc + categories: images + search_type: images + number_of_results: 10 + + - name: wikicommons.videos + engine: wikicommons + shortcut: wcv + categories: videos + search_type: videos + number_of_results: 10 + + - name: wikicommons.audio + engine: wikicommons + shortcut: wca + categories: music + search_type: audio + number_of_results: 10 + + - name: wikicommons.files + engine: wikicommons + shortcut: wcf + categories: files + search_type: files + number_of_results: 10 + + - name: wolframalpha + shortcut: wa + # You can use the engine using the official stable API, but you need an API + # key. See: https://products.wolframalpha.com/api/ + # + # engine: wolframalpha_api + # api_key: '' + # + # Or you can use the html non-stable engine, activated by default + engine: wolframalpha_noapi + timeout: 6.0 + categories: general + disabled: true + + - name: dictzone + engine: dictzone + shortcut: dc + + - name: mymemory translated + engine: translated + shortcut: tl + timeout: 5.0 + # You can use without an API key, but you are limited to 1000 words/day + # See: https://mymemory.translated.net/doc/usagelimits.php + # api_key: '' + + # Required dependency: mysql-connector-python + # - name: mysql + # engine: mysql_server + # database: mydatabase + # username: user + # password: pass + # limit: 10 + # query_str: 'SELECT * from mytable WHERE fieldname=%(query)s' + # shortcut: mysql + + # Required dependency: mariadb + # - name: mariadb + # engine: mariadb_server + # database: mydatabase + # username: user + # password: pass + # limit: 10 + # query_str: 'SELECT * from mytable WHERE fieldname=%(query)s' + # shortcut: mdb + + - name: 1337x + engine: 1337x + shortcut: 1337x + disabled: true + + - name: duden + engine: duden + shortcut: du + disabled: true + + - name: seznam + shortcut: szn + engine: seznam + disabled: true + + # - name: deepl + # engine: deepl + # shortcut: dpl + # # You can use the engine using the official stable API, but you need an API key + # # See: https://www.deepl.com/pro-api?cta=header-pro-api + # api_key: '' # required! + # timeout: 5.0 + # disabled: true + + - name: mojeek + shortcut: mjk + engine: mojeek + categories: [general, web] + disabled: true + + - name: mojeek images + shortcut: mjkimg + engine: mojeek + categories: [images, web] + search_type: images + paging: false + disabled: true + + - name: mojeek news + shortcut: mjknews + engine: mojeek + categories: [news, web] + search_type: news + paging: false + disabled: true + + - name: moviepilot + engine: moviepilot + shortcut: mp + disabled: true + + - name: naver + shortcut: nvr + categories: [general, web] + engine: xpath + paging: true + search_url: https://search.naver.com/search.naver?where=webkr&sm=osp_hty&ie=UTF-8&query={query}&start={pageno} + url_xpath: //a[@class="link_tit"]/@href + title_xpath: //a[@class="link_tit"] + content_xpath: //div[@class="total_dsc_wrap"]/a + first_page_num: 1 + page_size: 10 + disabled: true + about: + website: https://www.naver.com/ + wikidata_id: Q485639 + official_api_documentation: https://developers.naver.com/docs/nmt/examples/ + use_official_api: false + require_api_key: false + results: HTML + language: ko + + - name: rubygems + shortcut: rbg + engine: xpath + paging: true + search_url: https://rubygems.org/search?page={pageno}&query={query} + results_xpath: /html/body/main/div/a[@class="gems__gem"] + url_xpath: ./@href + title_xpath: ./span/h2 + content_xpath: ./span/p + suggestion_xpath: /html/body/main/div/div[@class="search__suggestions"]/p/a + first_page_num: 1 + categories: [it, packages] + disabled: true + about: + website: https://rubygems.org/ + wikidata_id: Q1853420 + official_api_documentation: https://guides.rubygems.org/rubygems-org-api/ + use_official_api: false + require_api_key: false + results: HTML + + - name: peertube + engine: peertube + shortcut: ptb + paging: true + # alternatives see: https://instances.joinpeertube.org/instances + # base_url: https://tube.4aem.com + categories: videos + disabled: true + timeout: 6.0 + + - name: mediathekviewweb + engine: mediathekviewweb + shortcut: mvw + disabled: true + + - name: yacy + # https://docs.searxng.org/dev/engines/online/yacy.html + engine: yacy + categories: general + search_type: text + base_url: + - https://yacy.searchlab.eu + # see https://github.com/searxng/searxng/pull/3631#issuecomment-2240903027 + # - https://search.kyun.li + # - https://yacy.securecomcorp.eu + # - https://yacy.myserv.ca + # - https://yacy.nsupdate.info + # - https://yacy.electroncash.de + shortcut: ya + disabled: true + # if you aren't using HTTPS for your local yacy instance disable https + # enable_http: false + search_mode: 'global' + # timeout can be reduced in 'local' search mode + timeout: 5.0 + + - name: yacy images + engine: yacy + network: yacy + categories: images + search_type: image + shortcut: yai + disabled: true + # timeout can be reduced in 'local' search mode + timeout: 5.0 + + - name: rumble + engine: rumble + shortcut: ru + base_url: https://rumble.com/ + paging: true + categories: videos + disabled: true + + - name: livespace + engine: livespace + shortcut: ls + categories: videos + disabled: true + timeout: 5.0 + + - name: wordnik + engine: wordnik + shortcut: def + categories: [dictionaries] + timeout: 5.0 + + - name: woxikon.de synonyme + engine: xpath + shortcut: woxi + categories: [dictionaries] + timeout: 5.0 + disabled: true + search_url: https://synonyme.woxikon.de/synonyme/{query}.php + url_xpath: //div[@class="upper-synonyms"]/a/@href + content_xpath: //div[@class="synonyms-list-group"] + title_xpath: //div[@class="upper-synonyms"]/a + no_result_for_http_status: [404] + about: + website: https://www.woxikon.de/ + wikidata_id: # No Wikidata ID + use_official_api: false + require_api_key: false + results: HTML + language: de + + - name: seekr news + engine: seekr + shortcut: senews + categories: news + seekr_category: news + disabled: true + + - name: seekr images + engine: seekr + network: seekr news + shortcut: seimg + categories: images + seekr_category: images + disabled: true + + - name: seekr videos + engine: seekr + network: seekr news + shortcut: sevid + categories: videos + seekr_category: videos + disabled: true + + - name: stract + engine: stract + shortcut: str + disabled: true + + - name: svgrepo + engine: svgrepo + shortcut: svg + timeout: 10.0 + disabled: true + + - name: tootfinder + engine: tootfinder + shortcut: toot + + - name: voidlinux + engine: voidlinux + shortcut: void + disabled: true + + - name: wallhaven + engine: wallhaven + # api_key: abcdefghijklmnopqrstuvwxyz + shortcut: wh + + # wikimini: online encyclopedia for children + # The fulltext and title parameter is necessary for Wikimini because + # sometimes it will not show the results and redirect instead + - name: wikimini + engine: xpath + shortcut: wkmn + search_url: https://fr.wikimini.org/w/index.php?search={query}&title=Sp%C3%A9cial%3ASearch&fulltext=Search + url_xpath: //li/div[@class="mw-search-result-heading"]/a/@href + title_xpath: //li//div[@class="mw-search-result-heading"]/a + content_xpath: //li/div[@class="searchresult"] + categories: general + disabled: true + about: + website: https://wikimini.org/ + wikidata_id: Q3568032 + use_official_api: false + require_api_key: false + results: HTML + language: fr + + - name: wttr.in + engine: wttr + shortcut: wttr + timeout: 9.0 + + - name: yummly + engine: yummly + shortcut: yum + disabled: true + + - name: brave + engine: brave + shortcut: br + time_range_support: true + paging: true + categories: [general, web] + brave_category: search + # brave_spellcheck: true + + - name: brave.images + engine: brave + network: brave + shortcut: brimg + categories: [images, web] + brave_category: images + + - name: brave.videos + engine: brave + network: brave + shortcut: brvid + categories: [videos, web] + brave_category: videos + + - name: brave.news + engine: brave + network: brave + shortcut: brnews + categories: news + brave_category: news + + # - name: brave.goggles + # engine: brave + # network: brave + # shortcut: brgog + # time_range_support: true + # paging: true + # categories: [general, web] + # brave_category: goggles + # Goggles: # required! This should be a URL ending in .goggle + + - name: lib.rs + shortcut: lrs + engine: lib_rs + disabled: true + + - name: sourcehut + shortcut: srht + engine: xpath + paging: true + search_url: https://sr.ht/projects?page={pageno}&search={query} + results_xpath: (//div[@class="event-list"])[1]/div[@class="event"] + url_xpath: ./h4/a[2]/@href + title_xpath: ./h4/a[2] + content_xpath: ./p + first_page_num: 1 + categories: [it, repos] + disabled: true + about: + website: https://sr.ht + wikidata_id: Q78514485 + official_api_documentation: https://man.sr.ht/ + use_official_api: false + require_api_key: false + results: HTML + + - name: goo + shortcut: goo + engine: xpath + paging: true + search_url: https://search.goo.ne.jp/web.jsp?MT={query}&FR={pageno}0 + url_xpath: //div[@class="result"]/p[@class='title fsL1']/a/@href + title_xpath: //div[@class="result"]/p[@class='title fsL1']/a + content_xpath: //p[contains(@class,'url fsM')]/following-sibling::p + first_page_num: 0 + categories: [general, web] + disabled: true + timeout: 4.0 + about: + website: https://search.goo.ne.jp + wikidata_id: Q249044 + use_official_api: false + require_api_key: false + results: HTML + language: ja + + - name: bt4g + engine: bt4g + shortcut: bt4g + + - name: pkg.go.dev + engine: pkg_go_dev + shortcut: pgo + disabled: true + +# Doku engine lets you access to any Doku wiki instance: +# A public one or a privete/corporate one. +# - name: ubuntuwiki +# engine: doku +# shortcut: uw +# base_url: 'https://doc.ubuntu-fr.org' + +# Be careful when enabling this engine if you are +# running a public instance. Do not expose any sensitive +# information. You can restrict access by configuring a list +# of access tokens under tokens. +# - name: git grep +# engine: command +# command: ['git', 'grep', '{{QUERY}}'] +# shortcut: gg +# tokens: [] +# disabled: true +# delimiter: +# chars: ':' +# keys: ['filepath', 'code'] + +# Be careful when enabling this engine if you are +# running a public instance. Do not expose any sensitive +# information. You can restrict access by configuring a list +# of access tokens under tokens. +# - name: locate +# engine: command +# command: ['locate', '{{QUERY}}'] +# shortcut: loc +# tokens: [] +# disabled: true +# delimiter: +# chars: ' ' +# keys: ['line'] + +# Be careful when enabling this engine if you are +# running a public instance. Do not expose any sensitive +# information. You can restrict access by configuring a list +# of access tokens under tokens. +# - name: find +# engine: command +# command: ['find', '.', '-name', '{{QUERY}}'] +# query_type: path +# shortcut: fnd +# tokens: [] +# disabled: true +# delimiter: +# chars: ' ' +# keys: ['line'] + +# Be careful when enabling this engine if you are +# running a public instance. Do not expose any sensitive +# information. You can restrict access by configuring a list +# of access tokens under tokens. +# - name: pattern search in files +# engine: command +# command: ['fgrep', '{{QUERY}}'] +# shortcut: fgr +# tokens: [] +# disabled: true +# delimiter: +# chars: ' ' +# keys: ['line'] + +# Be careful when enabling this engine if you are +# running a public instance. Do not expose any sensitive +# information. You can restrict access by configuring a list +# of access tokens under tokens. +# - name: regex search in files +# engine: command +# command: ['grep', '{{QUERY}}'] +# shortcut: gr +# tokens: [] +# disabled: true +# delimiter: +# chars: ' ' +# keys: ['line'] + +doi_resolvers: + oadoi.org: 'https://oadoi.org/' + doi.org: 'https://doi.org/' + doai.io: 'https://dissem.in/' + sci-hub.se: 'https://sci-hub.se/' + sci-hub.st: 'https://sci-hub.st/' + sci-hub.ru: 'https://sci-hub.ru/' + +default_doi_resolver: 'oadoi.org' diff --git a/apps/lobe-chat-data/README.md b/apps/lobe-chat-data/README.md new file mode 100644 index 0000000..2fc54d3 --- /dev/null +++ b/apps/lobe-chat-data/README.md @@ -0,0 +1,54 @@ +# LobeChat 数据库版 + +## 安装注意事项 + +1. 第一次安装时,会提示安装失败,在应用商店点击重建即可; +2. 安装时,需要将默认的Your-IP修改为您的1Panel主机的IP; +3. 默认的端口号如非必要,请保持默认; +4. 安装成功后,需要登录Casdoor>身份认证>lobechat编辑,在重定向URLS中添加`http://Your-IP:3210/api/auth/callback/casdoor`,保存后即可用下面初始账号登录LobeChat +5. LobeChat更新频繁,应用已设置Latest版本想要体验新版本,点击重建即可。 + +## 初始账号密码 + +LobeChat: + - URL: http://Your-IP:3210 + - Username: user + - Password: 123 +Casdoor: + - URL: http://Your-IP:8000 + - Username: admin + - Password: 123 + +Minio: + - URL: http://Your-IP:9000 + - Username: admin + - Password: YOUR_MINIO_PASSWORD + +## 简介 + +**LobeChat** 是一个现代化设计的开源 ChatGPT/LLMs 聊天应用与开发框架,支持语音合成、多模态、可扩展的(function call)插件系统,一键免费拥有你自己的 ChatGPT/Gemini/Claude/Ollama 应用。 + +Lobe Chat 支持两种部署模式: +- 客户端数据库模式: +该模式下数据均保留在用户本地,不会跨多端同步,也不支持文件上传、知识库等进阶功能。 +- 服务端数据库模式: +该模式下会使用 PostgreSQL 作为数据库,数据会存储在服务端,支持跨多端同步,并提供文件上传、知识库等进阶功能。 + +本应用商店部署的是**服务端数据库版本**(PS:服务端数据库版本的配置脚本太难写了=-=,1Panel官网提供的是客户端数据库版本,功能不全) + +![LobeChat](https://private-user-images.githubusercontent.com/34400653/411259329-9647f70f-b71b-43b6-9564-7cdd12d1c24d.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NDIwOTg1MjQsIm5iZiI6MTc0MjA5ODIyNCwicGF0aCI6Ii8zNDQwMDY1My80MTEyNTkzMjktOTY0N2Y3MGYtYjcxYi00M2I2LTk1NjQtN2NkZDEyZDFjMjRkLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAzMTYlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMzE2VDA0MTAyNFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWM5NjNkZjg3NmE0M2M5OTc4OWVkZWYxNGFiZTQxNzM1YTJlNzg1ODllOGZjMTc4Nzg0MmEwYThiNDQ1MzRkZjcmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.5u2ujzdC-1oZ3-vcrFhXCjEyx9hmpO7VVdGu6cBGYxo) + +## 特性: + +- 多模型服务商支持; +- 支持本地大语言模型 (LLM); +- 模型视觉识别 (Model Visual); +- TTS & STT 语音会话; +- Text to Image 文生图; +- 插件系统 (Function Calling); +- 助手市场 (GPTs); +- 支持本地 / 远程数据库; +- 支持多用户管理; +- 渐进式 Web 应用 (PWA); +- 移动设备适配; +- 自定义主题。 \ No newline at end of file diff --git a/apps/lobe-chat-data/data.yml b/apps/lobe-chat-data/data.yml new file mode 100644 index 0000000..9b6ddef --- /dev/null +++ b/apps/lobe-chat-data/data.yml @@ -0,0 +1,19 @@ +name: LobeChat-Data +tags: + - AI / 大模型 +title: LobeChat服务端数据库版 - 开源、现代设计的 ChatGPT/LLMs UI/框架 +description: LobeChat服务端数据库版 - 开源、现代设计的 ChatGPT/LLMs UI/框架 +additionalProperties: + key: lobe-chat-data + name: LobeChat-Data + tags: + - AI + shortDescZh: LobeChat服务端数据库版 - 现代化设计的开源 ChatGPT/LLMs 聊天应用与开发框架 + shortDescEn: LobeChat-Data - An open-source, modern-design ChatGPT/LLMs UI/Framework + type: tool + crossVersionUpdate: true + limit: 0 + recommend: 0 + website: https://lobehub.com + github: https://github.com/lobehub/lobe-chat + document: https://lobehub.com/docs diff --git a/apps/lobe-chat-data/logo.png b/apps/lobe-chat-data/logo.png new file mode 100644 index 0000000..531bae6 Binary files /dev/null and b/apps/lobe-chat-data/logo.png differ diff --git a/apps/md/2.0.3/data.yml b/apps/md/2.0.3/data.yml new file mode 100644 index 0000000..31e9d07 --- /dev/null +++ b/apps/md/2.0.3/data.yml @@ -0,0 +1,10 @@ +additionalProperties: + formFields: + - default: 8080 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Port + labelZh: 端口 + required: true + rule: paramPort + type: number \ No newline at end of file diff --git a/apps/md/2.0.3/docker-compose.yml b/apps/md/2.0.3/docker-compose.yml new file mode 100644 index 0000000..9127209 --- /dev/null +++ b/apps/md/2.0.3/docker-compose.yml @@ -0,0 +1,14 @@ +services: + md: + image: doocs/md:2.0.3 + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + ports: + - ${PANEL_APP_PORT_HTTP}:80 + labels: + createdBy: "Apps" +networks: + 1panel-network: + external: true diff --git a/apps/md/README.md b/apps/md/README.md new file mode 100644 index 0000000..c8d862c --- /dev/null +++ b/apps/md/README.md @@ -0,0 +1,47 @@ + +

微信 Markdown 编辑器

+ +## 项目介绍 + +Markdown 文档自动即时渲染为微信图文,让你不再为微信内容排版而发愁!只要你会基本的 Markdown 语法,就能做出一篇样式简洁而又美观大方的微信图文。 + +## 在线编辑器地址 + +- https://doocs.github.io/md +- [https://doocs-md.pages.dev](https://doocs-md.pages.dev/) + +注:推荐使用 Chrome 浏览器,效果最佳。 + +## 为何二次开发 + +现有的开源微信 Markdown 编辑器,样式繁杂,也不符合我个人的审美需求。在我使用它们进行内容排版的时候,经常还要自己做一些改动,费时费力,因此动手做了二次开发。 + +欢迎各位朋友随时提交 PR,让这款微信 Markdown 编辑器变得更好!如果你有新的想法,也欢迎在 [Discussions 讨论区](https://github.com/doocs/md/discussions)反馈。 + +注:我们项目最新版本基于 Vue3 开发,基于 Vue2 的旧版本已经不再维护,如果你需要 Vue2 版本,请切换到 [1.x](https://github.com/doocs/md/tree/1.x) 分支。 + +## 功能特性 + +- 支持 Markdown 所有基础语法、数学公式 +- 提供对 Mermaid 图表的渲染和 [GFM 警告块](https://github.com/orgs/community/discussions/16925)的支持 +- 丰富的代码块高亮主题,提升代码可读性 +- 允许自定义主题色和 CSS 样式,灵活定制展示效果 +- 提供多图上传功能,并可自定义配置图床 +- 便捷的文件导入、导出功能,提升工作效率 +- 内置本地内容管理功能,支持草稿自动保存 + +## 目前支持哪些图床 + +| # | 图床 | 使用时是否需要配置 | 备注 | +| ---- | ------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ | +| 1 | 默认 | 否 | - | +| 2 | [GitHub](https://github.com/) | 配置 `Repo`、`Token` 参数 | [如何获取 GitHub token?](https://docs.github.com/en/github/authenticating-to-github/creating-a-personal-access-token) | +| 3 | [阿里云](https://www.aliyun.com/product/oss) | 配置 `AccessKey ID`、`AccessKey Secret`、`Bucket`、`Region` 参数 | [如何使用阿里云 OSS?](https://help.aliyun.com/document_detail/31883.html) | +| 4 | [腾讯云](https://cloud.tencent.com/act/pro/cos) | 配置 `SecretId`、`SecretKey`、`Bucket`、`Region` 参数 | [如何使用腾讯云 COS?](https://cloud.tencent.com/document/product/436/38484) | +| 5 | [七牛云](https://www.qiniu.com/products/kodo) | 配置 `AccessKey`、`SecretKey`、`Bucket`、`Domain`、`Region` 参数 | [如何使用七牛云 Kodo?](https://developer.qiniu.com/kodo) | +| 6 | [MinIO](https://min.io/) | 配置 `Endpoint`、`Port`、`UseSSL`、`Bucket`、`AccessKey`、`SecretKey` 参数 | [如何使用 MinIO?](http://docs.minio.org.cn/docs/master/) | +| 7 | [公众号](https://mp.weixin.qq.com/) | 配置 `appID`、`appsecret`、`代理域名` 参数 | [如何获取公众号开发者 ID 密码?](https://developers.weixin.qq.com/doc/offiaccount/Getting_Started/Getting_Started_Guide.html) | +| 8 | [Cloudflare R2](https://developers.cloudflare.com/r2/) | 配置 `AccountId`、`AccessKey`、`SecretKey`、`Bucket`、`Domain` 参数 | [如何使用 S3 API 操作 R2](https://developers.cloudflare.com/r2/api/s3/api/) | +| 9 | 自定义上传 | 是 | [如何自定义上传?](https://github.com/doocs/md?tab=readme-ov-file#自定义上传逻辑) | + +[![demo1](https://camo.githubusercontent.com/450296fff3135f915a535118043f5fda4efca1d8310ce85ed6f1afc2d9c5c77e/68747470733a2f2f63646e2d646f6f63732e6f73732d636e2d7368656e7a68656e2e616c6979756e63732e636f6d2f67682f646f6f63732f6d642f696d616765732f64656d6f312e676966)](https://camo.githubusercontent.com/450296fff3135f915a535118043f5fda4efca1d8310ce85ed6f1afc2d9c5c77e/68747470733a2f2f63646e2d646f6f63732e6f73732d636e2d7368656e7a68656e2e616c6979756e63732e636f6d2f67682f646f6f63732f6d642f696d616765732f64656d6f312e676966) \ No newline at end of file diff --git a/apps/md/data.yml b/apps/md/data.yml new file mode 100644 index 0000000..6059bea --- /dev/null +++ b/apps/md/data.yml @@ -0,0 +1,19 @@ +name: md +tags: + - 实用工具 +title: 微信Markdown编辑器 +description: 一款高度简洁的微信Markdown编辑器 +additionalProperties: + key: md + name: md + tags: + - Tool + shortDescZh: 一款高度简洁的微信 Markdown 编辑器 + shortDescEn: WeChat Markdown Editor + type: tool + crossVersionUpdate: true + limit: 0 + recommend: 0 + website: https://doocs.github.io/md/ + github: https://github.com/doocs/md + document: https://github.com/doocs/md \ No newline at end of file diff --git a/apps/md/logo.png b/apps/md/logo.png new file mode 100644 index 0000000..ab273fe Binary files /dev/null and b/apps/md/logo.png differ diff --git a/apps/metaso-free-api/README.md b/apps/metaso-free-api/README.md new file mode 100644 index 0000000..95fae08 --- /dev/null +++ b/apps/metaso-free-api/README.md @@ -0,0 +1,33 @@ +### 工具介绍 + +🚀 秘塔AI搜索逆向API【特长:超强检索超长输出】,支持高速流式输出、超强联网搜索(全网or学术以及简洁、深入、研究三种模式),零配置部署,多路token支持,仅供测试,如需商用请前往官方开放平台。 + +### 风险说明 + +- 逆向API是不稳定的,建议前往秘塔AI官方 https://metaso.cn/ 使用,避免封禁的风险。 + +- 本组织和个人不接受任何资金捐助和交易,此项目是纯粹研究交流学习性质! + +- 仅限自用,禁止对外提供服务或商用,避免对官方造成服务压力,否则风险自担! + + +### 使用说明 + +从 [秘塔AI搜索](https://metaso.cn/) 获取uid和sid并使用-拼接: + +进入秘塔AI搜索,登录账号(建议登录账号,否则可能遭遇奇怪的限制),然后F12打开开发者工具,从Application > Cookies中找到uid和sid的值。 + +将`uid`和`sid`拼接:`uid-sid`,如 `65e91a6b2bac5b600dd8526a-5e7acc465b114236a8d9de26c9f41846` + +复制这个值填写到Lobechat或者CherryStudio等工具中,作为API密钥,API地址是你部署应用的IP加端口,例如:`https://192.168.1.105:8001/v1/chat/completions`,注意某些工具只需要填写`https://192.168.1.105:8001/`即可。 + +!获取Cookie](https://cdn.jsdelivr.net/gh/LLM-Red-Team/metaso-free-api@master/doc/example-0.png) + +### 多账号接入 + +目前同个账号同时只能有*一路*输出,你可以通过提供多个账号的userToken value并使用`,`拼接提供: + +``` +API密钥:TOKEN1,TOKEN2,TOKEN3 +``` +每次请求服务会从中挑选一个。 \ No newline at end of file diff --git a/apps/metaso-free-api/data.yml b/apps/metaso-free-api/data.yml new file mode 100644 index 0000000..de89935 --- /dev/null +++ b/apps/metaso-free-api/data.yml @@ -0,0 +1,24 @@ +name: Metaso-Free-API +tags: + - AI / 大模型 +title: 🚀 秘塔AI搜索逆向API【特长:超强检索超长输出】 +description: 支持高速流式输出、支持秘塔AI超强联网搜索(全网or学术以及简洁、深入、研究三种模式),零配置部署,多路token支持。 +additionalProperties: + key: metaso-free-api + name: Metaso-Free-API + tags: + - AI + - Tools + shortDescZh: 🚀 秘塔AI搜索逆向API【特长:超强检索超长输出】 + shortDescEn: A 1Panel deployment for metaso-free-api + type: website + crossVersionUpdate: true + limit: 0 + recommend: 0 + architectures: + - amd64 + - arm64 + + website: https://metaso.cn/ + github: https://github.com/LLM-Red-Team/metaso-free-api + document: https://github.com/LLM-Red-Team/metaso-free-api \ No newline at end of file diff --git a/apps/metaso-free-api/latest/data.yml b/apps/metaso-free-api/latest/data.yml new file mode 100644 index 0000000..926ff3d --- /dev/null +++ b/apps/metaso-free-api/latest/data.yml @@ -0,0 +1,10 @@ +additionalProperties: + formFields: + - default: "8009" + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Service Port + labelZh: 服务端口 + required: true + rule: paramPort + type: number diff --git a/apps/metaso-free-api/latest/docker-compose.yml b/apps/metaso-free-api/latest/docker-compose.yml new file mode 100644 index 0000000..cf45551 --- /dev/null +++ b/apps/metaso-free-api/latest/docker-compose.yml @@ -0,0 +1,16 @@ +services: + metaso-free-api: + image: vinlic/metaso-free-api:latest + container_name: ${CONTAINER_NAME} + ports: + - ${PANEL_APP_PORT_HTTP}:8000 + networks: + - 1panel-network + environment: + - TZ=Asia/Shanghai + labels: + createdBy: Apps + restart: always +networks: + 1panel-network: + external: true diff --git a/apps/metaso-free-api/logo.png b/apps/metaso-free-api/logo.png new file mode 100644 index 0000000..e649ec1 Binary files /dev/null and b/apps/metaso-free-api/logo.png differ diff --git a/apps/minimax-free-api/README.md b/apps/minimax-free-api/README.md new file mode 100644 index 0000000..6941a21 --- /dev/null +++ b/apps/minimax-free-api/README.md @@ -0,0 +1,27 @@ +### 工具介绍 + +🚀 MiniMax大模型海螺AI逆向API【特长:超自然语音】,支持MiniMax Text-01、MiniMax-VL-01模型,支持高速流式输出、语音合成、联网搜索、长文档解读、图像解析、多轮对话,零配置部署,多路token支持,自动清理会话痕迹,仅供测试,如需商用请前往官方开放平台。 + +### 风险说明 + +- 逆向API是不稳定的,建议前往MiniMax官方 https://www.minimaxi.com/platform 付费使用API,避免封禁的风险。 + +- 本组织和个人不接受任何资金捐助和交易,此项目是纯粹研究交流学习性质! + +- 仅限自用,禁止对外提供服务或商用,避免对官方造成服务压力,否则风险自担! + + +### 使用说明 + +从 海螺AI 获取token + +进入海螺AI随便发起一个对话,然后F12打开开发者工具,从Application > LocalStorage中找到_token的值,复制该值填写到Lobechat或者CherryStudio等工具中,作为API密钥,API地址是你部署应用的IP加端口,例如:`https://192.168.1.105:8001/v1/chat/completions`,注意某些工具只需要填写`https://192.168.1.105:8001/`即可。 + +### 多账号接入 + +目前同个账号同时只能有*一路*输出,你可以通过提供多个账号的userToken value并使用`,`拼接提供: + +``` +API密钥:TOKEN1,TOKEN2,TOKEN3 +``` +每次请求服务会从中挑选一个。 \ No newline at end of file diff --git a/apps/minimax-free-api/data.yml b/apps/minimax-free-api/data.yml new file mode 100644 index 0000000..08f5671 --- /dev/null +++ b/apps/minimax-free-api/data.yml @@ -0,0 +1,24 @@ +name: Minimax-Free-API +tags: + - AI / 大模型 +title: 🚀 MiniMax大模型海螺AI逆向API【特长:超自然语音】 +description: 支持最新MiniMax-Text-01、MiniMax-VL-01模型,支持高速流式输出、支持多轮对话、支持语音合成等 +additionalProperties: + key: minimax-free-api + name: Minimax-Free-API + tags: + - AI + - Tools + shortDescZh: 🚀 MiniMax大模型海螺AI逆向API【特长:超自然语音】 + shortDescEn: A 1Panel deployment for minimax-free-api + type: website + crossVersionUpdate: true + limit: 0 + recommend: 0 + architectures: + - amd64 + - arm64 + + website: https://platform.minimaxi.com/ + github: https://github.com/LLM-Red-Team/minimax-free-api + document: https://github.com/LLM-Red-Team/minimax-free-api \ No newline at end of file diff --git a/apps/minimax-free-api/latest/data.yml b/apps/minimax-free-api/latest/data.yml new file mode 100644 index 0000000..218c06b --- /dev/null +++ b/apps/minimax-free-api/latest/data.yml @@ -0,0 +1,10 @@ +additionalProperties: + formFields: + - default: "8007" + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Service Port + labelZh: 服务端口 + required: true + rule: paramPort + type: number diff --git a/apps/minimax-free-api/latest/docker-compose.yml b/apps/minimax-free-api/latest/docker-compose.yml new file mode 100644 index 0000000..c225a5b --- /dev/null +++ b/apps/minimax-free-api/latest/docker-compose.yml @@ -0,0 +1,16 @@ +services: + minimax-free-api: + image: vinlic/minimax-free-api:latest + container_name: ${CONTAINER_NAME} + ports: + - ${PANEL_APP_PORT_HTTP}:8000 + networks: + - 1panel-network + environment: + - TZ=Asia/Shanghai + labels: + createdBy: Apps + restart: always +networks: + 1panel-network: + external: true diff --git a/apps/minimax-free-api/logo.png b/apps/minimax-free-api/logo.png new file mode 100644 index 0000000..75cf6ba Binary files /dev/null and b/apps/minimax-free-api/logo.png differ diff --git a/apps/netbox/README.md b/apps/netbox/README.md new file mode 100644 index 0000000..c25c816 --- /dev/null +++ b/apps/netbox/README.md @@ -0,0 +1,27 @@ +# NetBox + +NetBox 是一款开源的数据中心和网络资源管理平台,支持Web界面和API。 + +## 功能特性 + +- 数据中心资产管理(机柜、设备、IP、线路等) +- 网络自动化与可视化 +- 支持Web界面管理(默认端口8000) +- 支持API集成与自动化脚本 +- 多用户权限管理 +- 轻量级、可扩展 + +## 使用方法 + +1. 部署后访问 `http://服务器IP:8000` 进入Web管理界面 +2. 默认用户名/密码请参考官方文档或首次初始化设置 +3. 配置数据中心、网络、IP等资源 +4. 配置文件目录:`./config` +5. 数据目录:`./data` + +## 相关链接 + +- [官方网站](https://netbox.dev/) +- [GitHub 项目](https://github.com/netbox-community/netbox) +- [官方文档](https://docs.netbox.dev/) +- [Docker Hub](https://hub.docker.com/r/linuxserver/netbox) \ No newline at end of file diff --git a/apps/netbox/README_en.md b/apps/netbox/README_en.md new file mode 100644 index 0000000..a09dfdc --- /dev/null +++ b/apps/netbox/README_en.md @@ -0,0 +1,27 @@ +# NetBox + +NetBox is an open-source data center and network automation platform with web interface and API. + +## Features + +- Data center asset management (racks, devices, IPs, circuits, etc.) +- Network automation and visualization +- Web UI management (default port 8000) +- API integration and automation scripting +- Multi-user permission management +- Lightweight and extensible + +## Usage + +1. After deployment, access `http://your-server-ip:8000` for the web UI +2. Default username/password: please refer to the official documentation or initial setup +3. Configure data center, network, IP and other resources +4. Config directory: `./config` +5. Data directory: `./data` + +## Links + +- [Official Website](https://netbox.dev/) +- [GitHub Project](https://github.com/netbox-community/netbox) +- [Official Documentation](https://docs.netbox.dev/) +- [Docker Hub](https://hub.docker.com/r/linuxserver/netbox) \ No newline at end of file diff --git a/apps/netbox/data.yml b/apps/netbox/data.yml new file mode 100644 index 0000000..085fd9c --- /dev/null +++ b/apps/netbox/data.yml @@ -0,0 +1,31 @@ +name: NetBox +tags: + - 实用工具 +title: 数据中心和网络自动化管理平台 +description: NetBox 是一款开源的数据中心和网络资源管理平台,支持Web界面和API +additionalProperties: + key: netbox + name: NetBox + tags: + - Tool + shortDescZh: 数据中心和网络自动化管理平台 + shortDescEn: Data center and network automation platform + description: + en: NetBox is an open-source data center and network automation platform with web interface and API + ja: NetBoxはWebインターフェースとAPIを備えたオープンソースのデータセンター・ネットワーク自動化プラットフォームです + ms: NetBox ialah platform automasi pusat data dan rangkaian sumber terbuka dengan antara muka web dan API + pt-br: NetBox é uma plataforma de automação de data center e rede de código aberto com interface web e API + ru: NetBox — это платформа автоматизации центров обработки данных и сетей с открытым исходным кодом, веб-интерфейсом и API + ko: NetBox는 웹 인터페이스와 API를 지원하는 오픈 소스 데이터 센터 및 네트워크 자동화 플랫폼입니다 + zh-Hant: NetBox 是一款開源的數據中心和網路自動化管理平台,支援 Web 管理和 API + zh: NetBox 是一款开源的数据中心和网络资源管理平台,支持Web界面和API + type: website + crossVersionUpdate: true + limit: 0 + recommend: 0 + website: https://netbox.dev/ + github: https://github.com/netbox-community/netbox + document: https://docs.netbox.dev/ + architectures: + - amd64 + - arm64 \ No newline at end of file diff --git a/apps/netbox/latest/data.yml b/apps/netbox/latest/data.yml new file mode 100644 index 0000000..dd50379 --- /dev/null +++ b/apps/netbox/latest/data.yml @@ -0,0 +1,19 @@ +additionalProperties: + formFields: + - default: 8000 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Web UI Port + labelZh: Web界面端口 + required: true + rule: paramPort + type: number + label: + en: Web UI Port + ja: Web UI ポート + ms: Port UI Web + pt-br: Porta da interface web + ru: Веб-порт интерфейса + ko: 웹 UI 포트 + zh-Hant: Web UI 埠 + zh: Web界面端口 \ No newline at end of file diff --git a/apps/netbox/latest/docker-compose.yml b/apps/netbox/latest/docker-compose.yml new file mode 100644 index 0000000..905a722 --- /dev/null +++ b/apps/netbox/latest/docker-compose.yml @@ -0,0 +1,21 @@ +services: + netbox: + container_name: ${CONTAINER_NAME} + image: lscr.io/linuxserver/netbox:latest + restart: always + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:8000" + environment: + - TZ=Asia/Shanghai + - PUID=1000 + - PGID=1000 + volumes: + - ./config:/config + - ./data:/data + labels: + createdBy: "Apps" +networks: + 1panel-network: + external: true \ No newline at end of file diff --git a/apps/netbox/logo.png b/apps/netbox/logo.png new file mode 100644 index 0000000..b458fd5 Binary files /dev/null and b/apps/netbox/logo.png differ diff --git a/apps/netdata/2.2.6/.env.sample b/apps/netdata/2.2.6/.env.sample new file mode 100644 index 0000000..3ba58ad --- /dev/null +++ b/apps/netdata/2.2.6/.env.sample @@ -0,0 +1,4 @@ +CONTAINER_NAME="netdata" +DOCKER_SOCK_PATH="/var/run/docker.sock" +HOSTNAME="netdata" +PANEL_APP_PORT_HTTP=19999 diff --git a/apps/netdata/2.2.6/data.yml b/apps/netdata/2.2.6/data.yml new file mode 100644 index 0000000..a52a391 --- /dev/null +++ b/apps/netdata/2.2.6/data.yml @@ -0,0 +1,24 @@ +additionalProperties: + formFields: + - default: "19999" + disabled: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Port + labelZh: 端口 + required: true + rule: paramPort + type: number + - default: "netdata" + edit: true + envKey: HOSTNAME + labelEn: Hostname + labelZh: 主机名 + required: true + type: text + - default: "/var/run/docker.sock" + edit: true + envKey: DOCKER_SOCK_PATH + labelEn: Docker Socket Path + labelZh: Docker 套接字路径 + required: true + type: text diff --git a/apps/netdata/2.2.6/docker-compose.yml b/apps/netdata/2.2.6/docker-compose.yml new file mode 100644 index 0000000..c68c1b6 --- /dev/null +++ b/apps/netdata/2.2.6/docker-compose.yml @@ -0,0 +1,27 @@ +services: + netdata: + image: "netdata/netdata:latest" + container_name: ${CONTAINER_NAME} + restart: always + network_mode: host + hostname: ${HOSTNAME} + cap_add: + - SYS_PTRACE + - SYS_ADMIN + security_opt: + - apparmor:unconfined + volumes: + - ./data/netdataconfig:/etc/netdata + - ./data/netdatalib:/var/lib/netdata + - ./data/netdatacache:/var/cache/netdata + - /:/host/root:ro,rslave + - /etc/passwd:/host/etc/passwd:ro + - /etc/group:/host/etc/group:ro + - /etc/localtime:/etc/localtime:ro + - /proc:/host/proc:ro + - /sys:/host/sys:ro + - /etc/os-release:/host/etc/os-release:ro + - /var/log:/host/var/log:ro + - ${DOCKER_SOCK_PATH}:/var/run/docker.sock:ro + labels: + createdBy: "Apps" diff --git a/apps/netdata/README.md b/apps/netdata/README.md new file mode 100644 index 0000000..377a242 --- /dev/null +++ b/apps/netdata/README.md @@ -0,0 +1,67 @@ +# Netdata + +**Netdata**是一款Linux性能实时监测工具。Netdata是一个高度优化的Linux守护进程,它为Linux系统,应用程序,SNMP服务等提供实时的性能监测。 + +它用可视化的手段,将被监测者最细微的细节,展现了出来。这样,你便可以清晰地了解你的系统和应用程序此时的状况。。 + +**✨ 主要特点**: + +1. 优美的界面:bootstrap框架下的控制界面 + +2. 自定义的控制界面:你可以使用简单的HTML代码去自定义控制界面(不需要使用javascript) + +3. 极其的快速而高效:程序使用C进行编写(默认安装下,预计只有2%的单核CPU使用率和少许的内存使用率) + +4. 零配置:你只需要去安装它,接着它就会自动地监测一切数据 + +5. 零依赖:它的静态网络文件和网络接口拥有自己的网络服务器 + +6. 可扩展:用它自身的插件API(可以使用许多方式来制作它的插件,从bash到node.js),你可以检测任何可以衡量的数据。 + +7. 可嵌入:它可以在任何Linux内核可以运行的地方运行 + +**🔍 监测内容**: + +这是它目前检测的内容(大多数都不需要进行配置,安装后即可开始监测) + +1. CPU的使用率,中断,软中断和频率(总量和每个单核) + +2. RAM,互换和内核内存的使用率(包括KSM和内核内存deduper) + +3. 硬盘输入/输出(每个硬盘的带宽,操作,整理,利用等) + +4. IPv4网络(数据包,错误,分片): + + - TCP:连接,数据包,错误,握手 + + - UDP:数据包,错误 + - 广播:带宽,数据包 + - 组播:带宽,数据包 + +5. Netfilter/iptables Linux防火墙(连接,连接跟踪事件,错误等) + +6. 进程(运行,受阻,分叉,活动等) + +7. 熵 + +8. NFS文件服务器,v2,v3,v4(输入/输出,缓存,预读,RPC调用) + +9. 网络服务质量(唯一一个可实时可视化网络状况的工具) + +10. 应用程序,通过对进程树进行分组(CPU,内存,硬盘读取,硬盘写入,交换,线程,管道,套接字等) + +11. Apache Web服务器状态(v2.2, v2.4) + +12. Nginx Web服务器状态 + +13. Mysql数据库(多台服务器,单个显示:带宽,查询/s, 处理者,锁,问题,临时操作,连接,二进制日志,线程,innodb引擎等) + +14. ISC Bind域名服务器(多个服务器,单个显示:客户,请求,查询,更新,失败等) + +15. Postfix邮件服务器的消息队列(条目,大小) + +16. Squid代理服务器(客户带宽和请求,服务带宽和请求) + +17. 硬件传感器(温度,电压,风扇,电源,湿度等) + +18. NUT UPSes(负载,充电,电池电压,温度,使用指标,输出指标) \ No newline at end of file diff --git a/apps/netdata/data.yml b/apps/netdata/data.yml new file mode 100644 index 0000000..defe63b --- /dev/null +++ b/apps/netdata/data.yml @@ -0,0 +1,19 @@ +name: Netdata +tags: + - 实用工具 +title: 一个实时监控工具 +description: 一个实时监控工具 +additionalProperties: + key: netdata + name: Netdata + tags: + - Tool + shortDescZh: 一个实时监控工具 + shortDescEn: Real-time monitoring tool + type: tool + crossVersionUpdate: true + limit: 0 + recommend: 0 + website: https://www.netdata.cloud + github: https://github.com/netdata/netdata + document: https://learn.netdata.cloud/docs/ diff --git a/apps/netdata/logo.png b/apps/netdata/logo.png new file mode 100644 index 0000000..9e87df3 Binary files /dev/null and b/apps/netdata/logo.png differ diff --git a/apps/next-terminal/2.4.10/.env.sample b/apps/next-terminal/2.4.10/.env.sample new file mode 100644 index 0000000..fb20450 --- /dev/null +++ b/apps/next-terminal/2.4.10/.env.sample @@ -0,0 +1,6 @@ +CONTAINER_NAME="next-terminal" +PANEL_APP_PORT_HTTP="40058" +PANEL_APP_PORT_SSH="40059" +DATA_PATH="./data" +SSHD_SWITCH="false" +SSH_KEY_PATH="./ssh/id_rsa" \ No newline at end of file diff --git a/apps/next-terminal/2.4.10/config.yaml b/apps/next-terminal/2.4.10/config.yaml new file mode 100755 index 0000000..29f487f --- /dev/null +++ b/apps/next-terminal/2.4.10/config.yaml @@ -0,0 +1,31 @@ +database: + enabled: true + type: postgres + postgres: + hostname: postgresql + port: 5432 + username: next-terminal + password: next-terminal + database: next-terminal +log: + level: debug + filename: ./logs/nt.log + +server: + addr: "0.0.0.0:8088" + tls: + enabled: false + auto: false + cert: "" + key: "" + +app: + recording: + type: "local" + path: "/usr/local/next-terminal/data/recordings" + guacd: + drive: "/usr/local/next-terminal/data/drive" + hosts: + - hostname: guacd + port: 4822 + weight: 1 \ No newline at end of file diff --git a/apps/next-terminal/2.4.10/data.yml b/apps/next-terminal/2.4.10/data.yml new file mode 100644 index 0000000..83e0fa6 --- /dev/null +++ b/apps/next-terminal/2.4.10/data.yml @@ -0,0 +1,41 @@ +additionalProperties: + formFields: + - default: 40058 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Port + labelZh: 端口 + required: true + rule: paramPort + type: number + - default: 40059 + edit: true + envKey: PANEL_APP_PORT_SSH + labelEn: SSH Server Port + labelZh: SSH Server 端口 (可选) + required: false + rule: paramPort + type: number + - default: 40060 + edit: true + envKey: PANEL_APP_PORT_PROXY_HTTP + labelEn: Proxy HTTP Port + labelZh: 资产反代 HTTP 端口 (可选) + required: false + rule: paramPort + type: number + - default: 40061 + edit: true + envKey: PANEL_APP_PORT_PROXY_HTTPS + labelEn: Proxy HTTPS Port + labelZh: 资产反代 HTTPS 端口 (申请证书必需) + required: false + rule: paramPort + type: number + - default: ./data + edit: true + envKey: DATA_PATH + labelEn: Data folder path + labelZh: 数据文件夹路径 + required: true + type: text diff --git a/apps/next-terminal/2.4.10/docker-compose.yml b/apps/next-terminal/2.4.10/docker-compose.yml new file mode 100644 index 0000000..d352e09 --- /dev/null +++ b/apps/next-terminal/2.4.10/docker-compose.yml @@ -0,0 +1,53 @@ +services: + next-terminal: + image: dushixiang/next-terminal:v2.4.10 + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:8088" + - "${PANEL_APP_PORT_SSH}:2022" + - "${PANEL_APP_PORT_PROXY_HTTP}:80" + - "${PANEL_APP_PORT_PROXY_HTTPS}:443" + volumes: + - "/etc/localtime:/etc/localtime" + - "${DATA_PATH}:/usr/local/next-terminal/data" + - ./logs:/usr/local/next-terminal/logs + - ./config.yaml:/etc/next-terminal/config.yaml + depends_on: + - postgresql + - guacd + + labels: + createdBy: "Apps" + postgresql: + container_name: postgresql-${CONTAINER_NAME} + image: registry.cn-beijing.aliyuncs.com/dushixiang/postgres:16.4 + networks: + - 1panel-network + environment: + POSTGRES_DB: next-terminal + POSTGRES_USER: next-terminal + POSTGRES_PASSWORD: next-terminal + volumes: + - ./data/postgresql:/var/lib/postgresql/data + restart: always + + guacd: + container_name: guacd-${CONTAINER_NAME} + image: dushixiang/guacd:1.5.5 + restart: always + networks: + - 1panel-network + volumes: + - "${DATA_PATH}:/usr/local/next-terminal/data" + + environment: + - GUACD_LOG_LEVEL=debug + labels: + createdBy: "Apps" + +networks: + 1panel-network: + external: true \ No newline at end of file diff --git a/apps/next-terminal/2.4.10/ssh/id_rsa b/apps/next-terminal/2.4.10/ssh/id_rsa new file mode 100644 index 0000000..fe75755 --- /dev/null +++ b/apps/next-terminal/2.4.10/ssh/id_rsa @@ -0,0 +1,49 @@ +-----BEGIN OPENSSH PRIVATE KEY----- +b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAACFwAAAAdzc2gtcn +NhAAAAAwEAAQAAAgEAqNqKouPlvUBbLv4BUSMxaZu4rFBMKLcl2MSetFAx/Ya/e5JFQ9rZ +RhMmZqx7gfj6/OQTXw9qN43k0XKy0Y9u3APtt9OZ9Y5StcmXljQhy8EQOF+MyZAEY3HpM7 +4xIV+v16z1mBrczZcFUbALVdijPAWhhMZxxhaN+EA8IfA0ByoE++w6XjvrYEOhW2qCMptL +TV6ZSUW7IOOoa/VzZBujUqgXrqiOshVy79mZi/mg5Sctp727JHr4PAw4yEqDHkLX4D97Rc +Qy8FMbmw40my6G+P22YywCdwVXlgZOq1dCuCRVAzl811nnTSLigyll3DBOilkp0RsDATUv +xCYc8UbwIrlUGDFKz8f54BN2kIgUX7OKVFOefhnpwpasZ8BjF+4A+3b5PkxQEg4SYiYWJc +RDIs9pCuSG2kX45PhbGMoWfbqU63pftM2fVtWiStMOZysvfkaLVUhJPQT3TZhiO84mkz6S +juQO2+b7Olb+rSe0naOzewvi72fFzbAOSEe4hj4Ewh38u1gYge5kOSg/SaHcYvVa2OU9Fz +iS5BCKKfcGtvkxl/HNDlNndCVw4DZHxmIkWDDa6uLI3qWn5A+AVP2D8zMTSmn/gkPxkYE5 +lkhWr4aM0/purV2JeupZzSDYa0zWL+6SuEWDL1qw9oglDm209go6jBbjEtaMDxt9YpkCcX +kAAAdQPAxkLDwMZCwAAAAHc3NoLXJzYQAAAgEAqNqKouPlvUBbLv4BUSMxaZu4rFBMKLcl +2MSetFAx/Ya/e5JFQ9rZRhMmZqx7gfj6/OQTXw9qN43k0XKy0Y9u3APtt9OZ9Y5StcmXlj +Qhy8EQOF+MyZAEY3HpM74xIV+v16z1mBrczZcFUbALVdijPAWhhMZxxhaN+EA8IfA0ByoE +++w6XjvrYEOhW2qCMptLTV6ZSUW7IOOoa/VzZBujUqgXrqiOshVy79mZi/mg5Sctp727JH +r4PAw4yEqDHkLX4D97RcQy8FMbmw40my6G+P22YywCdwVXlgZOq1dCuCRVAzl811nnTSLi +gyll3DBOilkp0RsDATUvxCYc8UbwIrlUGDFKz8f54BN2kIgUX7OKVFOefhnpwpasZ8BjF+ +4A+3b5PkxQEg4SYiYWJcRDIs9pCuSG2kX45PhbGMoWfbqU63pftM2fVtWiStMOZysvfkaL +VUhJPQT3TZhiO84mkz6SjuQO2+b7Olb+rSe0naOzewvi72fFzbAOSEe4hj4Ewh38u1gYge +5kOSg/SaHcYvVa2OU9FziS5BCKKfcGtvkxl/HNDlNndCVw4DZHxmIkWDDa6uLI3qWn5A+A +VP2D8zMTSmn/gkPxkYE5lkhWr4aM0/purV2JeupZzSDYa0zWL+6SuEWDL1qw9oglDm209g +o6jBbjEtaMDxt9YpkCcXkAAAADAQABAAACAE2riU34SrtNGSR6jpyF9brAeKg6n22zIWOe +venvYa9fBkGPPPFDf+It+OINwRo+LyWYvBhj/NXlHTYC7qJaugHWhMikOxOrDfy06FedT1 +ZsTkvAGAC3kG01/rFgcTUK0NYCp036PUsMhtPWiMBKUHvRk0SCC9+0jEV/Nqnd1fDdsUE4 +nniuU00KjvR//7fLm03Rj+0WeEdesSBH3XZVCEGDNLGQs2LTXvVZQLoUb6A471VTfvv+3K +SycoQfUkTfNnHegZPL9ip58B7Y3/Xp5wgtnHHt0oxxFqLZ7+H816HghIJhNT3SCwV+YHc4 +2bP5PIeDECsxo6YwkvJFHdcWbGqtUEDawJ+sUit0iBnByvbDRT5iMgcszekdv4FC7YhWxp +nSJCU2GOWIeFKjxcqYkIyYNjJ2+Agh7JQME7pYfeXeyqWlewLi61Xp3jzAU6exH8l/6m0w +luzKDaoyw4XR9apIGkRSbmgi7sMhCqpxgWUuOYZj4cqxOXJsaR9vgdwOpvrvMMTahIjQSc +Es2qzsqvoyqV0pAufOAgO77NgawhGpO6E8nOm2W5TFvfAQLXdjcb7drKTgeSLgfLPeVITH +0a6AYyGij6N1QkOEADH3AwapJwbV6WFb0n/n6CnAfcfZ9ZDRhHC8R14Mc+EhZ2KiwwvKdk +qrchmspx6dWEs/nLABAAABAB7tCOMMbB4KC4/e2GIQCbW1DiTQOWwpGFTjhRf8f41fU6Wg +yT5W7CN4olPUWOnCs+CtyKdCtQdhZzMxhE9Kj01S0hBCJeNQibIq8CKmzab7XvSnSRdzsT +qm7hyo7Yvo3EFeBxHTaOAQ99CcgevX+CYGibj6EXs35vqjRXZ9OEnBJ+bbMJGU5JCINeb8 +ZiC9T/TTXBgemPYcmKb+LzxgJWco8hI9W9t37OmrAagdeXo3P1KWym0rWknlxF9glOdgZe +WsxcaErNhOos6tD2Jq/WUjQdEDwoYscpm5QMwkNqWKdFa/WK60S4e/bZdK/JOV4Dbd0Ukz +pl77sLYP+TT+wMcAAAEBANIwTNTjtoRws0XMioRg1yPU9XA577ZFh0E0qVFyhOKlAaZQo/ +qElZkaqd3IAkxXtJ9T80r5mMZxJL/9PBQIWLCSkvUC91qMNyBw0W9lr5S10JAl5vG27WOt +cGFJzdWa3g9DwZuyr5bTh62zV9ET1v/vr33fGf60g8H9SMQcb2oPqqkoZHMEcgeqhrd843 +zBm7nuFkY74WaCH1n78vkazKSGKVbUxwdh9MgMRW6mYf/HkAM7nuMqcubyZ4oF3OmCEizd +NBoEjAJtQNI5dms0BPuZBoqu1av52F9IIX+PI4miI5E7i8DNImMJQozCLlG4QWBrjd6oAp +UXqBWs+gg7lQEAAAEBAM2n6Vz3tsP4Y2JP3rKHUcCA5JuuzHVuemGj18C6Xh6cdYUy7RSe +F042HBRl/3nuV4H4+lfr3Ur5yCERBdyOUeeuGfNlZhWXwwy+myYSUtT/dNGN5P8wFK/sxc +pmbqM9Sl/TlEudYwqMBZzlzquzys3UBtEmtsM8Bgdxwd+vn94a4nKkGr5X0SfE8evpZWuS +dQywRfA0aPxSwORoTmYzr6yEWQzywYUlC1Gd9hW6Fy8lYKGx9SZXnrvxsRQBQwAQbnvHGL +FbF138AwwkrKJPtedQZkAs4teFg8ggPuA3SpWFcjEJGKQYwkpMxjHmiP9AvS0t34PJOiYa +i9cQ/l2FBHkAAAAWeW91cl9lbWFpbEBleGFtcGxlLmNvbQECAwQF +-----END OPENSSH PRIVATE KEY----- diff --git a/apps/next-terminal/README.md b/apps/next-terminal/README.md new file mode 100644 index 0000000..040a9d3 --- /dev/null +++ b/apps/next-terminal/README.md @@ -0,0 +1,73 @@ +# Next Terminal + +[![Docker guacd build](https://github.com/dushixiang/next-terminal/actions/workflows/docker-guacd.yml/badge.svg)](https://github.com/dushixiang/next-terminal/actions/workflows/docker-guacd.yml) +[![Docker next-terminal build](https://github.com/dushixiang/next-terminal/actions/workflows/docker-next-terminal.yml/badge.svg)](https://github.com/dushixiang/next-terminal/actions/workflows/docker-next-terminal.yml) + +## 快速了解 + +Next Terminal是一个简单好用安全的开源交互审计系统,支持RDP、SSH、VNC、Telnet、Kubernetes协议。 + +目前支持的功能有: + +- 授权凭证管理 +- 资产管理(支持RDP、SSH、VNC、TELNET协议) +- 指令管理 +- 批量执行命令 +- 在线会话管理(监控、强制断开) +- 离线会话管理(查看录屏) +- 双因素认证 +- 资产标签 +- 资产授权 +- 多用户&用户分组 +- 计划任务 +- ssh server +- 登录策略 +- 系统监控 + +## 在线体验 + +**web** + +https://next.typesafe.cn/ 账号:test 密码:test + +**ssh server** + +主机:next.typesafe.cn +端口:2022 +账号:test 密码:test + +## 协议与条款 + +如您需要在企业网络中使用 next-terminal,建议先征求 IT 管理员的同意。下载、使用或分发 next-terminal 前,您必须同意 [协议](./LICENSE) 条款与限制。本项目不提供任何担保,亦不承担任何责任。 + +## 快速安装 + +- [安装文档](https://next-terminal.typesafe.cn) + +默认账号密码为 admin/admin 。 + +## 手动编译 + +1. 找一台Linux 机器或者Mac +2. 安装 go 1.18 或以上版本 +3. 安装 nodejs 16,安装 npm 或 yarn +4. 进入 web 目录 执行 yarn 或 npm install +5. 返回上级目录,也就是项目根目录,执行 sh build.sh + +## 问题反馈 + +- Issues +- 微信群 加我微信拉你进群 (请备注 next-terminal) + + + +- QQ群 938145268 +- Telegram https://t.me/next_terminal + +## 安全问题 + +如果您在使用过程中发现了安全问题,请发送邮件至 helloworld1024@foxmail.com 联系我,谢谢。 + +## License + +Next Terminal 使用 [AGPL-3.0](./LICENSE) 开源协议,请自觉遵守。 \ No newline at end of file diff --git a/apps/next-terminal/data.yml b/apps/next-terminal/data.yml new file mode 100644 index 0000000..e293731 --- /dev/null +++ b/apps/next-terminal/data.yml @@ -0,0 +1,19 @@ +name: Next-Terminal +tags: + - 工具 +title: 一个简单好用安全的开源交互审计系统,支持RDP、SSH、VNC、Telnet、Kubernetes协议 +description: 一个简单好用安全的开源交互审计系统,支持RDP、SSH、VNC、Telnet、Kubernetes协议 +additionalProperties: + key: next-terminal + name: Next Terminal + tags: + - Tool + shortDescZh: 一个简单好用安全的开源交互审计系统,支持RDP、SSH、VNC、Telnet、Kubernetes协议 + shortDescEn: A simple, easy-to-use and secure open source interactive audit system that supports RDP, SSH, VNC, Telnet, and Kubernetes protocols + type: tool + crossVersionUpdate: true + limit: 0 + recommend: 0 + website: https://next-terminal.typesafe.cn/ + github: https://github.com/dushixiang/next-terminal + document: https://next-terminal.typesafe.cn/docs/ diff --git a/apps/next-terminal/logo.png b/apps/next-terminal/logo.png new file mode 100644 index 0000000..3a67631 Binary files /dev/null and b/apps/next-terminal/logo.png differ diff --git a/apps/nezha/1.12.4/data.yml b/apps/nezha/1.12.4/data.yml new file mode 100644 index 0000000..fb2fa44 --- /dev/null +++ b/apps/nezha/1.12.4/data.yml @@ -0,0 +1,10 @@ +additionalProperties: + formFields: + - default: "8008" + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: HTTP Port + labelZh: HTTP 端口 + required: true + rule: paramPort + type: number diff --git a/apps/nezha/1.12.4/data/config.yaml b/apps/nezha/1.12.4/data/config.yaml new file mode 100644 index 0000000..75ebec6 --- /dev/null +++ b/apps/nezha/1.12.4/data/config.yaml @@ -0,0 +1,14 @@ +admin_template: admin-dist +agent_secret_key: yUp7b6G6Q5ub0J1h45KSjj8qlWuRPTcD +avg_ping_count: 2 +cover: 1 +https: {} +install_host: 192.168.123.45 +ip_change_notification_group_id: 0 +jwt_secret_key: rxLGg4gNLJEhRKA0oBOKBoGCaoqkdNW2R8OhLXu2XOZqKsWZy0iF5u4WXBl9zfeeFk3VaSVzYiL1rem8FD6lA8aMttCOmE7m6D5SogIiW58VF5h6rdvTIhQpoy4qel2XED3mcAU7uvZIWIdCDYfKPmSD7VwCR2T1D2HoVCerfG3uk7KqpIekcausnq7abpGrVSBTVHEs9OLnXnkBwKbmMllSJhbd3W43Ckn6IJHrZDBhKi0nFxQHlX6I9V1eZy3Iau8bDkCUmP9eBLW40oniZIkXzwUSRTERxVC5fdBglbWYUdGxY97xGMoVv0PlEtxP1tsL9Qy783c292IjErBYc9KP5w3NXYz4oc4JL5Q9AKEIzP6VEbcb42ueUsJw457486jiBplPILVCwqF3hdUI9K4Hx4s0g0BUT24zTCEt3BXmDH7FoueVYxnqWnUujgYbtWOxUEJ2MM6gmAGec38sJzLWPxCpzvNjOuSoth4WRI9CRTzta0242JwO2k7zbcPSk6aYMz79fA7LzScnVbLQqLevc6XQlvpfVbkCCUP4sz3VvJt992QFVnoJ0dCVfumVPFsIdPj29YfJxqgvVJK6YMIVZYbhtst4Xg5l7MNYjImMtddoaVsmzAmNwSD5qenmMtnunKSOWDJCshhoCy8kbbaTpSccLGOeUXtxDtKFaUr11moJcdqi2Wqe1wgP3LzrHJocjnP5IMaamG30WJZWqyDwIqJqs56PtNEVnRiyF2rFiwvJpmtMZKFkXzdPzoNt2QIEdsGX0utcslrM84E6RQtAPlobaRAM0mxYFft7UC3XGzht5ziTqs9DasM13Tf7jYOn2hveEZE2yyqLNn9CddcOjgUFobqtwaoBmldRXUoxmZkRMSKFqdTbG52exCSCHcf0RGR2Z0SGSRM2tFUqBDD3nUQv5zkg5cAUqncKZFgY1nbp4NcKuMW5XgfGCTyfDk0bOLy91Ak4m6X9nNJHbPlBT1SFdibjDo9Kkhrqu3UF9b2HeoJYTluTDv6Yl03j +jwt_timeout: 1 +language: zh_CN +listen_port: 8008 +location: Asia/Shanghai +site_name: 1Panel-Nezha +user_template: user-dist diff --git a/apps/nezha/1.12.4/data/sqlite.db b/apps/nezha/1.12.4/data/sqlite.db new file mode 100644 index 0000000..83a3f20 Binary files /dev/null and b/apps/nezha/1.12.4/data/sqlite.db differ diff --git a/apps/nezha/1.12.4/docker-compose.yml b/apps/nezha/1.12.4/docker-compose.yml new file mode 100644 index 0000000..4d2b043 --- /dev/null +++ b/apps/nezha/1.12.4/docker-compose.yml @@ -0,0 +1,9 @@ +services: + dashboard: + image: ghcr.io/nezhahq/nezha:v1.12.4 + container_name: nezha-dashboard + restart: always + volumes: + - ./data:/dashboard/data + ports: + - 8008:8008 diff --git a/apps/nezha/README.md b/apps/nezha/README.md new file mode 100644 index 0000000..a2ff4fb --- /dev/null +++ b/apps/nezha/README.md @@ -0,0 +1,22 @@ +# 哪吒监控 V1 + +> **提示** +> 默认端口号为8008,后台账号密码为:admin,请在后台及时修改 +> 部署完成后需要在后台>系统设置>Agent对接地址中修改服务器上线地址和端口号,否则无法正常上线 + + +哪吒监控是一款开源的服务器监控与运维工具,支持实时监控、故障告警、WebSSH、DDNS、流量监控等功能。 + +![哪吒面板v1](https://github.com/hamster1963/nezha-dash/raw/main/.github/v2-dark.webp) + +## 一键安装 + +支持一键安装面板和监控服务,操作便捷。兼容主流系统,包括 Linux、Windows、macOS、OpenWRT 以及群晖。 + +## 实时监控 + +支持同时监控多个服务器的状态,提供历史网络状态和延迟图表,监控网页、端口可用性和 SSL 证书状态。支持故障和流量等状态告警,可通过 Telegram、邮件、微信等多种方式提醒。 + +## 轻松运维 + +提供 API 获取服务器状态,支持WebSSH、DDNS 和流量监控。可设置定时和触发任务,并批量执行服务器任务。 diff --git a/apps/nezha/data.yml b/apps/nezha/data.yml new file mode 100644 index 0000000..0ac58cd --- /dev/null +++ b/apps/nezha/data.yml @@ -0,0 +1,19 @@ +name: Nezha +tags: + - 实用工具 +title: 开源、轻量、易用的服务器监控、运维工具 +description: Open source, lightweight, easy-to-use server monitoring and operation and maintenance tools +additionalProperties: + key: nezha + name: 哪吒监控-v1 + tags: + - Tool + shortDescZh: 开源、轻量、易用的服务器监控、运维工具 + shortDescEn: Open source, lightweight, easy-to-use server monitoring and operation and maintenance tools + type: tool + crossVersionUpdate: true + limit: 0 + recommend: 0 + website: https://nezha.wiki/ + github: https://github.com/naiba/nezha/ + document: https://nezha.wiki/guide/dashboard.html diff --git a/apps/nezha/logo.png b/apps/nezha/logo.png new file mode 100644 index 0000000..2f5199a Binary files /dev/null and b/apps/nezha/logo.png differ diff --git a/apps/npc/0.29.21/.env.sample b/apps/npc/0.29.21/.env.sample new file mode 100644 index 0000000..0db8410 --- /dev/null +++ b/apps/npc/0.29.21/.env.sample @@ -0,0 +1,4 @@ +CONTAINER_NAME="npc" +NPS_SERVER_ADDR="1.2.3.4:8025" +NPS_VKEY="xly7traGe3r0t6UWltristuh1" +TLS_ENABLE_SWITCH="true" diff --git a/apps/npc/0.29.21/data.yml b/apps/npc/0.29.21/data.yml new file mode 100644 index 0000000..00efcf1 --- /dev/null +++ b/apps/npc/0.29.21/data.yml @@ -0,0 +1,22 @@ +additionalProperties: + formFields: + - default: 1.2.3.4:8025 + edit: true + envKey: NPS_SERVER_ADDR + labelEn: NPS server address + labelZh: NPS 服务端地址 + required: true + type: text + - default: "xly7traGe3r0t6UWltristuh1" + edit: true + envKey: NPS_VKEY + labelEn: Client connection key displayed by the server + labelZh: 服务端显示的客户端连接密钥 + required: true + rule: paramCommon + type: text + values: + - label: "True" + value: "true" + - label: "False" + value: "false" diff --git a/apps/npc/0.29.21/docker-compose.yml b/apps/npc/0.29.21/docker-compose.yml new file mode 100644 index 0000000..82f7eb6 --- /dev/null +++ b/apps/npc/0.29.21/docker-compose.yml @@ -0,0 +1,9 @@ +services: + npc: + image: duan2001/npc:v0.29.21 + restart: always + network_mode: "host" + command: -server=${NPS_SERVER_ADDR} -vkey=${NPS_VKEY} + container_name: ${CONTAINER_NAME} + labels: + createdBy: "Apps" diff --git a/apps/npc/README.md b/apps/npc/README.md new file mode 100644 index 0000000..30b842a --- /dev/null +++ b/apps/npc/README.md @@ -0,0 +1,33 @@ + +# nps +nps是一款轻量级、高性能、功能强大的**内网穿透**代理服务器。目前支持**tcp、udp流量转发**,可支持任何**tcp、udp**上层协议(访问内网网站、本地支付接口调试、ssh访问、远程桌面,内网dns解析等等……),此外还**支持内网http代理、内网socks5代理**、**p2p等**,并带有功能强大的web管理端。 + +## 说明 + +由于[nps](https://github.com/ehang-io/nps)已经有二年多的时间没有更新了,存留了不少bug和未完善的功能。 + +此版本基于 nps 0.26 的基础上二次开发而来。 + + +## 背景 +![image](https://github.com/ehang-io/nps/blob/master/image/web.png?raw=true) + +1. 做微信公众号开发、小程序开发等----> 域名代理模式 + +2. 想在外网通过ssh连接内网的机器,做云服务器到内网服务器端口的映射,----> tcp代理模式 + +3. 在非内网环境下使用内网dns,或者需要通过udp访问内网机器等----> udp代理模式 + +4. 在外网使用HTTP代理访问内网站点----> http代理模式 + +5. 搭建一个内网穿透ss,在外网如同使用内网vpn一样访问内网资源或者设备----> socks5代理模式 +## 特点 +- 协议支持全面,兼容几乎所有常用协议,例如tcp、udp、http(s)、socks5、p2p、http代理... +- 全平台兼容(linux、windows、macos、群辉等),支持一键安装为系统服务 +- 控制全面,同时支持服务端和客户端控制 +- https集成,支持将后端代理和web服务转成https,同时支持多证书 +- 操作简单,只需简单的配置即可在web ui上完成其余操作 +- 展示信息全面,流量、系统信息、即时带宽、客户端版本等 +- 扩展功能强大,该有的都有了(缓存、压缩、加密、流量限制、带宽限制、端口复用等等) +- 域名解析具备自定义header、404页面配置、host修改、站点保护、URL路由、泛解析等功能 +- 服务端支持多用户和用户注册功能 diff --git a/apps/npc/data.yml b/apps/npc/data.yml new file mode 100644 index 0000000..61b504a --- /dev/null +++ b/apps/npc/data.yml @@ -0,0 +1,22 @@ +name: NPC +tags: + - 工具 +title: 内网穿透代理服务器 NPS 的客户端 +description: 内网穿透代理服务器 NPS 的客户端,基于 nps 0.26 的基础上由djylb二次开发 +additionalProperties: + key: npc + name: NPC + tags: + - Tool + shortDescZh: 内网穿透代理服务器 NPS 的客户端 + shortDescEn: Intranet Penetrating Proxy Server NPS Client + description: + zh: 内网穿透代理服务器 NPS 的客户端 + en: Intranet Penetrating Proxy Server NPS Client + type: tool + crossVersionUpdate: true + limit: 1 + recommend: 0 + website: https://ehang-io.github.io/nps + github: https://github.com/djylb/nps + document: https://ehang-io.github.io/nps diff --git a/apps/npc/logo.png b/apps/npc/logo.png new file mode 100644 index 0000000..39ec733 Binary files /dev/null and b/apps/npc/logo.png differ diff --git a/apps/nps/0.29.21/.env.sample b/apps/nps/0.29.21/.env.sample new file mode 100644 index 0000000..db55485 --- /dev/null +++ b/apps/nps/0.29.21/.env.sample @@ -0,0 +1,16 @@ +CONTAINER_NAME="nps" +PANEL_APP_PORT_HTTP="40209" +NPS_AUTH_CRYPT_KEY="gl8r0tujikih7br5" +NPS_BRIDGE_PORT="8024" +NPS_BRIDGE_TLS_PORT="8025" +NPS_HTTPS_PROXY_PORT="50443" +NPS_HTTP_PROXY_IP="0.0.0.0" +NPS_HTTP_PROXY_PORT="50080" +NPS_PUBLIC_VKEY="xly7traGe3r0t6UWltristuh1" +NPS_RANDOM_PORT_END="20200" +NPS_RANDOM_PORT_START="20100" +NPS_WEB_HOST="http://localhost:40209" +NPS_WEB_OPEN_SSL="false" +NPS_WEB_PASSWORD="123_T8acCj" +NPS_WEB_USERNAME="admin_afmTRb" +TLS_ENABLE_SWITCH="true" diff --git a/apps/nps/0.29.21/conf/nps.conf b/apps/nps/0.29.21/conf/nps.conf new file mode 100644 index 0000000..48a6e53 --- /dev/null +++ b/apps/nps/0.29.21/conf/nps.conf @@ -0,0 +1,179 @@ +############################################# +# 基本设置 +############################################# +appname=nps +# Boot mode (dev|pro) +runmode=pro +# Secure mode 开启后提高安全性,不再兼容旧版客户端连接 +secure_mode=true +# DNS 服务器配置 +dns_server=8.8.8.8 + +############################################# +# 域名转发设置 +############################################# +# HTTP/HTTPS 代理设置:端口为 0 时不启动代理服务 +http_proxy_ip=${NPS_HTTP_PROXY_IP} +http_proxy_port=${NPS_HTTP_PROXY_PORT} +https_proxy_port=${NPS_HTTPS_PROXY_PORT} + +# HTTPS 默认证书配置 +https_default_cert_file=conf/server.pem +https_default_key_file=conf/server.key +# 自动申请证书保存目录 +ssl_path=conf/ssl +# 自动申请证书使用的邮箱 +ssl_email=you@yours.com +# 自动申请证书使用的CA(LetsEncrypt|ZeroSSL|GoogleTrust) +ssl_ca=LetsEncrypt +# ZeroSSL 需要提供 API Key +#ssl_zerossl_api=xxx +# 证书缓存最大个数(0 不限制) +ssl_cache_max=0 +# 证书缓存重载间隔(单位:s) +ssl_cache_reload=3600 +# 证书缓存闲置清理(单位:m) +ssl_cache_idle=60 + +# 获取客户端真实 IP +http_add_origin_header=true +# 当使用 Nginx 等反向代理 http_proxy_port 时,通过向 HEAD 中插入 X-NPS-Http-Only 和密码来避免 301 重定向(留空关闭该功能) +#x_nps_http_only=password +x_nps_http_only= + +# HTTP 缓存配置 (已弃用) +http_cache=false +http_cache_length=100 + +############################################# +# 客户端连接配置 +############################################# +# Bridge 配置 (tcp|kcp|both) +bridge_type=tcp +bridge_ip=0.0.0.0 +# Bridge 监听端口 (配置0关闭) +bridge_port=${NPS_BRIDGE_PORT} +# 仅在 bridge_type 为 (tcp|both) 时可用 +bridge_tls_port=${NPS_BRIDGE_TLS_PORT} +bridge_ws_port=${NPS_BRIDGE_WS_PORT} +bridge_wss_port=${NPS_BRIDGE_WSS_PORT} +# WS 的连接路径 +bridge_path=/ws +# 端口复用需要配置 +bridge_host=xxx.com +# 如果没有证书建议留空自动随机生成 +#bridge_cert_file= +#bridge_key_file= +# 在网页命令行显示的连接地址 (留空使用网页地址) +bridge_addr= + +# 公共密钥 +public_vkey=${NPS_PUBLIC_VKEY} + +# P2P 配置 +# 配置'0.0.0.0'自动识别,配置'::'自动识别IPv6,若存在问题请手动指定地址 +p2p_ip=0.0.0.0 +p2p_port=6000 + +# 客户端断开连接超时时间(60*30秒) +disconnect_timeout=60 + +############################################# +# 允许端口范围配置(可选) +############################################# +# 设置允许的端口范围(格式:范围或单个端口,用逗号分隔),如不配置则不限制端口 +# 若需要限制端口,请取消下面注释并根据需要修改配置值: +#allow_ports=9001-9009,10001,11000-12000 + +############################################# +# Web 管理配置 +############################################# +# 管理后台登录用户名和密码 +web_username=${NPS_WEB_USERNAME} +web_password=${NPS_WEB_PASSWORD} +# 2FA 双因素认证密钥 +# 填写后密码登录失效,使用动态验证码登录 +# 可使用"nps -gen2fa"命令来生成TOTP密钥,可使用"-gen2fa=secret"获取当前动态密码 +totp_secret= +# 开启管理面板验证码校验 +open_captcha=true + +# 是否允许使用 X-Real-IP 头部 +allow_x_real_ip=false +# 受信任的代理服务器 IP 地址(多个用逗号分隔) +trusted_proxy_ips=127.0.0.1 + +# Web 管理监听设置 +web_host=${NPS_WEB_HOST} +web_ip=0.0.0.0 +web_port=${NPS_WEB_PORT} +# 是否启用 HTTPS +web_open_ssl=${NPS_WEB_OPEN_SSL} +# HTTPS 证书配置 +web_cert_file=${NPS_DEFAULT_CERT_FILE} +web_key_file=${NPS_DEFAULT_KEY_FILE} +# 请求路径(例如 /nps http://host/nps) +#web_base_url=/nps + +# Web管理多用户设置 +allow_user_login=false +allow_user_register=false +allow_user_change_username=false + +############################################# +# Web API 与安全设置 +############################################# +# 用于 API 访问的认证密钥,建议设置长且复杂以防暴力破解 +auth_key= +# 获取服务端 authKey 时使用的 AES 加密密钥(16 位),建议随机生成 +auth_crypt_key=${NPS_AUTH_CRYPT_KEY} + +############################################# +# 扩展功能配置 +############################################# +# 流量数据持久化间隔(单位:分钟),留空表示不持久化 +# 使用限制功能需要开启此选项 +flow_store_interval=1 +# 流量限制 +allow_flow_limit=true +# 带宽限制 +allow_rate_limit=true +# 时间限制 +allow_time_limit=true +# 客户端最大隧道数限制 +allow_tunnel_num_limit=true +# 允许 NPS 本地代理连接 +allow_local_proxy=false +# 客户端最大连接数限制 +allow_connection_num_limit=true +# 允许配置隧道监听IP +allow_multi_ip=true +# 系统负载监控显示 +system_info_display=true +# IP 访问限制(详见文档说明) +#ip_limit=true + +############################################# +# 日志配置 +############################################# +# 日志模式:stdout|file|both|off +log=stdout +# 日志级别:trace|debug|info|warn|error|fatal|panic|off +log_level=trace +# 日志输出路径 +log_path=conf/nps.log +# 是否启用日志压缩 (true|false) +log_compress=false +# 允许保存的日志文件总数 +log_max_files=10 +# 允许保存日志的最大天数 +log_max_days=7 +# 单个日志文件的最大大小(MB),超过此大小将自动轮换 +log_max_size=2 + +############################################# +# 调试功能配置 +############################################# +# pprof 调试选项(取消注释启用) +#pprof_ip=0.0.0.0 +#pprof_port=9999 diff --git a/apps/nps/0.29.21/data.yml b/apps/nps/0.29.21/data.yml new file mode 100644 index 0000000..fc16500 --- /dev/null +++ b/apps/nps/0.29.21/data.yml @@ -0,0 +1,132 @@ +additionalProperties: + formFields: + - default: 40209 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Web Management Port + labelZh: web 管理端口 + required: true + rule: paramPort + type: number + - default: 8024 + edit: true + envKey: NPS_BRIDGE_PORT + labelEn: Server-Client Communication Port + labelZh: 服务端客户端通信端口 + required: true + rule: paramPort + type: number + - default: 8025 + edit: true + envKey: NPS_BRIDGE_TLS_PORT + labelEn: Server-Client Communication TLS Port + labelZh: 服务端客户端 tls 通信端口 + required: true + rule: paramPort + type: number + - default: 8026 + edit: true + envKey: NPS_BRIDGE_WS_PORT + labelEn: Server-Client Communication WS Port + labelZh: 服务端客户端 WS 通信端口 + required: true + rule: paramPort + type: number + - default: 8027 + edit: true + envKey: NPS_BRIDGE_WSS_PORT + labelEn: Server-Client Communication WSS Port + labelZh: 服务端客户端 WSS 通信端口 + required: true + rule: paramPort + type: number + - default: http://localhost:40209 + edit: true + envKey: NPS_WEB_HOST + labelEn: External URL(If the default address, please replace localhost with the current service IP) + labelZh: 外部访问地址(若默认地址请替换 localhost 为当前服务 IP) + required: true + rule: paramExtUrl + type: text + - default: admin + edit: true + envKey: NPS_WEB_USERNAME + labelEn: Web Interface Management Account + labelZh: web 界面管理账号 + random: true + required: true + rule: paramCommon + type: text + - default: "123" + edit: true + envKey: NPS_WEB_PASSWORD + labelEn: Web Interface Management Password + labelZh: web 界面管理密码 + random: true + required: true + rule: paramComplexity + type: password + - default: "false" + edit: true + envKey: NPS_WEB_OPEN_SSL + labelEn: Enable webui https access + labelZh: web 界面开启 https 访问 + required: true + rule: paramCommon + type: text + - default: 20100 + edit: true + envKey: NPS_RANDOM_PORT_START + labelEn: Dynamic Port Range Start + labelZh: 动态端口范围开始 + required: true + rule: paramPort + type: number + - default: 20200 + edit: true + envKey: NPS_RANDOM_PORT_END + labelEn: Dynamic Port Range End + labelZh: 动态端口范围结束 + required: true + rule: paramPort + type: number + - default: "xly7traGe3r0t6UWltristuh1" + edit: true + envKey: NPS_PUBLIC_VKEY + labelEn: Key When the Client Starts in Configuration File Mode + labelZh: 客户端以配置文件模式启动时的密钥 + required: false + rule: paramCommon + type: text + - default: "gl8r0tujikih7br5" + edit: true + envKey: NPS_AUTH_CRYPT_KEY + labelEn: 16-bit AES Encryption Key + labelZh: 16 位 AES 加密密钥 + required: false + rule: paramCommon + type: text + - default: 0.0.0.0 + edit: true + envKey: NPS_HTTP_PROXY_IP + labelEn: Http Proxy IP + labelZh: 域名代理 http 代理监听地址 + required: false + rule: paramCommon + type: text + - default: 50080 + edit: true + envKey: NPS_HTTP_PROXY_PORT + labelEn: Http Proxy Port + labelZh: 域名代理 http 代理监听端口 + required: false + rule: paramPort + type: number + - default: 50443 + edit: true + envKey: NPS_HTTPS_PROXY_PORT + labelEn: Https Proxy Port + labelZh: 域名代理 https 代理监听端口 + required: false + rule: paramPort + type: number diff --git a/apps/nps/0.29.21/docker-compose.yml b/apps/nps/0.29.21/docker-compose.yml new file mode 100644 index 0000000..67b22f9 --- /dev/null +++ b/apps/nps/0.29.21/docker-compose.yml @@ -0,0 +1,37 @@ +services: + nps: + image: duan2001/nps:v0.29.21 + container_name: ${CONTAINER_NAME} + ports: + - ${PANEL_APP_PORT_HTTP}:${PANEL_APP_PORT_HTTP} + - ${NPS_BRIDGE_PORT}:${NPS_BRIDGE_PORT} + - ${NPS_BRIDGE_TLS_PORT}:${NPS_BRIDGE_TLS_PORT} + - ${NPS_BRIDGE_WS_PORT}:${NPS_BRIDGE_WS_PORT} + - ${NPS_BRIDGE_WSS_PORT}:${NPS_BRIDGE_WSS_PORT} + - ${NPS_HTTP_PROXY_PORT}:${NPS_HTTP_PROXY_PORT} + - ${NPS_HTTPS_PROXY_PORT}:${NPS_HTTPS_PROXY_PORT} + - ${NPS_RANDOM_PORT_START}-${NPS_RANDOM_PORT_END}:${NPS_RANDOM_PORT_START}-${NPS_RANDOM_PORT_END} + restart: always + volumes: + - ./conf:/conf + - ./web:/web + - /etc/localtime:/etc/localtime:ro + environment: + NPS_WEB_HOST: ${NPS_WEB_HOST} + NPS_WEB_PORT: ${PANEL_APP_PORT_HTTP} + NPS_WEB_USERNAME: ${NPS_WEB_USERNAME} + NPS_WEB_PASSWORD: ${NPS_WEB_PASSWORD} + NPS_WEB_OPEN_SSL: ${NPS_WEB_OPEN_SSL} + NPS_PUBLIC_VKEY: ${NPS_PUBLIC_VKEY} + NPS_BRIDGE_PORT: ${NPS_BRIDGE_PORT} + NPS_AUTH_CRYPT_KEY: ${NPS_AUTH_CRYPT_KEY} + NPS_HTTP_PROXY_IP: ${NPS_HTTP_PROXY_IP} + NPS_HTTP_PROXY_PORT: ${NPS_HTTP_PROXY_PORT} + NPS_HTTPS_PROXY_PORT: ${NPS_HTTPS_PROXY_PORT} + network_mode: 1panel-network + labels: + createdBy: "Apps" + +networks: + 1panel-network: + external: true \ No newline at end of file diff --git a/apps/nps/0.29.21/web/static/css/bootstrap-select.min.css b/apps/nps/0.29.21/web/static/css/bootstrap-select.min.css new file mode 100755 index 0000000..9c50c7b --- /dev/null +++ b/apps/nps/0.29.21/web/static/css/bootstrap-select.min.css @@ -0,0 +1,6 @@ +/*! + * Bootstrap-select v1.14.0-beta3 (https://developer.snapappointments.com/bootstrap-select) + * + * Copyright 2012-2022 SnapAppointments, LLC + * Licensed under MIT (https://github.com/snapappointments/bootstrap-select/blob/master/LICENSE) + */@-webkit-keyframes bs-notify-fadeOut{0%{opacity:.9}100%{opacity:0}}@-o-keyframes bs-notify-fadeOut{0%{opacity:.9}100%{opacity:0}}@keyframes bs-notify-fadeOut{0%{opacity:.9}100%{opacity:0}}.bootstrap-select>select.bs-select-hidden,select.bs-select-hidden,select.selectpicker{display:none!important}.bootstrap-select{width:220px;vertical-align:middle}.bootstrap-select>.dropdown-toggle{position:relative;width:100%;text-align:right;white-space:nowrap;display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between}.bootstrap-select>.dropdown-toggle:after{margin-top:-1px}.bootstrap-select>.dropdown-toggle.bs-placeholder,.bootstrap-select>.dropdown-toggle.bs-placeholder:active,.bootstrap-select>.dropdown-toggle.bs-placeholder:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder:hover{color:#999}.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-danger,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-danger:active,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-danger:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-danger:hover,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-dark,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-dark:active,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-dark:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-dark:hover,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-info,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-info:active,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-info:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-info:hover,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-primary,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-primary:active,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-primary:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-primary:hover,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-secondary,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-secondary:active,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-secondary:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-secondary:hover,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-success,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-success:active,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-success:focus,.bootstrap-select>.dropdown-toggle.bs-placeholder.btn-success:hover{color:rgba(255,255,255,.5)}.bootstrap-select>select{position:absolute!important;bottom:0;left:50%;display:block!important;width:.5px!important;height:100%!important;padding:0!important;opacity:0!important;border:none;z-index:0!important}.bootstrap-select>select.mobile-device{top:0;left:0;display:block!important;width:100%!important;z-index:2!important}.bootstrap-select.is-invalid .dropdown-toggle,.error .bootstrap-select .dropdown-toggle,.has-error .bootstrap-select .dropdown-toggle,.was-validated .bootstrap-select select:invalid+.dropdown-toggle{border-color:#b94a48}.bootstrap-select.is-valid .dropdown-toggle,.was-validated .bootstrap-select select:valid+.dropdown-toggle{border-color:#28a745}.bootstrap-select.fit-width{width:auto!important}.bootstrap-select:not([class*=col-]):not([class*=form-control]):not(.input-group-btn){width:220px}.bootstrap-select .dropdown-toggle:focus,.bootstrap-select>select.mobile-device:focus+.dropdown-toggle{outline:thin dotted #333!important;outline:5px auto -webkit-focus-ring-color!important;outline-offset:-2px}.bootstrap-select.form-control{margin-bottom:0;padding:0;border:none;height:auto}:not(.input-group)>.bootstrap-select.form-control:not([class*=col-]){width:100%}.bootstrap-select.form-control.input-group-btn{float:none;z-index:auto}.form-inline .bootstrap-select,.form-inline .bootstrap-select.form-control:not([class*=col-]){width:auto}.bootstrap-select:not(.input-group-btn),.bootstrap-select[class*=col-]{float:none;display:inline-block;margin-left:0}.bootstrap-select.dropdown-menu-right,.bootstrap-select[class*=col-].dropdown-menu-right,.row .bootstrap-select[class*=col-].dropdown-menu-right{float:right}.form-group .bootstrap-select,.form-horizontal .bootstrap-select,.form-inline .bootstrap-select{margin-bottom:0}.form-group-lg .bootstrap-select.form-control,.form-group-sm .bootstrap-select.form-control{padding:0}.form-group-lg .bootstrap-select.form-control .dropdown-toggle,.form-group-sm .bootstrap-select.form-control .dropdown-toggle{height:100%;font-size:inherit;line-height:inherit;border-radius:inherit}.bootstrap-select.form-control-lg .dropdown-toggle,.bootstrap-select.form-control-sm .dropdown-toggle{font-size:inherit;line-height:inherit;border-radius:inherit}.bootstrap-select.form-control-sm .dropdown-toggle{padding:.25rem .5rem}.bootstrap-select.form-control-lg .dropdown-toggle{padding:.5rem 1rem}.form-inline .bootstrap-select .form-control{width:100%}.bootstrap-select.disabled,.bootstrap-select>.disabled{cursor:not-allowed}.bootstrap-select.disabled:focus,.bootstrap-select>.disabled:focus{outline:0!important}.bootstrap-select.bs-container{position:absolute;top:0;left:0;height:0!important;padding:0!important}.bootstrap-select.bs-container .dropdown-menu{z-index:1060}.bootstrap-select .dropdown-toggle .filter-option{position:static;top:0;left:0;float:left;height:100%;width:100%;text-align:left;overflow:hidden;-webkit-box-flex:0;-webkit-flex:0 1 auto;-ms-flex:0 1 auto;flex:0 1 auto}.bs3.bootstrap-select .dropdown-toggle .filter-option{padding-right:inherit}.input-group .bs3-has-addon.bootstrap-select .dropdown-toggle .filter-option{position:absolute;padding-top:inherit;padding-bottom:inherit;padding-left:inherit;float:none}.input-group .bs3-has-addon.bootstrap-select .dropdown-toggle .filter-option .filter-option-inner{padding-right:inherit}.bootstrap-select .dropdown-toggle .filter-option-inner-inner{overflow:hidden}.bootstrap-select .dropdown-toggle .filter-expand{width:0!important;float:left;opacity:0!important;overflow:hidden}.bootstrap-select .dropdown-toggle .caret{position:absolute;top:50%;right:12px;margin-top:-2px;vertical-align:middle}.bootstrap-select .dropdown-toggle .bs-select-clear-selected{position:relative;display:block;margin-right:5px;text-align:center}.bs3.bootstrap-select .dropdown-toggle .bs-select-clear-selected{padding-right:inherit}.bootstrap-select .dropdown-toggle .bs-select-clear-selected span{position:relative;top:-webkit-calc(((-1em / 1.5) + 1ex)/ 2);top:calc(((-1em / 1.5) + 1ex)/ 2);pointer-events:none}.bs3.bootstrap-select .dropdown-toggle .bs-select-clear-selected span{top:auto}.bootstrap-select .dropdown-toggle.bs-placeholder .bs-select-clear-selected{display:none}.input-group .bootstrap-select.form-control .dropdown-toggle{border-radius:inherit}.bootstrap-select[class*=col-] .dropdown-toggle{width:100%}.bootstrap-select .dropdown-menu{min-width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bootstrap-select .dropdown-menu>.inner:focus{outline:0!important}.bootstrap-select .dropdown-menu.inner{position:static;float:none;border:0;padding:0;margin:0;border-radius:0;-webkit-box-shadow:none;box-shadow:none}.bootstrap-select .dropdown-menu li{position:relative}.bootstrap-select .dropdown-menu li.active small{color:rgba(255,255,255,.5)!important}.bootstrap-select .dropdown-menu li.disabled a{cursor:not-allowed}.bootstrap-select .dropdown-menu li a{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.bootstrap-select .dropdown-menu li a.opt{position:relative;padding-left:2.25em}.bootstrap-select .dropdown-menu li a span.check-mark{display:none}.bootstrap-select .dropdown-menu li a span.text{display:inline-block}.bootstrap-select .dropdown-menu li small{padding-left:.5em}.bootstrap-select .dropdown-menu .notify{position:absolute;bottom:5px;width:96%;margin:0 2%;min-height:26px;padding:3px 5px;background:#f5f5f5;border:1px solid #e3e3e3;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05);pointer-events:none;opacity:.9;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bootstrap-select .dropdown-menu .notify.fadeOut{-webkit-animation:.3s linear 750ms forwards bs-notify-fadeOut;-o-animation:.3s linear 750ms forwards bs-notify-fadeOut;animation:.3s linear 750ms forwards bs-notify-fadeOut}.bootstrap-select .no-results{padding:3px;background:#f5f5f5;margin:0 5px;white-space:nowrap}.bootstrap-select.fit-width .dropdown-toggle .filter-option{position:static;display:inline;padding:0}.bootstrap-select.fit-width .dropdown-toggle .filter-option-inner,.bootstrap-select.fit-width .dropdown-toggle .filter-option-inner-inner{display:inline}.bootstrap-select.fit-width .dropdown-toggle .bs-caret:before{content:'\00a0'}.bootstrap-select.fit-width .dropdown-toggle .caret{position:static;top:auto;margin-top:-1px}.bootstrap-select.show-tick .dropdown-menu .selected span.check-mark{position:absolute;display:inline-block;right:15px;top:5px}.bootstrap-select.show-tick .dropdown-menu li a span.text{margin-right:34px}.bootstrap-select .bs-ok-default:after{content:'';display:block;width:.5em;height:1em;border-style:solid;border-width:0 .26em .26em 0;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg)}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle,.bootstrap-select.show-menu-arrow.show>.dropdown-toggle{z-index:1061}.bootstrap-select.show-menu-arrow .dropdown-toggle .filter-option:before{content:'';border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid rgba(204,204,204,.2);position:absolute;bottom:-4px;left:9px;display:none}.bootstrap-select.show-menu-arrow .dropdown-toggle .filter-option:after{content:'';border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute;bottom:-4px;left:10px;display:none}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle .filter-option:before{bottom:auto;top:-4px;border-top:7px solid rgba(204,204,204,.2);border-bottom:0}.bootstrap-select.show-menu-arrow.dropup .dropdown-toggle .filter-option:after{bottom:auto;top:-4px;border-top:6px solid #fff;border-bottom:0}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle .filter-option:before{right:12px;left:auto}.bootstrap-select.show-menu-arrow.pull-right .dropdown-toggle .filter-option:after{right:13px;left:auto}.bootstrap-select.show-menu-arrow.open>.dropdown-toggle .filter-option:after,.bootstrap-select.show-menu-arrow.open>.dropdown-toggle .filter-option:before,.bootstrap-select.show-menu-arrow.show>.dropdown-toggle .filter-option:after,.bootstrap-select.show-menu-arrow.show>.dropdown-toggle .filter-option:before{display:block}.bs-actionsbox,.bs-donebutton,.bs-searchbox{padding:4px 8px}.bs-actionsbox{width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bs-actionsbox .btn-group{display:block}.bs-actionsbox .btn-group button{width:50%}.bs-donebutton{float:left;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.bs-donebutton .btn-group{display:block}.bs-donebutton .btn-group button{width:100%}.bs-searchbox+.bs-actionsbox{padding:0 8px 4px}.bs-searchbox .form-control{margin-bottom:0;width:100%;float:none} \ No newline at end of file diff --git a/apps/nps/0.29.21/web/static/css/bootstrap-table.min.css b/apps/nps/0.29.21/web/static/css/bootstrap-table.min.css new file mode 100755 index 0000000..7756611 --- /dev/null +++ b/apps/nps/0.29.21/web/static/css/bootstrap-table.min.css @@ -0,0 +1,10 @@ +/** + * bootstrap-table - An extended table to integration with some of the most widely used CSS frameworks. (Supports Bootstrap, Semantic UI, Bulma, Material Design, Foundation) + * + * @version v1.24.1 + * @homepage https://bootstrap-table.com + * @author wenzhixin (http://wenzhixin.net.cn/) + * @license MIT + */ + +@charset "UTF-8";.bootstrap-table .fixed-table-toolbar::after{content:"";display:block;clear:both}.bootstrap-table .fixed-table-toolbar .bs-bars,.bootstrap-table .fixed-table-toolbar .columns,.bootstrap-table .fixed-table-toolbar .search{position:relative;margin-top:10px;margin-bottom:10px}.bootstrap-table .fixed-table-toolbar .columns .btn-group>.btn-group{display:inline-block;margin-left:-1px!important}.bootstrap-table .fixed-table-toolbar .columns .btn-group>.btn-group>.btn{border-radius:0}.bootstrap-table .fixed-table-toolbar .columns .btn-group>.btn-group:first-child>.btn{border-top-left-radius:4px;border-bottom-left-radius:4px}.bootstrap-table .fixed-table-toolbar .columns .btn-group>.btn-group:last-child>.btn{border-top-right-radius:4px;border-bottom-right-radius:4px}.bootstrap-table .fixed-table-toolbar .columns .dropdown-menu{text-align:left;max-height:300px;overflow:auto;-ms-overflow-style:scrollbar;z-index:1001}.bootstrap-table .fixed-table-toolbar .columns label{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.4286}.bootstrap-table .fixed-table-toolbar .columns-left{margin-right:5px}.bootstrap-table .fixed-table-toolbar .columns-right{margin-left:5px}.bootstrap-table .fixed-table-toolbar .pull-right .dropdown-menu{right:0;left:auto}.bootstrap-table .fixed-table-container{position:relative;clear:both}.bootstrap-table .fixed-table-container .table{width:100%;margin-bottom:0!important}.bootstrap-table .fixed-table-container .table td,.bootstrap-table .fixed-table-container .table th{vertical-align:middle;box-sizing:border-box}.bootstrap-table .fixed-table-container .table tfoot th,.bootstrap-table .fixed-table-container .table thead th{vertical-align:bottom;padding:0;margin:0}.bootstrap-table .fixed-table-container .table tfoot th:focus,.bootstrap-table .fixed-table-container .table thead th:focus{outline:0 solid transparent}.bootstrap-table .fixed-table-container .table tfoot th.detail,.bootstrap-table .fixed-table-container .table thead th.detail{width:30px}.bootstrap-table .fixed-table-container .table tfoot th .th-inner,.bootstrap-table .fixed-table-container .table thead th .th-inner{padding:.75rem;vertical-align:bottom;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bootstrap-table .fixed-table-container .table tfoot th .sortable,.bootstrap-table .fixed-table-container .table thead th .sortable{cursor:pointer;background-position:right;background-repeat:no-repeat;padding-right:30px!important}.bootstrap-table .fixed-table-container .table tfoot th .sortable.sortable-center,.bootstrap-table .fixed-table-container .table thead th .sortable.sortable-center{padding-left:20px!important;padding-right:20px!important}.bootstrap-table .fixed-table-container .table tfoot th .both,.bootstrap-table .fixed-table-container .table thead th .both{background-image:url('data:image/svg+xml;utf8,');background-size:16px 16px;background-position:center right 2px}.bootstrap-table .fixed-table-container .table tfoot th .asc,.bootstrap-table .fixed-table-container .table thead th .asc{background-image:url('data:image/svg+xml;utf8,')}.bootstrap-table .fixed-table-container .table tfoot th .desc,.bootstrap-table .fixed-table-container .table thead th .desc{background-image:url('data:image/svg+xml;utf8,')}.bootstrap-table .fixed-table-container .table tbody tr.selected td{background-color:rgba(0,0,0,.075)}.bootstrap-table .fixed-table-container .table tbody tr.no-records-found td{text-align:center}.bootstrap-table .fixed-table-container .table tbody tr .card-view{display:flex}.bootstrap-table .fixed-table-container .table tbody tr .card-view .card-view-title{font-weight:700;display:inline-block;min-width:30%;width:auto!important;text-align:left!important}.bootstrap-table .fixed-table-container .table tbody tr .card-view .card-view-value{width:100%!important;text-align:left!important}.bootstrap-table .fixed-table-container .table .bs-checkbox{text-align:center}.bootstrap-table .fixed-table-container .table .bs-checkbox label{margin-bottom:0}.bootstrap-table .fixed-table-container .table .bs-checkbox label input[type=checkbox],.bootstrap-table .fixed-table-container .table .bs-checkbox label input[type=radio]{margin:0 auto!important}.bootstrap-table .fixed-table-container .table.table-sm .th-inner{padding:.25rem}.bootstrap-table .fixed-table-container.fixed-height:not(.has-footer){border-bottom:1px solid #dee2e6}.bootstrap-table .fixed-table-container.fixed-height.has-card-view{border-top:1px solid #dee2e6;border-bottom:1px solid #dee2e6}.bootstrap-table .fixed-table-container.fixed-height .fixed-table-border{border-left:1px solid #dee2e6;border-right:1px solid #dee2e6}.bootstrap-table .fixed-table-container.fixed-height .table thead th{border-bottom:1px solid #dee2e6}.bootstrap-table .fixed-table-container.fixed-height .table-dark thead th{border-bottom:1px solid #32383e}.bootstrap-table .fixed-table-container .fixed-table-header{overflow:hidden}.bootstrap-table .fixed-table-container .fixed-table-body{overflow:auto;height:100%}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading{align-items:center;background:#fff;display:flex;justify-content:center;position:absolute;bottom:0;width:100%;max-width:100%;z-index:1000;transition:visibility 0s,opacity .15s ease-in-out;opacity:0;visibility:hidden}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.open{visibility:visible;opacity:1}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap{align-items:baseline;display:flex;justify-content:center}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .loading-text{margin-right:6px}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap{align-items:center;display:flex;justify-content:center}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-dot,.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap::after,.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap::before{content:"";animation-duration:1.5s;animation-iteration-count:infinite;animation-name:loading;background:#212529;border-radius:50%;display:block;height:5px;margin:0 4px;opacity:0;width:5px}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-dot{animation-delay:.3s}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap::after{animation-delay:.6s}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark{background:#212529}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark .animation-dot,.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark .animation-wrap::after,.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark .animation-wrap::before{background:#fff}.bootstrap-table .fixed-table-container .fixed-table-footer{overflow:hidden}.bootstrap-table .fixed-table-pagination::after{content:"";display:block;clear:both}.bootstrap-table .fixed-table-pagination>.pagination,.bootstrap-table .fixed-table-pagination>.pagination-detail{margin-top:10px;margin-bottom:10px}.bootstrap-table .fixed-table-pagination>.pagination-detail .pagination-info{line-height:34px;margin-right:5px}.bootstrap-table .fixed-table-pagination>.pagination-detail .page-list{display:inline-block}.bootstrap-table .fixed-table-pagination>.pagination-detail .page-list .btn-group{position:relative;display:inline-block;vertical-align:middle}.bootstrap-table .fixed-table-pagination>.pagination-detail .page-list .btn-group .dropdown-menu{margin-bottom:0}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination{margin:0}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination li.page-intermediate a{color:#c8c8c8}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination li.page-intermediate a::before{content:"⬅"}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination li.page-intermediate a::after{content:"➡"}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination li.disabled a{pointer-events:none;cursor:default}.bootstrap-table.fullscreen{position:fixed;top:0;left:0;z-index:1050;width:100%!important;background:#fff;height:100vh;overflow-y:scroll}.bootstrap-table.bootstrap4 .pagination-lg .page-link,.bootstrap-table.bootstrap5 .pagination-lg .page-link{padding:.5rem 1rem}.bootstrap-table.bootstrap5 .float-left{float:left}.bootstrap-table.bootstrap5 .float-right{float:right}div.fixed-table-scroll-inner{width:100%;height:200px}div.fixed-table-scroll-outer{top:0;left:0;visibility:hidden;width:200px;height:150px;overflow:hidden}@keyframes loading{0%{opacity:0}50%{opacity:1}100%{opacity:0}} \ No newline at end of file diff --git a/apps/nps/0.29.21/web/static/css/bootstrap.min.css b/apps/nps/0.29.21/web/static/css/bootstrap.min.css new file mode 100644 index 0000000..6561b6f --- /dev/null +++ b/apps/nps/0.29.21/web/static/css/bootstrap.min.css @@ -0,0 +1,7 @@ +/*! + * Bootstrap v4.0.0 (https://getbootstrap.com) + * Copyright 2011-2018 The Bootstrap Authors + * Copyright 2011-2018 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:transparent}@-ms-viewport{width:device-width}article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent;-webkit-text-decoration-skip:objects}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-family:inherit;font-weight:500;line-height:1.2;color:inherit}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer::before{content:"\2014 \00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}code{font-size:87.5%;color:#e83e8c;word-break:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container{max-width:540px}}@media (min-width:768px){.container{max-width:720px}}@media (min-width:992px){.container{max-width:960px}}@media (min-width:1200px){.container{max-width:1140px}}.container-fluid{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{position:relative;width:100%;min-height:1px;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-1{-webkit-box-flex:0;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-2{-webkit-box-flex:0;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-webkit-box-flex:0;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-5{-webkit-box-flex:0;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-webkit-box-flex:0;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-8{-webkit-box-flex:0;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-webkit-box-flex:0;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-11{-webkit-box-flex:0;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-1{margin-left:8.333333%}.offset-2{margin-left:16.666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.333333%}.offset-5{margin-left:41.666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.333333%}.offset-8{margin-left:66.666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.333333%}.offset-11{margin-left:91.666667%}@media (min-width:576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-sm-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-sm-1{-webkit-box-flex:0;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{-webkit-box-flex:0;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-webkit-box-flex:0;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{-webkit-box-flex:0;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-webkit-box-flex:0;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{-webkit-box-flex:0;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-webkit-box-flex:0;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{-webkit-box-flex:0;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-sm-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-sm-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-sm-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-sm-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-sm-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-sm-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-sm-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-sm-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-sm-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-sm-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-sm-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-sm-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-sm-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-sm-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.333333%}.offset-sm-2{margin-left:16.666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.333333%}.offset-sm-5{margin-left:41.666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.333333%}.offset-sm-8{margin-left:66.666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.333333%}.offset-sm-11{margin-left:91.666667%}}@media (min-width:768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-md-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-md-1{-webkit-box-flex:0;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{-webkit-box-flex:0;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-webkit-box-flex:0;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{-webkit-box-flex:0;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-webkit-box-flex:0;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{-webkit-box-flex:0;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-webkit-box-flex:0;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{-webkit-box-flex:0;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-md-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-md-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-md-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-md-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-md-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-md-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-md-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-md-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-md-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-md-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-md-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-md-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-md-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-md-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.333333%}.offset-md-2{margin-left:16.666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.333333%}.offset-md-5{margin-left:41.666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.333333%}.offset-md-8{margin-left:66.666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.333333%}.offset-md-11{margin-left:91.666667%}}@media (min-width:992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-lg-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-lg-1{-webkit-box-flex:0;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{-webkit-box-flex:0;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-webkit-box-flex:0;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{-webkit-box-flex:0;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-webkit-box-flex:0;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{-webkit-box-flex:0;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-webkit-box-flex:0;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{-webkit-box-flex:0;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-lg-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-lg-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-lg-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-lg-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-lg-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-lg-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-lg-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-lg-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-lg-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-lg-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-lg-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-lg-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-lg-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-lg-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.333333%}.offset-lg-2{margin-left:16.666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.333333%}.offset-lg-5{margin-left:41.666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.333333%}.offset-lg-8{margin-left:66.666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.333333%}.offset-lg-11{margin-left:91.666667%}}@media (min-width:1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-xl-auto{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-xl-1{-webkit-box-flex:0;-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{-webkit-box-flex:0;-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{-webkit-box-flex:0;-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-webkit-box-flex:0;-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{-webkit-box-flex:0;-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{-webkit-box-flex:0;-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-webkit-box-flex:0;-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{-webkit-box-flex:0;-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{-webkit-box-flex:0;-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-webkit-box-flex:0;-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{-webkit-box-flex:0;-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-webkit-box-ordinal-group:0;-ms-flex-order:-1;order:-1}.order-xl-last{-webkit-box-ordinal-group:14;-ms-flex-order:13;order:13}.order-xl-0{-webkit-box-ordinal-group:1;-ms-flex-order:0;order:0}.order-xl-1{-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.order-xl-2{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.order-xl-3{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.order-xl-4{-webkit-box-ordinal-group:5;-ms-flex-order:4;order:4}.order-xl-5{-webkit-box-ordinal-group:6;-ms-flex-order:5;order:5}.order-xl-6{-webkit-box-ordinal-group:7;-ms-flex-order:6;order:6}.order-xl-7{-webkit-box-ordinal-group:8;-ms-flex-order:7;order:7}.order-xl-8{-webkit-box-ordinal-group:9;-ms-flex-order:8;order:8}.order-xl-9{-webkit-box-ordinal-group:10;-ms-flex-order:9;order:9}.order-xl-10{-webkit-box-ordinal-group:11;-ms-flex-order:10;order:10}.order-xl-11{-webkit-box-ordinal-group:12;-ms-flex-order:11;order:11}.order-xl-12{-webkit-box-ordinal-group:13;-ms-flex-order:12;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.333333%}.offset-xl-2{margin-left:16.666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.333333%}.offset-xl-5{margin-left:41.666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.333333%}.offset-xl-8{margin-left:66.666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.333333%}.offset-xl-11{margin-left:91.666667%}}.table{width:100%;max-width:100%;margin-bottom:1rem;background-color:transparent}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table .table{background-color:#fff}.table-sm td,.table-sm th{padding:.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#b8daff}.table-hover .table-primary:hover{background-color:#9fcdff}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#d6d8db}.table-hover .table-secondary:hover{background-color:#c8cbcf}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#f5c6cb}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6c8ca}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>td,.table-active>th{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#212529;border-color:#32383e}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#212529}.table-dark td,.table-dark th,.table-dark thead th{border-color:#32383e}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,.05)}.table-dark.table-hover tbody tr:hover{background-color:rgba(255,255,255,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.form-control::-webkit-input-placeholder{color:#6c757d;opacity:1}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control:-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}select.form-control:not([size]):not([multiple]){height:calc(2.25rem + 2px)}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding-top:.375rem;padding-bottom:.375rem;margin-bottom:0;line-height:1.5;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm,.input-group-lg>.form-control-plaintext.form-control,.input-group-lg>.input-group-append>.form-control-plaintext.btn,.input-group-lg>.input-group-append>.form-control-plaintext.input-group-text,.input-group-lg>.input-group-prepend>.form-control-plaintext.btn,.input-group-lg>.input-group-prepend>.form-control-plaintext.input-group-text,.input-group-sm>.form-control-plaintext.form-control,.input-group-sm>.input-group-append>.form-control-plaintext.btn,.input-group-sm>.input-group-append>.form-control-plaintext.input-group-text,.input-group-sm>.input-group-prepend>.form-control-plaintext.btn,.input-group-sm>.input-group-prepend>.form-control-plaintext.input-group-text{padding-right:0;padding-left:0}.form-control-sm,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-sm>.input-group-append>select.btn:not([size]):not([multiple]),.input-group-sm>.input-group-append>select.input-group-text:not([size]):not([multiple]),.input-group-sm>.input-group-prepend>select.btn:not([size]):not([multiple]),.input-group-sm>.input-group-prepend>select.input-group-text:not([size]):not([multiple]),.input-group-sm>select.form-control:not([size]):not([multiple]),select.form-control-sm:not([size]):not([multiple]){height:calc(1.8125rem + 2px)}.form-control-lg,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-lg>.input-group-append>select.btn:not([size]):not([multiple]),.input-group-lg>.input-group-append>select.input-group-text:not([size]):not([multiple]),.input-group-lg>.input-group-prepend>select.btn:not([size]):not([multiple]),.input-group-lg>.input-group-prepend>select.input-group-text:not([size]):not([multiple]),.input-group-lg>select.form-control:not([size]):not([multiple]),select.form-control-lg:not([size]):not([multiple]){height:calc(2.875rem + 2px)}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(40,167,69,.8);border-radius:.2rem}.custom-select.is-valid,.form-control.is-valid,.was-validated .custom-select:valid,.was-validated .form-control:valid{border-color:#28a745}.custom-select.is-valid:focus,.form-control.is-valid:focus,.was-validated .custom-select:valid:focus,.was-validated .form-control:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-select.is-valid~.valid-feedback,.custom-select.is-valid~.valid-tooltip,.form-control.is-valid~.valid-feedback,.form-control.is-valid~.valid-tooltip,.was-validated .custom-select:valid~.valid-feedback,.was-validated .custom-select:valid~.valid-tooltip,.was-validated .form-control:valid~.valid-feedback,.was-validated .form-control:valid~.valid-tooltip{display:block}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#28a745}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#28a745}.custom-control-input.is-valid~.custom-control-label::before,.was-validated .custom-control-input:valid~.custom-control-label::before{background-color:#71dd8a}.custom-control-input.is-valid~.valid-feedback,.custom-control-input.is-valid~.valid-tooltip,.was-validated .custom-control-input:valid~.valid-feedback,.was-validated .custom-control-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid:checked~.custom-control-label::before,.was-validated .custom-control-input:valid:checked~.custom-control-label::before{background-color:#34ce57}.custom-control-input.is-valid:focus~.custom-control-label::before,.was-validated .custom-control-input:valid:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(40,167,69,.25)}.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#28a745}.custom-file-input.is-valid~.custom-file-label::before,.was-validated .custom-file-input:valid~.custom-file-label::before{border-color:inherit}.custom-file-input.is-valid~.valid-feedback,.custom-file-input.is-valid~.valid-tooltip,.was-validated .custom-file-input:valid~.valid-feedback,.was-validated .custom-file-input:valid~.valid-tooltip{display:block}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(220,53,69,.8);border-radius:.2rem}.custom-select.is-invalid,.form-control.is-invalid,.was-validated .custom-select:invalid,.was-validated .form-control:invalid{border-color:#dc3545}.custom-select.is-invalid:focus,.form-control.is-invalid:focus,.was-validated .custom-select:invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-select.is-invalid~.invalid-feedback,.custom-select.is-invalid~.invalid-tooltip,.form-control.is-invalid~.invalid-feedback,.form-control.is-invalid~.invalid-tooltip,.was-validated .custom-select:invalid~.invalid-feedback,.was-validated .custom-select:invalid~.invalid-tooltip,.was-validated .form-control:invalid~.invalid-feedback,.was-validated .form-control:invalid~.invalid-tooltip{display:block}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#dc3545}.custom-control-input.is-invalid~.custom-control-label::before,.was-validated .custom-control-input:invalid~.custom-control-label::before{background-color:#efa2a9}.custom-control-input.is-invalid~.invalid-feedback,.custom-control-input.is-invalid~.invalid-tooltip,.was-validated .custom-control-input:invalid~.invalid-feedback,.was-validated .custom-control-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid:checked~.custom-control-label::before,.was-validated .custom-control-input:invalid:checked~.custom-control-label::before{background-color:#e4606d}.custom-control-input.is-invalid:focus~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(220,53,69,.25)}.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.custom-file-input.is-invalid~.custom-file-label::before,.was-validated .custom-file-input:invalid~.custom-file-label::before{border-color:inherit}.custom-file-input.is-invalid~.invalid-feedback,.custom-file-input.is-invalid~.invalid-tooltip,.was-validated .custom-file-input:invalid~.invalid-feedback,.was-validated .custom-file-input:invalid~.invalid-tooltip{display:block}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-inline{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .input-group{width:auto}.form-inline .form-check{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}.btn:focus,.btn:hover{text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}.btn:not(:disabled):not(.disabled).active,.btn:not(:disabled):not(.disabled):active{background-image:none}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary.focus,.btn-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary.focus,.btn-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success.focus,.btn-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info.focus,.btn-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning.focus,.btn-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger.focus,.btn-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark.focus,.btn-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-primary{color:#007bff;background-color:transparent;background-image:none;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-secondary{color:#6c757d;background-color:transparent;background-image:none;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-success{color:#28a745;background-color:transparent;background-image:none;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-info{color:#17a2b8;background-color:transparent;background-image:none;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-warning{color:#ffc107;background-color:transparent;background-image:none;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-danger{color:#dc3545;background-color:transparent;background-image:none;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-light{color:#f8f9fa;background-color:transparent;background-image:none;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-dark{color:#343a40;background-color:transparent;background-image:none;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-link{font-weight:400;color:#007bff;background-color:transparent}.btn-link:hover{color:#0056b3;text-decoration:underline;background-color:transparent;border-color:transparent}.btn-link.focus,.btn-link:focus{text-decoration:underline;border-color:transparent;box-shadow:none}.btn-link.disabled,.btn-link:disabled{color:#6c757d}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;transition:opacity .15s linear}.fade.show{opacity:1}.collapse{display:none}.collapse.show{display:block}tr.collapse.show{display:table-row}tbody.collapse.show{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}.dropdown,.dropup{position:relative}.dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropup .dropdown-menu{margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;width:0;height:0;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#6c757d;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.btn-group,.btn-group-vertical{position:relative;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto}.btn-group-vertical>.btn:hover,.btn-group>.btn:hover{z-index:1}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus{z-index:1}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group,.btn-group-vertical .btn+.btn,.btn-group-vertical .btn+.btn-group,.btn-group-vertical .btn-group+.btn,.btn-group-vertical .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after{margin-left:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.btn-group-vertical .btn,.btn-group-vertical .btn-group{width:100%}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio],.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control{position:relative;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;margin-bottom:0}.input-group>.custom-file:focus,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control{margin-left:-1px}.input-group>.custom-select:not(:last-child),.input-group>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::before{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label,.input-group>.custom-file:not(:first-child) .custom-file-label::before{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-append,.input-group-prepend{display:-webkit-box;display:-ms-flexbox;display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}.custom-control-inline{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked~.custom-control-label::before{color:#fff;background-color:#007bff}.custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-control-input:active~.custom-control-label::before{color:#fff;background-color:#b3d7ff}.custom-control-input:disabled~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label::before{background-color:#e9ecef}.custom-control-label{margin-bottom:0}.custom-control-label::before{position:absolute;top:.25rem;left:0;display:block;width:1rem;height:1rem;pointer-events:none;content:"";-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#dee2e6}.custom-control-label::after{position:absolute;top:.25rem;left:0;display:block;width:1rem;height:1rem;content:"";background-repeat:no-repeat;background-position:center center;background-size:50% 50%}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label::before{background-color:#007bff}.custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before{background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label::before{background-color:#007bff}.custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-select{display:inline-block;width:100%;height:calc(2.25rem + 2px);padding:.375rem 1.75rem .375rem .75rem;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right .75rem center;background-size:8px 10px;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:inset 0 1px 2px rgba(0,0,0,.075),0 0 5px rgba(128,189,255,.5)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{opacity:0}.custom-select-sm{height:calc(1.8125rem + 2px);padding-top:.375rem;padding-bottom:.375rem;font-size:75%}.custom-select-lg{height:calc(2.875rem + 2px);padding-top:.375rem;padding-bottom:.375rem;font-size:125%}.custom-file{position:relative;display:inline-block;width:100%;height:calc(2.25rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(2.25rem + 2px);margin:0;opacity:0}.custom-file-input:focus~.custom-file-control{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-file-input:focus~.custom-file-control::before{border-color:#80bdff}.custom-file-input:lang(en)~.custom-file-label::after{content:"Browse"}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(2.25rem + 2px);padding:.375rem .75rem;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:calc(calc(2.25rem + 2px) - 1px * 2);padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:1px solid #ced4da;border-radius:0 .25rem .25rem 0}.nav{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:.5rem 1rem}.navbar>.container,.navbar>.container-fluid{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler:not(:disabled):not(.disabled){cursor:pointer}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat center center;background-size:100% 100%}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}.navbar-expand-sm .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}.navbar-expand-md .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}.navbar-expand-lg .dropup .dropdown-menu{top:auto;bottom:100%}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}.navbar-expand-xl .dropup .dropdown-menu{top:auto;bottom:100%}}.navbar-expand{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .dropdown-menu-right{right:0;left:auto}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-expand .dropup .dropdown-menu{top:auto;bottom:100%}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,.9)}.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.5);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-dark .navbar-text{color:rgba(255,255,255,.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-body{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img{width:100%;border-radius:calc(.25rem - 1px)}.card-img-top{width:100%;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img-bottom{width:100%;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.card-deck .card{margin-bottom:15px}@media (min-width:576px){.card-deck{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1 0 0%;flex:1 0 0%;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.card-group>.card{margin-bottom:15px}@media (min-width:576px){.card-group{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-webkit-box-flex:1;-ms-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:first-child .card-header,.card-group>.card:first-child .card-img-top{border-top-right-radius:0}.card-group>.card:first-child .card-footer,.card-group>.card:first-child .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:last-child .card-header,.card-group>.card:last-child .card-img-top{border-top-left-radius:0}.card-group>.card:last-child .card-footer,.card-group>.card:last-child .card-img-bottom{border-bottom-left-radius:0}.card-group>.card:only-child{border-radius:.25rem}.card-group>.card:only-child .card-header,.card-group>.card:only-child .card-img-top{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card-group>.card:only-child .card-footer,.card-group>.card:only-child .card-img-bottom{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-group>.card:not(:first-child):not(:last-child):not(:only-child){border-radius:0}.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-footer,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-header,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-top{border-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem}.card-columns .card{display:inline-block;width:100%}}.breadcrumb{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:.5rem;padding-left:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:-webkit-box;display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:2;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.page-link:not(:disabled):not(.disabled){cursor:pointer}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:1;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}.badge-primary[href]:focus,.badge-primary[href]:hover{color:#fff;text-decoration:none;background-color:#0062cc}.badge-secondary{color:#fff;background-color:#6c757d}.badge-secondary[href]:focus,.badge-secondary[href]:hover{color:#fff;text-decoration:none;background-color:#545b62}.badge-success{color:#fff;background-color:#28a745}.badge-success[href]:focus,.badge-success[href]:hover{color:#fff;text-decoration:none;background-color:#1e7e34}.badge-info{color:#fff;background-color:#17a2b8}.badge-info[href]:focus,.badge-info[href]:hover{color:#fff;text-decoration:none;background-color:#117a8b}.badge-warning{color:#212529;background-color:#ffc107}.badge-warning[href]:focus,.badge-warning[href]:hover{color:#212529;text-decoration:none;background-color:#d39e00}.badge-danger{color:#fff;background-color:#dc3545}.badge-danger[href]:focus,.badge-danger[href]:hover{color:#fff;text-decoration:none;background-color:#bd2130}.badge-light{color:#212529;background-color:#f8f9fa}.badge-light[href]:focus,.badge-light[href]:hover{color:#212529;text-decoration:none;background-color:#dae0e5}.badge-dark{color:#fff;background-color:#343a40}.badge-dark[href]:focus,.badge-dark[href]:hover{color:#fff;text-decoration:none;background-color:#1d2124}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:-webkit-box;display:-ms-flexbox;display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;color:#fff;text-align:center;background-color:#007bff;transition:width .6s ease}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}.media{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.media-body{-webkit-box-flex:1;-ms-flex:1;flex:1}.list-group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;margin-bottom:-1px;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.list-group-item:focus,.list-group-item:hover{z-index:1;text-decoration:none}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-flush .list-group-item{border-right:0;border-left:0;border-radius:0}.list-group-flush:first-child .list-group-item:first-child{border-top:0}.list-group-flush:last-child .list-group-item:last-child{border-bottom:0}.list-group-item-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:focus,.close:hover{color:#000;text-decoration:none;opacity:.75}.close:not(:disabled):not(.disabled){cursor:pointer}button.close{padding:0;background-color:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;outline:0}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.show .modal-dialog{-webkit-transform:translate(0,0);transform:translate(0,0)}.modal-dialog-centered{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;min-height:calc(100% - (.5rem * 2))}.modal-content{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:1rem;border-bottom:1px solid #e9ecef;border-top-left-radius:.3rem;border-top-right-radius:.3rem}.modal-header .close{padding:1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.modal-footer{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;padding:1rem;border-top:1px solid #e9ecef}.modal-footer>:not(:first-child){margin-left:.25rem}.modal-footer>:not(:last-child){margin-right:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-centered{min-height:calc(100% - (1.75rem * 2))}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg{max-width:800px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow::before,.bs-tooltip-top .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow::before,.bs-tooltip-right .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.bs-tooltip-bottom .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow::before,.bs-tooltip-left .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::after,.popover .arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top] .arrow,.bs-popover-top .arrow{bottom:calc((.5rem + 1px) * -1)}.bs-popover-auto[x-placement^=top] .arrow::after,.bs-popover-auto[x-placement^=top] .arrow::before,.bs-popover-top .arrow::after,.bs-popover-top .arrow::before{border-width:.5rem .5rem 0}.bs-popover-auto[x-placement^=top] .arrow::before,.bs-popover-top .arrow::before{bottom:0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top] .arrow::after,.bs-popover-top .arrow::after{bottom:1px;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right] .arrow,.bs-popover-right .arrow{left:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right] .arrow::after,.bs-popover-auto[x-placement^=right] .arrow::before,.bs-popover-right .arrow::after,.bs-popover-right .arrow::before{border-width:.5rem .5rem .5rem 0}.bs-popover-auto[x-placement^=right] .arrow::before,.bs-popover-right .arrow::before{left:0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right] .arrow::after,.bs-popover-right .arrow::after{left:1px;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom] .arrow,.bs-popover-bottom .arrow{top:calc((.5rem + 1px) * -1)}.bs-popover-auto[x-placement^=bottom] .arrow::after,.bs-popover-auto[x-placement^=bottom] .arrow::before,.bs-popover-bottom .arrow::after,.bs-popover-bottom .arrow::before{border-width:0 .5rem .5rem .5rem}.bs-popover-auto[x-placement^=bottom] .arrow::before,.bs-popover-bottom .arrow::before{top:0;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom] .arrow::after,.bs-popover-bottom .arrow::after{top:1px;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left] .arrow,.bs-popover-left .arrow{right:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left] .arrow::after,.bs-popover-auto[x-placement^=left] .arrow::before,.bs-popover-left .arrow::after,.bs-popover-left .arrow::before{border-width:.5rem 0 .5rem .5rem}.bs-popover-auto[x-placement^=left] .arrow::before,.bs-popover-left .arrow::before{right:0;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left] .arrow::after,.bs-popover-left .arrow::after{right:1px;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;color:inherit;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-item{position:relative;display:none;-webkit-box-align:center;-ms-flex-align:center;align-items:center;width:100%;transition:-webkit-transform .6s ease;transition:transform .6s ease;transition:transform .6s ease,-webkit-transform .6s ease;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.carousel-item-next,.carousel-item-prev{position:absolute;top:0}.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{-webkit-transform:translateX(0);transform:translateX(0)}@supports ((-webkit-transform-style:preserve-3d) or (transform-style:preserve-3d)){.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.active.carousel-item-right,.carousel-item-next{-webkit-transform:translateX(100%);transform:translateX(100%)}@supports ((-webkit-transform-style:preserve-3d) or (transform-style:preserve-3d)){.active.carousel-item-right,.carousel-item-next{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.active.carousel-item-left,.carousel-item-prev{-webkit-transform:translateX(-100%);transform:translateX(-100%)}@supports ((-webkit-transform-style:preserve-3d) or (transform-style:preserve-3d)){.active.carousel-item-left,.carousel-item-prev{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:transparent no-repeat center center;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E")}.carousel-control-next-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E")}.carousel-indicators{position:absolute;right:0;bottom:10px;left:0;z-index:15;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{position:relative;-webkit-box-flex:0;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;background-color:rgba(255,255,255,.5)}.carousel-indicators li::before{position:absolute;top:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators li::after{position:absolute;bottom:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators .active{background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#007bff!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#0062cc!important}.bg-secondary{background-color:#6c757d!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#545b62!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#bd2130!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#343a40!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#007bff!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-right{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-circle{border-radius:50%!important}.rounded-0{border-radius:0!important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-sm-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-md-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-lg-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-xl-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:-webkit-box!important;display:-ms-flexbox!important;display:flex!important}.d-print-inline-flex{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.857143%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.flex-sm-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-sm-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-sm-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-sm-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.flex-md-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-md-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-md-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-md-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-lg-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-lg-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-lg-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{-webkit-box-orient:horizontal!important;-webkit-box-direction:normal!important;-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-webkit-box-orient:vertical!important;-webkit-box-direction:normal!important;-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-webkit-box-orient:horizontal!important;-webkit-box-direction:reverse!important;-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-webkit-box-orient:vertical!important;-webkit-box-direction:reverse!important;-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.justify-content-xl-start{-webkit-box-pack:start!important;-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-webkit-box-pack:end!important;-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-webkit-box-pack:justify!important;-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-webkit-box-align:start!important;-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-webkit-box-align:end!important;-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-webkit-box-align:center!important;-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-webkit-box-align:baseline!important;-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-webkit-box-align:stretch!important;-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-xl-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-xl-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;-webkit-clip-path:inset(50%);clip-path:inset(50%);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal;-webkit-clip-path:none;clip-path:none}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.text-justify{text-align:justify!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#007bff!important}a.text-primary:focus,a.text-primary:hover{color:#0062cc!important}.text-secondary{color:#6c757d!important}a.text-secondary:focus,a.text-secondary:hover{color:#545b62!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#1e7e34!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#117a8b!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#d39e00!important}.text-danger{color:#dc3545!important}a.text-danger:focus,a.text-danger:hover{color:#bd2130!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#dae0e5!important}.text-dark{color:#343a40!important}a.text-dark:focus,a.text-dark:hover{color:#1d2124!important}.text-muted{color:#6c757d!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,::after,::before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px!important}.container{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}} +/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/apps/nps/0.29.21/web/static/css/datatables.css b/apps/nps/0.29.21/web/static/css/datatables.css new file mode 100644 index 0000000..eb50e40 --- /dev/null +++ b/apps/nps/0.29.21/web/static/css/datatables.css @@ -0,0 +1,14921 @@ +/* + * This combined file was created by the DataTables downloader builder: + * https://datatables.net/download + * + * To rebuild or modify this file with the latest versions of the included + * software please visit: + * https://datatables.net/download/#bs5-5.3.0/jq-3.7.0/jszip-3.10.1/pdfmake-0.2.7/dt-2.1.8/af-2.7.0/b-3.1.2/b-colvis-3.1.2/b-html5-3.1.2/b-print-3.1.2/cr-2.0.4/date-1.5.4/fc-5.0.4/fh-4.0.1/kt-2.12.1/r-3.0.3/rg-1.5.0/rr-1.5.0/sc-2.4.3/sb-1.8.1/sp-2.3.3/sl-2.1.0/sr-1.4.1 + * + * Included libraries: + * Bootstrap 5 5.3.0, jQuery 3 3.7.0, JSZip 3.10.1, pdfmake 0.2.7, DataTables 2.1.8, AutoFill 2.7.0, Buttons 3.1.2, Column visibility 3.1.2, HTML5 export 3.1.2, Print view 3.1.2, ColReorder 2.0.4, DateTime 1.5.4, FixedColumns 5.0.4, FixedHeader 4.0.1, KeyTable 2.12.1, Responsive 3.0.3, RowGroup 1.5.0, RowReorder 1.5.0, Scroller 2.4.3, SearchBuilder 1.8.1, SearchPanes 2.3.3, Select 2.1.0, StateRestore 1.4.1 + */ + +@charset "UTF-8"; +/*! + * Bootstrap v5.3.0 (https://getbootstrap.com/) + * Copyright 2011-2023 The Bootstrap Authors + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */ +:root, +[data-bs-theme=light] { + --bs-blue: #0d6efd; + --bs-indigo: #6610f2; + --bs-purple: #6f42c1; + --bs-pink: #d63384; + --bs-red: #dc3545; + --bs-orange: #fd7e14; + --bs-yellow: #ffc107; + --bs-green: #198754; + --bs-teal: #20c997; + --bs-cyan: #0dcaf0; + --bs-black: #000; + --bs-white: #fff; + --bs-gray: #6c757d; + --bs-gray-dark: #343a40; + --bs-gray-100: #f8f9fa; + --bs-gray-200: #e9ecef; + --bs-gray-300: #dee2e6; + --bs-gray-400: #ced4da; + --bs-gray-500: #adb5bd; + --bs-gray-600: #6c757d; + --bs-gray-700: #495057; + --bs-gray-800: #343a40; + --bs-gray-900: #212529; + --bs-primary: #0d6efd; + --bs-secondary: #6c757d; + --bs-success: #198754; + --bs-info: #0dcaf0; + --bs-warning: #ffc107; + --bs-danger: #dc3545; + --bs-light: #f8f9fa; + --bs-dark: #212529; + --bs-primary-rgb: 13, 110, 253; + --bs-secondary-rgb: 108, 117, 125; + --bs-success-rgb: 25, 135, 84; + --bs-info-rgb: 13, 202, 240; + --bs-warning-rgb: 255, 193, 7; + --bs-danger-rgb: 220, 53, 69; + --bs-light-rgb: 248, 249, 250; + --bs-dark-rgb: 33, 37, 41; + --bs-primary-text-emphasis: #052c65; + --bs-secondary-text-emphasis: #2b2f32; + --bs-success-text-emphasis: #0a3622; + --bs-info-text-emphasis: #055160; + --bs-warning-text-emphasis: #664d03; + --bs-danger-text-emphasis: #58151c; + --bs-light-text-emphasis: #495057; + --bs-dark-text-emphasis: #495057; + --bs-primary-bg-subtle: #cfe2ff; + --bs-secondary-bg-subtle: #e2e3e5; + --bs-success-bg-subtle: #d1e7dd; + --bs-info-bg-subtle: #cff4fc; + --bs-warning-bg-subtle: #fff3cd; + --bs-danger-bg-subtle: #f8d7da; + --bs-light-bg-subtle: #fcfcfd; + --bs-dark-bg-subtle: #ced4da; + --bs-primary-border-subtle: #9ec5fe; + --bs-secondary-border-subtle: #c4c8cb; + --bs-success-border-subtle: #a3cfbb; + --bs-info-border-subtle: #9eeaf9; + --bs-warning-border-subtle: #ffe69c; + --bs-danger-border-subtle: #f1aeb5; + --bs-light-border-subtle: #e9ecef; + --bs-dark-border-subtle: #adb5bd; + --bs-white-rgb: 255, 255, 255; + --bs-black-rgb: 0, 0, 0; + --bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; + --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0)); + --bs-body-font-family: var(--bs-font-sans-serif); + --bs-body-font-size: 1rem; + --bs-body-font-weight: 400; + --bs-body-line-height: 1.5; + --bs-body-color: #212529; + --bs-body-color-rgb: 33, 37, 41; + --bs-body-bg: #fff; + --bs-body-bg-rgb: 255, 255, 255; + --bs-emphasis-color: #000; + --bs-emphasis-color-rgb: 0, 0, 0; + --bs-secondary-color: rgba(33, 37, 41, 0.75); + --bs-secondary-color-rgb: 33, 37, 41; + --bs-secondary-bg: #e9ecef; + --bs-secondary-bg-rgb: 233, 236, 239; + --bs-tertiary-color: rgba(33, 37, 41, 0.5); + --bs-tertiary-color-rgb: 33, 37, 41; + --bs-tertiary-bg: #f8f9fa; + --bs-tertiary-bg-rgb: 248, 249, 250; + --bs-heading-color: inherit; + --bs-link-color: #0d6efd; + --bs-link-color-rgb: 13, 110, 253; + --bs-link-decoration: underline; + --bs-link-hover-color: #0a58ca; + --bs-link-hover-color-rgb: 10, 88, 202; + --bs-code-color: #d63384; + --bs-highlight-bg: #fff3cd; + --bs-border-width: 1px; + --bs-border-style: solid; + --bs-border-color: #dee2e6; + --bs-border-color-translucent: rgba(0, 0, 0, 0.175); + --bs-border-radius: 0.375rem; + --bs-border-radius-sm: 0.25rem; + --bs-border-radius-lg: 0.5rem; + --bs-border-radius-xl: 1rem; + --bs-border-radius-xxl: 2rem; + --bs-border-radius-2xl: var(--bs-border-radius-xxl); + --bs-border-radius-pill: 50rem; + --bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15); + --bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075); + --bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175); + --bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075); + --bs-focus-ring-width: 0.25rem; + --bs-focus-ring-opacity: 0.25; + --bs-focus-ring-color: rgba(13, 110, 253, 0.25); + --bs-form-valid-color: #198754; + --bs-form-valid-border-color: #198754; + --bs-form-invalid-color: #dc3545; + --bs-form-invalid-border-color: #dc3545; +} + +[data-bs-theme=dark] { + color-scheme: dark; + --bs-body-color: #adb5bd; + --bs-body-color-rgb: 173, 181, 189; + --bs-body-bg: #212529; + --bs-body-bg-rgb: 33, 37, 41; + --bs-emphasis-color: #fff; + --bs-emphasis-color-rgb: 255, 255, 255; + --bs-secondary-color: rgba(173, 181, 189, 0.75); + --bs-secondary-color-rgb: 173, 181, 189; + --bs-secondary-bg: #343a40; + --bs-secondary-bg-rgb: 52, 58, 64; + --bs-tertiary-color: rgba(173, 181, 189, 0.5); + --bs-tertiary-color-rgb: 173, 181, 189; + --bs-tertiary-bg: #2b3035; + --bs-tertiary-bg-rgb: 43, 48, 53; + --bs-primary-text-emphasis: #6ea8fe; + --bs-secondary-text-emphasis: #a7acb1; + --bs-success-text-emphasis: #75b798; + --bs-info-text-emphasis: #6edff6; + --bs-warning-text-emphasis: #ffda6a; + --bs-danger-text-emphasis: #ea868f; + --bs-light-text-emphasis: #f8f9fa; + --bs-dark-text-emphasis: #dee2e6; + --bs-primary-bg-subtle: #031633; + --bs-secondary-bg-subtle: #161719; + --bs-success-bg-subtle: #051b11; + --bs-info-bg-subtle: #032830; + --bs-warning-bg-subtle: #332701; + --bs-danger-bg-subtle: #2c0b0e; + --bs-light-bg-subtle: #343a40; + --bs-dark-bg-subtle: #1a1d20; + --bs-primary-border-subtle: #084298; + --bs-secondary-border-subtle: #41464b; + --bs-success-border-subtle: #0f5132; + --bs-info-border-subtle: #087990; + --bs-warning-border-subtle: #997404; + --bs-danger-border-subtle: #842029; + --bs-light-border-subtle: #495057; + --bs-dark-border-subtle: #343a40; + --bs-heading-color: inherit; + --bs-link-color: #6ea8fe; + --bs-link-hover-color: #8bb9fe; + --bs-link-color-rgb: 110, 168, 254; + --bs-link-hover-color-rgb: 139, 185, 254; + --bs-code-color: #e685b5; + --bs-border-color: #495057; + --bs-border-color-translucent: rgba(255, 255, 255, 0.15); + --bs-form-valid-color: #75b798; + --bs-form-valid-border-color: #75b798; + --bs-form-invalid-color: #ea868f; + --bs-form-invalid-border-color: #ea868f; +} + +*, +*::before, +*::after { + box-sizing: border-box; +} + +@media (prefers-reduced-motion: no-preference) { + :root { + scroll-behavior: smooth; + } +} + +body { + margin: 0; + font-family: var(--bs-body-font-family); + font-size: var(--bs-body-font-size); + font-weight: var(--bs-body-font-weight); + line-height: var(--bs-body-line-height); + color: var(--bs-body-color); + text-align: var(--bs-body-text-align); + background-color: var(--bs-body-bg); + -webkit-text-size-adjust: 100%; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} + +hr { + margin: 1rem 0; + color: inherit; + border: 0; + border-top: var(--bs-border-width) solid; + opacity: 0.25; +} + +h6, .h6, h5, .h5, h4, .h4, h3, .h3, h2, .h2, h1, .h1 { + margin-top: 0; + margin-bottom: 0.5rem; + font-weight: 500; + line-height: 1.2; + color: var(--bs-heading-color); +} + +h1, .h1 { + font-size: calc(1.375rem + 1.5vw); +} +@media (min-width: 1200px) { + h1, .h1 { + font-size: 2.5rem; + } +} + +h2, .h2 { + font-size: calc(1.325rem + 0.9vw); +} +@media (min-width: 1200px) { + h2, .h2 { + font-size: 2rem; + } +} + +h3, .h3 { + font-size: calc(1.3rem + 0.6vw); +} +@media (min-width: 1200px) { + h3, .h3 { + font-size: 1.75rem; + } +} + +h4, .h4 { + font-size: calc(1.275rem + 0.3vw); +} +@media (min-width: 1200px) { + h4, .h4 { + font-size: 1.5rem; + } +} + +h5, .h5 { + font-size: 1.25rem; +} + +h6, .h6 { + font-size: 1rem; +} + +p { + margin-top: 0; + margin-bottom: 1rem; +} + +abbr[title] { + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; + cursor: help; + -webkit-text-decoration-skip-ink: none; + text-decoration-skip-ink: none; +} + +address { + margin-bottom: 1rem; + font-style: normal; + line-height: inherit; +} + +ol, +ul { + padding-left: 2rem; +} + +ol, +ul, +dl { + margin-top: 0; + margin-bottom: 1rem; +} + +ol ol, +ul ul, +ol ul, +ul ol { + margin-bottom: 0; +} + +dt { + font-weight: 700; +} + +dd { + margin-bottom: 0.5rem; + margin-left: 0; +} + +blockquote { + margin: 0 0 1rem; +} + +b, +strong { + font-weight: bolder; +} + +small, .small { + font-size: 0.875em; +} + +mark, .mark { + padding: 0.1875em; + background-color: var(--bs-highlight-bg); +} + +sub, +sup { + position: relative; + font-size: 0.75em; + line-height: 0; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +a { + color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1)); + text-decoration: underline; +} +a:hover { + --bs-link-color-rgb: var(--bs-link-hover-color-rgb); +} + +a:not([href]):not([class]), a:not([href]):not([class]):hover { + color: inherit; + text-decoration: none; +} + +pre, +code, +kbd, +samp { + font-family: var(--bs-font-monospace); + font-size: 1em; +} + +pre { + display: block; + margin-top: 0; + margin-bottom: 1rem; + overflow: auto; + font-size: 0.875em; +} +pre code { + font-size: inherit; + color: inherit; + word-break: normal; +} + +code { + font-size: 0.875em; + color: var(--bs-code-color); + word-wrap: break-word; +} +a > code { + color: inherit; +} + +kbd { + padding: 0.1875rem 0.375rem; + font-size: 0.875em; + color: var(--bs-body-bg); + background-color: var(--bs-body-color); + border-radius: 0.25rem; +} +kbd kbd { + padding: 0; + font-size: 1em; +} + +figure { + margin: 0 0 1rem; +} + +img, +svg { + vertical-align: middle; +} + +table { + caption-side: bottom; + border-collapse: collapse; +} + +caption { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + color: var(--bs-secondary-color); + text-align: left; +} + +th { + text-align: inherit; + text-align: -webkit-match-parent; +} + +thead, +tbody, +tfoot, +tr, +td, +th { + border-color: inherit; + border-style: solid; + border-width: 0; +} + +label { + display: inline-block; +} + +button { + border-radius: 0; +} + +button:focus:not(:focus-visible) { + outline: 0; +} + +input, +button, +select, +optgroup, +textarea { + margin: 0; + font-family: inherit; + font-size: inherit; + line-height: inherit; +} + +button, +select { + text-transform: none; +} + +[role=button] { + cursor: pointer; +} + +select { + word-wrap: normal; +} +select:disabled { + opacity: 1; +} + +[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator { + display: none !important; +} + +button, +[type=button], +[type=reset], +[type=submit] { + -webkit-appearance: button; +} +button:not(:disabled), +[type=button]:not(:disabled), +[type=reset]:not(:disabled), +[type=submit]:not(:disabled) { + cursor: pointer; +} + +::-moz-focus-inner { + padding: 0; + border-style: none; +} + +textarea { + resize: vertical; +} + +fieldset { + min-width: 0; + padding: 0; + margin: 0; + border: 0; +} + +legend { + float: left; + width: 100%; + padding: 0; + margin-bottom: 0.5rem; + font-size: calc(1.275rem + 0.3vw); + line-height: inherit; +} +@media (min-width: 1200px) { + legend { + font-size: 1.5rem; + } +} +legend + * { + clear: left; +} + +::-webkit-datetime-edit-fields-wrapper, +::-webkit-datetime-edit-text, +::-webkit-datetime-edit-minute, +::-webkit-datetime-edit-hour-field, +::-webkit-datetime-edit-day-field, +::-webkit-datetime-edit-month-field, +::-webkit-datetime-edit-year-field { + padding: 0; +} + +::-webkit-inner-spin-button { + height: auto; +} + +[type=search] { + outline-offset: -2px; + -webkit-appearance: textfield; +} + +/* rtl:raw: +[type="tel"], +[type="url"], +[type="email"], +[type="number"] { + direction: ltr; +} +*/ +::-webkit-search-decoration { + -webkit-appearance: none; +} + +::-webkit-color-swatch-wrapper { + padding: 0; +} + +::-webkit-file-upload-button { + font: inherit; + -webkit-appearance: button; +} + +::file-selector-button { + font: inherit; + -webkit-appearance: button; +} + +output { + display: inline-block; +} + +iframe { + border: 0; +} + +summary { + display: list-item; + cursor: pointer; +} + +progress { + vertical-align: baseline; +} + +[hidden] { + display: none !important; +} + +.lead { + font-size: 1.25rem; + font-weight: 300; +} + +.display-1 { + font-size: calc(1.625rem + 4.5vw); + font-weight: 300; + line-height: 1.2; +} +@media (min-width: 1200px) { + .display-1 { + font-size: 5rem; + } +} + +.display-2 { + font-size: calc(1.575rem + 3.9vw); + font-weight: 300; + line-height: 1.2; +} +@media (min-width: 1200px) { + .display-2 { + font-size: 4.5rem; + } +} + +.display-3 { + font-size: calc(1.525rem + 3.3vw); + font-weight: 300; + line-height: 1.2; +} +@media (min-width: 1200px) { + .display-3 { + font-size: 4rem; + } +} + +.display-4 { + font-size: calc(1.475rem + 2.7vw); + font-weight: 300; + line-height: 1.2; +} +@media (min-width: 1200px) { + .display-4 { + font-size: 3.5rem; + } +} + +.display-5 { + font-size: calc(1.425rem + 2.1vw); + font-weight: 300; + line-height: 1.2; +} +@media (min-width: 1200px) { + .display-5 { + font-size: 3rem; + } +} + +.display-6 { + font-size: calc(1.375rem + 1.5vw); + font-weight: 300; + line-height: 1.2; +} +@media (min-width: 1200px) { + .display-6 { + font-size: 2.5rem; + } +} + +.list-unstyled { + padding-left: 0; + list-style: none; +} + +.list-inline { + padding-left: 0; + list-style: none; +} + +.list-inline-item { + display: inline-block; +} +.list-inline-item:not(:last-child) { + margin-right: 0.5rem; +} + +.initialism { + font-size: 0.875em; + text-transform: uppercase; +} + +.blockquote { + margin-bottom: 1rem; + font-size: 1.25rem; +} +.blockquote > :last-child { + margin-bottom: 0; +} + +.blockquote-footer { + margin-top: -1rem; + margin-bottom: 1rem; + font-size: 0.875em; + color: #6c757d; +} +.blockquote-footer::before { + content: "— "; +} + +.img-fluid { + max-width: 100%; + height: auto; +} + +.img-thumbnail { + padding: 0.25rem; + background-color: var(--bs-body-bg); + border: var(--bs-border-width) solid var(--bs-border-color); + border-radius: var(--bs-border-radius); + max-width: 100%; + height: auto; +} + +.figure { + display: inline-block; +} + +.figure-img { + margin-bottom: 0.5rem; + line-height: 1; +} + +.figure-caption { + font-size: 0.875em; + color: var(--bs-secondary-color); +} + +.container, +.container-fluid, +.container-xxl, +.container-xl, +.container-lg, +.container-md, +.container-sm { + --bs-gutter-x: 1.5rem; + --bs-gutter-y: 0; + width: 100%; + padding-right: calc(var(--bs-gutter-x) * 0.5); + padding-left: calc(var(--bs-gutter-x) * 0.5); + margin-right: auto; + margin-left: auto; +} + +@media (min-width: 576px) { + .container-sm, .container { + max-width: 540px; + } +} +@media (min-width: 768px) { + .container-md, .container-sm, .container { + max-width: 720px; + } +} +@media (min-width: 992px) { + .container-lg, .container-md, .container-sm, .container { + max-width: 960px; + } +} +@media (min-width: 1200px) { + .container-xl, .container-lg, .container-md, .container-sm, .container { + max-width: 1140px; + } +} +@media (min-width: 1400px) { + .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container { + max-width: 1320px; + } +} +:root { + --bs-breakpoint-xs: 0; + --bs-breakpoint-sm: 576px; + --bs-breakpoint-md: 768px; + --bs-breakpoint-lg: 992px; + --bs-breakpoint-xl: 1200px; + --bs-breakpoint-xxl: 1400px; +} + +.row { + --bs-gutter-x: 1.5rem; + --bs-gutter-y: 0; + display: flex; + flex-wrap: wrap; + margin-top: calc(-1 * var(--bs-gutter-y)); + margin-right: calc(-0.5 * var(--bs-gutter-x)); + margin-left: calc(-0.5 * var(--bs-gutter-x)); +} +.row > * { + flex-shrink: 0; + width: 100%; + max-width: 100%; + padding-right: calc(var(--bs-gutter-x) * 0.5); + padding-left: calc(var(--bs-gutter-x) * 0.5); + margin-top: var(--bs-gutter-y); +} + +.col { + flex: 1 0 0%; +} + +.row-cols-auto > * { + flex: 0 0 auto; + width: auto; +} + +.row-cols-1 > * { + flex: 0 0 auto; + width: 100%; +} + +.row-cols-2 > * { + flex: 0 0 auto; + width: 50%; +} + +.row-cols-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; +} + +.row-cols-4 > * { + flex: 0 0 auto; + width: 25%; +} + +.row-cols-5 > * { + flex: 0 0 auto; + width: 20%; +} + +.row-cols-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; +} + +.col-auto { + flex: 0 0 auto; + width: auto; +} + +.col-1 { + flex: 0 0 auto; + width: 8.33333333%; +} + +.col-2 { + flex: 0 0 auto; + width: 16.66666667%; +} + +.col-3 { + flex: 0 0 auto; + width: 25%; +} + +.col-4 { + flex: 0 0 auto; + width: 33.33333333%; +} + +.col-5 { + flex: 0 0 auto; + width: 41.66666667%; +} + +.col-6 { + flex: 0 0 auto; + width: 50%; +} + +.col-7 { + flex: 0 0 auto; + width: 58.33333333%; +} + +.col-8 { + flex: 0 0 auto; + width: 66.66666667%; +} + +.col-9 { + flex: 0 0 auto; + width: 75%; +} + +.col-10 { + flex: 0 0 auto; + width: 83.33333333%; +} + +.col-11 { + flex: 0 0 auto; + width: 91.66666667%; +} + +.col-12 { + flex: 0 0 auto; + width: 100%; +} + +.offset-1 { + margin-left: 8.33333333%; +} + +.offset-2 { + margin-left: 16.66666667%; +} + +.offset-3 { + margin-left: 25%; +} + +.offset-4 { + margin-left: 33.33333333%; +} + +.offset-5 { + margin-left: 41.66666667%; +} + +.offset-6 { + margin-left: 50%; +} + +.offset-7 { + margin-left: 58.33333333%; +} + +.offset-8 { + margin-left: 66.66666667%; +} + +.offset-9 { + margin-left: 75%; +} + +.offset-10 { + margin-left: 83.33333333%; +} + +.offset-11 { + margin-left: 91.66666667%; +} + +.g-0, +.gx-0 { + --bs-gutter-x: 0; +} + +.g-0, +.gy-0 { + --bs-gutter-y: 0; +} + +.g-1, +.gx-1 { + --bs-gutter-x: 0.25rem; +} + +.g-1, +.gy-1 { + --bs-gutter-y: 0.25rem; +} + +.g-2, +.gx-2 { + --bs-gutter-x: 0.5rem; +} + +.g-2, +.gy-2 { + --bs-gutter-y: 0.5rem; +} + +.g-3, +.gx-3 { + --bs-gutter-x: 1rem; +} + +.g-3, +.gy-3 { + --bs-gutter-y: 1rem; +} + +.g-4, +.gx-4 { + --bs-gutter-x: 1.5rem; +} + +.g-4, +.gy-4 { + --bs-gutter-y: 1.5rem; +} + +.g-5, +.gx-5 { + --bs-gutter-x: 3rem; +} + +.g-5, +.gy-5 { + --bs-gutter-y: 3rem; +} + +@media (min-width: 576px) { + .col-sm { + flex: 1 0 0%; + } + .row-cols-sm-auto > * { + flex: 0 0 auto; + width: auto; + } + .row-cols-sm-1 > * { + flex: 0 0 auto; + width: 100%; + } + .row-cols-sm-2 > * { + flex: 0 0 auto; + width: 50%; + } + .row-cols-sm-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + .row-cols-sm-4 > * { + flex: 0 0 auto; + width: 25%; + } + .row-cols-sm-5 > * { + flex: 0 0 auto; + width: 20%; + } + .row-cols-sm-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + .col-sm-auto { + flex: 0 0 auto; + width: auto; + } + .col-sm-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-sm-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-sm-3 { + flex: 0 0 auto; + width: 25%; + } + .col-sm-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-sm-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-sm-6 { + flex: 0 0 auto; + width: 50%; + } + .col-sm-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-sm-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-sm-9 { + flex: 0 0 auto; + width: 75%; + } + .col-sm-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-sm-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-sm-12 { + flex: 0 0 auto; + width: 100%; + } + .offset-sm-0 { + margin-left: 0; + } + .offset-sm-1 { + margin-left: 8.33333333%; + } + .offset-sm-2 { + margin-left: 16.66666667%; + } + .offset-sm-3 { + margin-left: 25%; + } + .offset-sm-4 { + margin-left: 33.33333333%; + } + .offset-sm-5 { + margin-left: 41.66666667%; + } + .offset-sm-6 { + margin-left: 50%; + } + .offset-sm-7 { + margin-left: 58.33333333%; + } + .offset-sm-8 { + margin-left: 66.66666667%; + } + .offset-sm-9 { + margin-left: 75%; + } + .offset-sm-10 { + margin-left: 83.33333333%; + } + .offset-sm-11 { + margin-left: 91.66666667%; + } + .g-sm-0, + .gx-sm-0 { + --bs-gutter-x: 0; + } + .g-sm-0, + .gy-sm-0 { + --bs-gutter-y: 0; + } + .g-sm-1, + .gx-sm-1 { + --bs-gutter-x: 0.25rem; + } + .g-sm-1, + .gy-sm-1 { + --bs-gutter-y: 0.25rem; + } + .g-sm-2, + .gx-sm-2 { + --bs-gutter-x: 0.5rem; + } + .g-sm-2, + .gy-sm-2 { + --bs-gutter-y: 0.5rem; + } + .g-sm-3, + .gx-sm-3 { + --bs-gutter-x: 1rem; + } + .g-sm-3, + .gy-sm-3 { + --bs-gutter-y: 1rem; + } + .g-sm-4, + .gx-sm-4 { + --bs-gutter-x: 1.5rem; + } + .g-sm-4, + .gy-sm-4 { + --bs-gutter-y: 1.5rem; + } + .g-sm-5, + .gx-sm-5 { + --bs-gutter-x: 3rem; + } + .g-sm-5, + .gy-sm-5 { + --bs-gutter-y: 3rem; + } +} +@media (min-width: 768px) { + .col-md { + flex: 1 0 0%; + } + .row-cols-md-auto > * { + flex: 0 0 auto; + width: auto; + } + .row-cols-md-1 > * { + flex: 0 0 auto; + width: 100%; + } + .row-cols-md-2 > * { + flex: 0 0 auto; + width: 50%; + } + .row-cols-md-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + .row-cols-md-4 > * { + flex: 0 0 auto; + width: 25%; + } + .row-cols-md-5 > * { + flex: 0 0 auto; + width: 20%; + } + .row-cols-md-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + .col-md-auto { + flex: 0 0 auto; + width: auto; + } + .col-md-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-md-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-md-3 { + flex: 0 0 auto; + width: 25%; + } + .col-md-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-md-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-md-6 { + flex: 0 0 auto; + width: 50%; + } + .col-md-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-md-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-md-9 { + flex: 0 0 auto; + width: 75%; + } + .col-md-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-md-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-md-12 { + flex: 0 0 auto; + width: 100%; + } + .offset-md-0 { + margin-left: 0; + } + .offset-md-1 { + margin-left: 8.33333333%; + } + .offset-md-2 { + margin-left: 16.66666667%; + } + .offset-md-3 { + margin-left: 25%; + } + .offset-md-4 { + margin-left: 33.33333333%; + } + .offset-md-5 { + margin-left: 41.66666667%; + } + .offset-md-6 { + margin-left: 50%; + } + .offset-md-7 { + margin-left: 58.33333333%; + } + .offset-md-8 { + margin-left: 66.66666667%; + } + .offset-md-9 { + margin-left: 75%; + } + .offset-md-10 { + margin-left: 83.33333333%; + } + .offset-md-11 { + margin-left: 91.66666667%; + } + .g-md-0, + .gx-md-0 { + --bs-gutter-x: 0; + } + .g-md-0, + .gy-md-0 { + --bs-gutter-y: 0; + } + .g-md-1, + .gx-md-1 { + --bs-gutter-x: 0.25rem; + } + .g-md-1, + .gy-md-1 { + --bs-gutter-y: 0.25rem; + } + .g-md-2, + .gx-md-2 { + --bs-gutter-x: 0.5rem; + } + .g-md-2, + .gy-md-2 { + --bs-gutter-y: 0.5rem; + } + .g-md-3, + .gx-md-3 { + --bs-gutter-x: 1rem; + } + .g-md-3, + .gy-md-3 { + --bs-gutter-y: 1rem; + } + .g-md-4, + .gx-md-4 { + --bs-gutter-x: 1.5rem; + } + .g-md-4, + .gy-md-4 { + --bs-gutter-y: 1.5rem; + } + .g-md-5, + .gx-md-5 { + --bs-gutter-x: 3rem; + } + .g-md-5, + .gy-md-5 { + --bs-gutter-y: 3rem; + } +} +@media (min-width: 992px) { + .col-lg { + flex: 1 0 0%; + } + .row-cols-lg-auto > * { + flex: 0 0 auto; + width: auto; + } + .row-cols-lg-1 > * { + flex: 0 0 auto; + width: 100%; + } + .row-cols-lg-2 > * { + flex: 0 0 auto; + width: 50%; + } + .row-cols-lg-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + .row-cols-lg-4 > * { + flex: 0 0 auto; + width: 25%; + } + .row-cols-lg-5 > * { + flex: 0 0 auto; + width: 20%; + } + .row-cols-lg-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + .col-lg-auto { + flex: 0 0 auto; + width: auto; + } + .col-lg-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-lg-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-lg-3 { + flex: 0 0 auto; + width: 25%; + } + .col-lg-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-lg-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-lg-6 { + flex: 0 0 auto; + width: 50%; + } + .col-lg-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-lg-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-lg-9 { + flex: 0 0 auto; + width: 75%; + } + .col-lg-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-lg-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-lg-12 { + flex: 0 0 auto; + width: 100%; + } + .offset-lg-0 { + margin-left: 0; + } + .offset-lg-1 { + margin-left: 8.33333333%; + } + .offset-lg-2 { + margin-left: 16.66666667%; + } + .offset-lg-3 { + margin-left: 25%; + } + .offset-lg-4 { + margin-left: 33.33333333%; + } + .offset-lg-5 { + margin-left: 41.66666667%; + } + .offset-lg-6 { + margin-left: 50%; + } + .offset-lg-7 { + margin-left: 58.33333333%; + } + .offset-lg-8 { + margin-left: 66.66666667%; + } + .offset-lg-9 { + margin-left: 75%; + } + .offset-lg-10 { + margin-left: 83.33333333%; + } + .offset-lg-11 { + margin-left: 91.66666667%; + } + .g-lg-0, + .gx-lg-0 { + --bs-gutter-x: 0; + } + .g-lg-0, + .gy-lg-0 { + --bs-gutter-y: 0; + } + .g-lg-1, + .gx-lg-1 { + --bs-gutter-x: 0.25rem; + } + .g-lg-1, + .gy-lg-1 { + --bs-gutter-y: 0.25rem; + } + .g-lg-2, + .gx-lg-2 { + --bs-gutter-x: 0.5rem; + } + .g-lg-2, + .gy-lg-2 { + --bs-gutter-y: 0.5rem; + } + .g-lg-3, + .gx-lg-3 { + --bs-gutter-x: 1rem; + } + .g-lg-3, + .gy-lg-3 { + --bs-gutter-y: 1rem; + } + .g-lg-4, + .gx-lg-4 { + --bs-gutter-x: 1.5rem; + } + .g-lg-4, + .gy-lg-4 { + --bs-gutter-y: 1.5rem; + } + .g-lg-5, + .gx-lg-5 { + --bs-gutter-x: 3rem; + } + .g-lg-5, + .gy-lg-5 { + --bs-gutter-y: 3rem; + } +} +@media (min-width: 1200px) { + .col-xl { + flex: 1 0 0%; + } + .row-cols-xl-auto > * { + flex: 0 0 auto; + width: auto; + } + .row-cols-xl-1 > * { + flex: 0 0 auto; + width: 100%; + } + .row-cols-xl-2 > * { + flex: 0 0 auto; + width: 50%; + } + .row-cols-xl-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + .row-cols-xl-4 > * { + flex: 0 0 auto; + width: 25%; + } + .row-cols-xl-5 > * { + flex: 0 0 auto; + width: 20%; + } + .row-cols-xl-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + .col-xl-auto { + flex: 0 0 auto; + width: auto; + } + .col-xl-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-xl-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-xl-3 { + flex: 0 0 auto; + width: 25%; + } + .col-xl-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-xl-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-xl-6 { + flex: 0 0 auto; + width: 50%; + } + .col-xl-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-xl-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-xl-9 { + flex: 0 0 auto; + width: 75%; + } + .col-xl-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-xl-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-xl-12 { + flex: 0 0 auto; + width: 100%; + } + .offset-xl-0 { + margin-left: 0; + } + .offset-xl-1 { + margin-left: 8.33333333%; + } + .offset-xl-2 { + margin-left: 16.66666667%; + } + .offset-xl-3 { + margin-left: 25%; + } + .offset-xl-4 { + margin-left: 33.33333333%; + } + .offset-xl-5 { + margin-left: 41.66666667%; + } + .offset-xl-6 { + margin-left: 50%; + } + .offset-xl-7 { + margin-left: 58.33333333%; + } + .offset-xl-8 { + margin-left: 66.66666667%; + } + .offset-xl-9 { + margin-left: 75%; + } + .offset-xl-10 { + margin-left: 83.33333333%; + } + .offset-xl-11 { + margin-left: 91.66666667%; + } + .g-xl-0, + .gx-xl-0 { + --bs-gutter-x: 0; + } + .g-xl-0, + .gy-xl-0 { + --bs-gutter-y: 0; + } + .g-xl-1, + .gx-xl-1 { + --bs-gutter-x: 0.25rem; + } + .g-xl-1, + .gy-xl-1 { + --bs-gutter-y: 0.25rem; + } + .g-xl-2, + .gx-xl-2 { + --bs-gutter-x: 0.5rem; + } + .g-xl-2, + .gy-xl-2 { + --bs-gutter-y: 0.5rem; + } + .g-xl-3, + .gx-xl-3 { + --bs-gutter-x: 1rem; + } + .g-xl-3, + .gy-xl-3 { + --bs-gutter-y: 1rem; + } + .g-xl-4, + .gx-xl-4 { + --bs-gutter-x: 1.5rem; + } + .g-xl-4, + .gy-xl-4 { + --bs-gutter-y: 1.5rem; + } + .g-xl-5, + .gx-xl-5 { + --bs-gutter-x: 3rem; + } + .g-xl-5, + .gy-xl-5 { + --bs-gutter-y: 3rem; + } +} +@media (min-width: 1400px) { + .col-xxl { + flex: 1 0 0%; + } + .row-cols-xxl-auto > * { + flex: 0 0 auto; + width: auto; + } + .row-cols-xxl-1 > * { + flex: 0 0 auto; + width: 100%; + } + .row-cols-xxl-2 > * { + flex: 0 0 auto; + width: 50%; + } + .row-cols-xxl-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + .row-cols-xxl-4 > * { + flex: 0 0 auto; + width: 25%; + } + .row-cols-xxl-5 > * { + flex: 0 0 auto; + width: 20%; + } + .row-cols-xxl-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + .col-xxl-auto { + flex: 0 0 auto; + width: auto; + } + .col-xxl-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .col-xxl-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .col-xxl-3 { + flex: 0 0 auto; + width: 25%; + } + .col-xxl-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .col-xxl-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .col-xxl-6 { + flex: 0 0 auto; + width: 50%; + } + .col-xxl-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .col-xxl-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .col-xxl-9 { + flex: 0 0 auto; + width: 75%; + } + .col-xxl-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .col-xxl-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .col-xxl-12 { + flex: 0 0 auto; + width: 100%; + } + .offset-xxl-0 { + margin-left: 0; + } + .offset-xxl-1 { + margin-left: 8.33333333%; + } + .offset-xxl-2 { + margin-left: 16.66666667%; + } + .offset-xxl-3 { + margin-left: 25%; + } + .offset-xxl-4 { + margin-left: 33.33333333%; + } + .offset-xxl-5 { + margin-left: 41.66666667%; + } + .offset-xxl-6 { + margin-left: 50%; + } + .offset-xxl-7 { + margin-left: 58.33333333%; + } + .offset-xxl-8 { + margin-left: 66.66666667%; + } + .offset-xxl-9 { + margin-left: 75%; + } + .offset-xxl-10 { + margin-left: 83.33333333%; + } + .offset-xxl-11 { + margin-left: 91.66666667%; + } + .g-xxl-0, + .gx-xxl-0 { + --bs-gutter-x: 0; + } + .g-xxl-0, + .gy-xxl-0 { + --bs-gutter-y: 0; + } + .g-xxl-1, + .gx-xxl-1 { + --bs-gutter-x: 0.25rem; + } + .g-xxl-1, + .gy-xxl-1 { + --bs-gutter-y: 0.25rem; + } + .g-xxl-2, + .gx-xxl-2 { + --bs-gutter-x: 0.5rem; + } + .g-xxl-2, + .gy-xxl-2 { + --bs-gutter-y: 0.5rem; + } + .g-xxl-3, + .gx-xxl-3 { + --bs-gutter-x: 1rem; + } + .g-xxl-3, + .gy-xxl-3 { + --bs-gutter-y: 1rem; + } + .g-xxl-4, + .gx-xxl-4 { + --bs-gutter-x: 1.5rem; + } + .g-xxl-4, + .gy-xxl-4 { + --bs-gutter-y: 1.5rem; + } + .g-xxl-5, + .gx-xxl-5 { + --bs-gutter-x: 3rem; + } + .g-xxl-5, + .gy-xxl-5 { + --bs-gutter-y: 3rem; + } +} +.table { + --bs-table-color-type: initial; + --bs-table-bg-type: initial; + --bs-table-color-state: initial; + --bs-table-bg-state: initial; + --bs-table-color: var(--bs-body-color); + --bs-table-bg: var(--bs-body-bg); + --bs-table-border-color: var(--bs-border-color); + --bs-table-accent-bg: transparent; + --bs-table-striped-color: var(--bs-body-color); + --bs-table-striped-bg: rgba(0, 0, 0, 0.05); + --bs-table-active-color: var(--bs-body-color); + --bs-table-active-bg: rgba(0, 0, 0, 0.1); + --bs-table-hover-color: var(--bs-body-color); + --bs-table-hover-bg: rgba(0, 0, 0, 0.075); + width: 100%; + margin-bottom: 1rem; + vertical-align: top; + border-color: var(--bs-table-border-color); +} +.table > :not(caption) > * > * { + padding: 0.5rem 0.5rem; + color: var(--bs-table-color-state, var(--bs-table-color-type, var(--bs-table-color))); + background-color: var(--bs-table-bg); + border-bottom-width: var(--bs-border-width); + box-shadow: inset 0 0 0 9999px var(--bs-table-bg-state, var(--bs-table-bg-type, var(--bs-table-accent-bg))); +} +.table > tbody { + vertical-align: inherit; +} +.table > thead { + vertical-align: bottom; +} + +.table-group-divider { + border-top: calc(var(--bs-border-width) * 2) solid currentcolor; +} + +.caption-top { + caption-side: top; +} + +.table-sm > :not(caption) > * > * { + padding: 0.25rem 0.25rem; +} + +.table-bordered > :not(caption) > * { + border-width: var(--bs-border-width) 0; +} +.table-bordered > :not(caption) > * > * { + border-width: 0 var(--bs-border-width); +} + +.table-borderless > :not(caption) > * > * { + border-bottom-width: 0; +} +.table-borderless > :not(:first-child) { + border-top-width: 0; +} + +.table-striped > tbody > tr:nth-of-type(odd) > * { + --bs-table-color-type: var(--bs-table-striped-color); + --bs-table-bg-type: var(--bs-table-striped-bg); +} + +.table-striped-columns > :not(caption) > tr > :nth-child(even) { + --bs-table-color-type: var(--bs-table-striped-color); + --bs-table-bg-type: var(--bs-table-striped-bg); +} + +.table-active { + --bs-table-color-state: var(--bs-table-active-color); + --bs-table-bg-state: var(--bs-table-active-bg); +} + +.table-hover > tbody > tr:hover > * { + --bs-table-color-state: var(--bs-table-hover-color); + --bs-table-bg-state: var(--bs-table-hover-bg); +} + +.table-primary { + --bs-table-color: #000; + --bs-table-bg: #cfe2ff; + --bs-table-border-color: #bacbe6; + --bs-table-striped-bg: #c5d7f2; + --bs-table-striped-color: #000; + --bs-table-active-bg: #bacbe6; + --bs-table-active-color: #000; + --bs-table-hover-bg: #bfd1ec; + --bs-table-hover-color: #000; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} + +.table-secondary { + --bs-table-color: #000; + --bs-table-bg: #e2e3e5; + --bs-table-border-color: #cbccce; + --bs-table-striped-bg: #d7d8da; + --bs-table-striped-color: #000; + --bs-table-active-bg: #cbccce; + --bs-table-active-color: #000; + --bs-table-hover-bg: #d1d2d4; + --bs-table-hover-color: #000; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} + +.table-success { + --bs-table-color: #000; + --bs-table-bg: #d1e7dd; + --bs-table-border-color: #bcd0c7; + --bs-table-striped-bg: #c7dbd2; + --bs-table-striped-color: #000; + --bs-table-active-bg: #bcd0c7; + --bs-table-active-color: #000; + --bs-table-hover-bg: #c1d6cc; + --bs-table-hover-color: #000; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} + +.table-info { + --bs-table-color: #000; + --bs-table-bg: #cff4fc; + --bs-table-border-color: #badce3; + --bs-table-striped-bg: #c5e8ef; + --bs-table-striped-color: #000; + --bs-table-active-bg: #badce3; + --bs-table-active-color: #000; + --bs-table-hover-bg: #bfe2e9; + --bs-table-hover-color: #000; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} + +.table-warning { + --bs-table-color: #000; + --bs-table-bg: #fff3cd; + --bs-table-border-color: #e6dbb9; + --bs-table-striped-bg: #f2e7c3; + --bs-table-striped-color: #000; + --bs-table-active-bg: #e6dbb9; + --bs-table-active-color: #000; + --bs-table-hover-bg: #ece1be; + --bs-table-hover-color: #000; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} + +.table-danger { + --bs-table-color: #000; + --bs-table-bg: #f8d7da; + --bs-table-border-color: #dfc2c4; + --bs-table-striped-bg: #eccccf; + --bs-table-striped-color: #000; + --bs-table-active-bg: #dfc2c4; + --bs-table-active-color: #000; + --bs-table-hover-bg: #e5c7ca; + --bs-table-hover-color: #000; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} + +.table-light { + --bs-table-color: #000; + --bs-table-bg: #f8f9fa; + --bs-table-border-color: #dfe0e1; + --bs-table-striped-bg: #ecedee; + --bs-table-striped-color: #000; + --bs-table-active-bg: #dfe0e1; + --bs-table-active-color: #000; + --bs-table-hover-bg: #e5e6e7; + --bs-table-hover-color: #000; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} + +.table-dark { + --bs-table-color: #fff; + --bs-table-bg: #212529; + --bs-table-border-color: #373b3e; + --bs-table-striped-bg: #2c3034; + --bs-table-striped-color: #fff; + --bs-table-active-bg: #373b3e; + --bs-table-active-color: #fff; + --bs-table-hover-bg: #323539; + --bs-table-hover-color: #fff; + color: var(--bs-table-color); + border-color: var(--bs-table-border-color); +} + +.table-responsive { + overflow-x: auto; + -webkit-overflow-scrolling: touch; +} + +@media (max-width: 575.98px) { + .table-responsive-sm { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} +@media (max-width: 767.98px) { + .table-responsive-md { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} +@media (max-width: 991.98px) { + .table-responsive-lg { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} +@media (max-width: 1199.98px) { + .table-responsive-xl { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} +@media (max-width: 1399.98px) { + .table-responsive-xxl { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} +.form-label { + margin-bottom: 0.5rem; +} + +.col-form-label { + padding-top: calc(0.375rem + var(--bs-border-width)); + padding-bottom: calc(0.375rem + var(--bs-border-width)); + margin-bottom: 0; + font-size: inherit; + line-height: 1.5; +} + +.col-form-label-lg { + padding-top: calc(0.5rem + var(--bs-border-width)); + padding-bottom: calc(0.5rem + var(--bs-border-width)); + font-size: 1.25rem; +} + +.col-form-label-sm { + padding-top: calc(0.25rem + var(--bs-border-width)); + padding-bottom: calc(0.25rem + var(--bs-border-width)); + font-size: 0.875rem; +} + +.form-text { + margin-top: 0.25rem; + font-size: 0.875em; + color: var(--bs-secondary-color); +} + +.form-control { + display: block; + width: 100%; + padding: 0.375rem 0.75rem; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: var(--bs-body-color); + background-color: var(--bs-body-bg); + background-clip: padding-box; + border: var(--bs-border-width) solid var(--bs-border-color); + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + border-radius: var(--bs-border-radius); + transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-control { + transition: none; + } +} +.form-control[type=file] { + overflow: hidden; +} +.form-control[type=file]:not(:disabled):not([readonly]) { + cursor: pointer; +} +.form-control:focus { + color: var(--bs-body-color); + background-color: var(--bs-body-bg); + border-color: #86b7fe; + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25); +} +.form-control::-webkit-date-and-time-value { + min-width: 85px; + height: 1.5em; + margin: 0; +} +.form-control::-webkit-datetime-edit { + display: block; + padding: 0; +} +.form-control::-moz-placeholder { + color: var(--bs-secondary-color); + opacity: 1; +} +.form-control::placeholder { + color: var(--bs-secondary-color); + opacity: 1; +} +.form-control:disabled { + background-color: var(--bs-secondary-bg); + opacity: 1; +} +.form-control::-webkit-file-upload-button { + padding: 0.375rem 0.75rem; + margin: -0.375rem -0.75rem; + -webkit-margin-end: 0.75rem; + margin-inline-end: 0.75rem; + color: var(--bs-body-color); + background-color: var(--bs-tertiary-bg); + pointer-events: none; + border-color: inherit; + border-style: solid; + border-width: 0; + border-inline-end-width: var(--bs-border-width); + border-radius: 0; + -webkit-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +.form-control::file-selector-button { + padding: 0.375rem 0.75rem; + margin: -0.375rem -0.75rem; + -webkit-margin-end: 0.75rem; + margin-inline-end: 0.75rem; + color: var(--bs-body-color); + background-color: var(--bs-tertiary-bg); + pointer-events: none; + border-color: inherit; + border-style: solid; + border-width: 0; + border-inline-end-width: var(--bs-border-width); + border-radius: 0; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-control::-webkit-file-upload-button { + -webkit-transition: none; + transition: none; + } + .form-control::file-selector-button { + transition: none; + } +} +.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button { + background-color: var(--bs-secondary-bg); +} +.form-control:hover:not(:disabled):not([readonly])::file-selector-button { + background-color: var(--bs-secondary-bg); +} + +.form-control-plaintext { + display: block; + width: 100%; + padding: 0.375rem 0; + margin-bottom: 0; + line-height: 1.5; + color: var(--bs-body-color); + background-color: transparent; + border: solid transparent; + border-width: var(--bs-border-width) 0; +} +.form-control-plaintext:focus { + outline: 0; +} +.form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg { + padding-right: 0; + padding-left: 0; +} + +.form-control-sm { + min-height: calc(1.5em + 0.5rem + calc(var(--bs-border-width) * 2)); + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + border-radius: var(--bs-border-radius-sm); +} +.form-control-sm::-webkit-file-upload-button { + padding: 0.25rem 0.5rem; + margin: -0.25rem -0.5rem; + -webkit-margin-end: 0.5rem; + margin-inline-end: 0.5rem; +} +.form-control-sm::file-selector-button { + padding: 0.25rem 0.5rem; + margin: -0.25rem -0.5rem; + -webkit-margin-end: 0.5rem; + margin-inline-end: 0.5rem; +} + +.form-control-lg { + min-height: calc(1.5em + 1rem + calc(var(--bs-border-width) * 2)); + padding: 0.5rem 1rem; + font-size: 1.25rem; + border-radius: var(--bs-border-radius-lg); +} +.form-control-lg::-webkit-file-upload-button { + padding: 0.5rem 1rem; + margin: -0.5rem -1rem; + -webkit-margin-end: 1rem; + margin-inline-end: 1rem; +} +.form-control-lg::file-selector-button { + padding: 0.5rem 1rem; + margin: -0.5rem -1rem; + -webkit-margin-end: 1rem; + margin-inline-end: 1rem; +} + +textarea.form-control { + min-height: calc(1.5em + 0.75rem + calc(var(--bs-border-width) * 2)); +} +textarea.form-control-sm { + min-height: calc(1.5em + 0.5rem + calc(var(--bs-border-width) * 2)); +} +textarea.form-control-lg { + min-height: calc(1.5em + 1rem + calc(var(--bs-border-width) * 2)); +} + +.form-control-color { + width: 3rem; + height: calc(1.5em + 0.75rem + calc(var(--bs-border-width) * 2)); + padding: 0.375rem; +} +.form-control-color:not(:disabled):not([readonly]) { + cursor: pointer; +} +.form-control-color::-moz-color-swatch { + border: 0 !important; + border-radius: var(--bs-border-radius); +} +.form-control-color::-webkit-color-swatch { + border: 0 !important; + border-radius: var(--bs-border-radius); +} +.form-control-color.form-control-sm { + height: calc(1.5em + 0.5rem + calc(var(--bs-border-width) * 2)); +} +.form-control-color.form-control-lg { + height: calc(1.5em + 1rem + calc(var(--bs-border-width) * 2)); +} + +.form-select { + --bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"); + display: block; + width: 100%; + padding: 0.375rem 2.25rem 0.375rem 0.75rem; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: var(--bs-body-color); + background-color: var(--bs-body-bg); + background-image: var(--bs-form-select-bg-img), var(--bs-form-select-bg-icon, none); + background-repeat: no-repeat; + background-position: right 0.75rem center; + background-size: 16px 12px; + border: var(--bs-border-width) solid var(--bs-border-color); + border-radius: var(--bs-border-radius); + transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} +@media (prefers-reduced-motion: reduce) { + .form-select { + transition: none; + } +} +.form-select:focus { + border-color: #86b7fe; + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25); +} +.form-select[multiple], .form-select[size]:not([size="1"]) { + padding-right: 0.75rem; + background-image: none; +} +.form-select:disabled { + background-color: var(--bs-secondary-bg); +} +.form-select:-moz-focusring { + color: transparent; + text-shadow: 0 0 0 var(--bs-body-color); +} + +.form-select-sm { + padding-top: 0.25rem; + padding-bottom: 0.25rem; + padding-left: 0.5rem; + font-size: 0.875rem; + border-radius: var(--bs-border-radius-sm); +} + +.form-select-lg { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + padding-left: 1rem; + font-size: 1.25rem; + border-radius: var(--bs-border-radius-lg); +} + +[data-bs-theme=dark] .form-select { + --bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23adb5bd' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"); +} + +.form-check { + display: block; + min-height: 1.5rem; + padding-left: 1.5em; + margin-bottom: 0.125rem; +} +.form-check .form-check-input { + float: left; + margin-left: -1.5em; +} + +.form-check-reverse { + padding-right: 1.5em; + padding-left: 0; + text-align: right; +} +.form-check-reverse .form-check-input { + float: right; + margin-right: -1.5em; + margin-left: 0; +} + +.form-check-input { + --bs-form-check-bg: var(--bs-body-bg); + width: 1em; + height: 1em; + margin-top: 0.25em; + vertical-align: top; + background-color: var(--bs-form-check-bg); + background-image: var(--bs-form-check-bg-image); + background-repeat: no-repeat; + background-position: center; + background-size: contain; + border: var(--bs-border-width) solid var(--bs-border-color); + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + -webkit-print-color-adjust: exact; + color-adjust: exact; + print-color-adjust: exact; +} +.form-check-input[type=checkbox] { + border-radius: 0.25em; +} +.form-check-input[type=radio] { + border-radius: 50%; +} +.form-check-input:active { + filter: brightness(90%); +} +.form-check-input:focus { + border-color: #86b7fe; + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25); +} +.form-check-input:checked { + background-color: #0d6efd; + border-color: #0d6efd; +} +.form-check-input:checked[type=checkbox] { + --bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3e%3c/svg%3e"); +} +.form-check-input:checked[type=radio] { + --bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e"); +} +.form-check-input[type=checkbox]:indeterminate { + background-color: #0d6efd; + border-color: #0d6efd; + --bs-form-check-bg-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e"); +} +.form-check-input:disabled { + pointer-events: none; + filter: none; + opacity: 0.5; +} +.form-check-input[disabled] ~ .form-check-label, .form-check-input:disabled ~ .form-check-label { + cursor: default; + opacity: 0.5; +} + +.form-switch { + padding-left: 2.5em; +} +.form-switch .form-check-input { + --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e"); + width: 2em; + margin-left: -2.5em; + background-image: var(--bs-form-switch-bg); + background-position: left center; + border-radius: 2em; + transition: background-position 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-switch .form-check-input { + transition: none; + } +} +.form-switch .form-check-input:focus { + --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%2386b7fe'/%3e%3c/svg%3e"); +} +.form-switch .form-check-input:checked { + background-position: right center; + --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e"); +} +.form-switch.form-check-reverse { + padding-right: 2.5em; + padding-left: 0; +} +.form-switch.form-check-reverse .form-check-input { + margin-right: -2.5em; + margin-left: 0; +} + +.form-check-inline { + display: inline-block; + margin-right: 1rem; +} + +.btn-check { + position: absolute; + clip: rect(0, 0, 0, 0); + pointer-events: none; +} +.btn-check[disabled] + .btn, .btn-check:disabled + .btn { + pointer-events: none; + filter: none; + opacity: 0.65; +} + +[data-bs-theme=dark] .form-switch .form-check-input:not(:checked):not(:focus) { + --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%28255, 255, 255, 0.25%29'/%3e%3c/svg%3e"); +} + +.form-range { + width: 100%; + height: 1.5rem; + padding: 0; + background-color: transparent; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; +} +.form-range:focus { + outline: 0; +} +.form-range:focus::-webkit-slider-thumb { + box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(13, 110, 253, 0.25); +} +.form-range:focus::-moz-range-thumb { + box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(13, 110, 253, 0.25); +} +.form-range::-moz-focus-outer { + border: 0; +} +.form-range::-webkit-slider-thumb { + width: 1rem; + height: 1rem; + margin-top: -0.25rem; + background-color: #0d6efd; + border: 0; + border-radius: 1rem; + -webkit-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + -webkit-appearance: none; + appearance: none; +} +@media (prefers-reduced-motion: reduce) { + .form-range::-webkit-slider-thumb { + -webkit-transition: none; + transition: none; + } +} +.form-range::-webkit-slider-thumb:active { + background-color: #b6d4fe; +} +.form-range::-webkit-slider-runnable-track { + width: 100%; + height: 0.5rem; + color: transparent; + cursor: pointer; + background-color: var(--bs-tertiary-bg); + border-color: transparent; + border-radius: 1rem; +} +.form-range::-moz-range-thumb { + width: 1rem; + height: 1rem; + background-color: #0d6efd; + border: 0; + border-radius: 1rem; + -moz-transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + -moz-appearance: none; + appearance: none; +} +@media (prefers-reduced-motion: reduce) { + .form-range::-moz-range-thumb { + -moz-transition: none; + transition: none; + } +} +.form-range::-moz-range-thumb:active { + background-color: #b6d4fe; +} +.form-range::-moz-range-track { + width: 100%; + height: 0.5rem; + color: transparent; + cursor: pointer; + background-color: var(--bs-tertiary-bg); + border-color: transparent; + border-radius: 1rem; +} +.form-range:disabled { + pointer-events: none; +} +.form-range:disabled::-webkit-slider-thumb { + background-color: var(--bs-secondary-color); +} +.form-range:disabled::-moz-range-thumb { + background-color: var(--bs-secondary-color); +} + +.form-floating { + position: relative; +} +.form-floating > .form-control, +.form-floating > .form-control-plaintext, +.form-floating > .form-select { + height: calc(3.5rem + calc(var(--bs-border-width) * 2)); + min-height: calc(3.5rem + calc(var(--bs-border-width) * 2)); + line-height: 1.25; +} +.form-floating > label { + position: absolute; + top: 0; + left: 0; + z-index: 2; + height: 100%; + padding: 1rem 0.75rem; + overflow: hidden; + text-align: start; + text-overflow: ellipsis; + white-space: nowrap; + pointer-events: none; + border: var(--bs-border-width) solid transparent; + transform-origin: 0 0; + transition: opacity 0.1s ease-in-out, transform 0.1s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-floating > label { + transition: none; + } +} +.form-floating > .form-control, +.form-floating > .form-control-plaintext { + padding: 1rem 0.75rem; +} +.form-floating > .form-control::-moz-placeholder, .form-floating > .form-control-plaintext::-moz-placeholder { + color: transparent; +} +.form-floating > .form-control::placeholder, +.form-floating > .form-control-plaintext::placeholder { + color: transparent; +} +.form-floating > .form-control:not(:-moz-placeholder-shown), .form-floating > .form-control-plaintext:not(:-moz-placeholder-shown) { + padding-top: 1.625rem; + padding-bottom: 0.625rem; +} +.form-floating > .form-control:focus, .form-floating > .form-control:not(:placeholder-shown), +.form-floating > .form-control-plaintext:focus, +.form-floating > .form-control-plaintext:not(:placeholder-shown) { + padding-top: 1.625rem; + padding-bottom: 0.625rem; +} +.form-floating > .form-control:-webkit-autofill, +.form-floating > .form-control-plaintext:-webkit-autofill { + padding-top: 1.625rem; + padding-bottom: 0.625rem; +} +.form-floating > .form-select { + padding-top: 1.625rem; + padding-bottom: 0.625rem; +} +.form-floating > .form-control:not(:-moz-placeholder-shown) ~ label { + color: rgba(var(--bs-body-color-rgb), 0.65); + transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem); +} +.form-floating > .form-control:focus ~ label, +.form-floating > .form-control:not(:placeholder-shown) ~ label, +.form-floating > .form-control-plaintext ~ label, +.form-floating > .form-select ~ label { + color: rgba(var(--bs-body-color-rgb), 0.65); + transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem); +} +.form-floating > .form-control:not(:-moz-placeholder-shown) ~ label::after { + position: absolute; + inset: 1rem 0.375rem; + z-index: -1; + height: 1.5em; + content: ""; + background-color: var(--bs-body-bg); + border-radius: var(--bs-border-radius); +} +.form-floating > .form-control:focus ~ label::after, +.form-floating > .form-control:not(:placeholder-shown) ~ label::after, +.form-floating > .form-control-plaintext ~ label::after, +.form-floating > .form-select ~ label::after { + position: absolute; + inset: 1rem 0.375rem; + z-index: -1; + height: 1.5em; + content: ""; + background-color: var(--bs-body-bg); + border-radius: var(--bs-border-radius); +} +.form-floating > .form-control:-webkit-autofill ~ label { + color: rgba(var(--bs-body-color-rgb), 0.65); + transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem); +} +.form-floating > .form-control-plaintext ~ label { + border-width: var(--bs-border-width) 0; +} +.form-floating > :disabled ~ label { + color: #6c757d; +} +.form-floating > :disabled ~ label::after { + background-color: var(--bs-secondary-bg); +} + +.input-group { + position: relative; + display: flex; + flex-wrap: wrap; + align-items: stretch; + width: 100%; +} +.input-group > .form-control, +.input-group > .form-select, +.input-group > .form-floating { + position: relative; + flex: 1 1 auto; + width: 1%; + min-width: 0; +} +.input-group > .form-control:focus, +.input-group > .form-select:focus, +.input-group > .form-floating:focus-within { + z-index: 5; +} +.input-group .btn { + position: relative; + z-index: 2; +} +.input-group .btn:focus { + z-index: 5; +} + +.input-group-text { + display: flex; + align-items: center; + padding: 0.375rem 0.75rem; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: var(--bs-body-color); + text-align: center; + white-space: nowrap; + background-color: var(--bs-tertiary-bg); + border: var(--bs-border-width) solid var(--bs-border-color); + border-radius: var(--bs-border-radius); +} + +.input-group-lg > .form-control, +.input-group-lg > .form-select, +.input-group-lg > .input-group-text, +.input-group-lg > .btn { + padding: 0.5rem 1rem; + font-size: 1.25rem; + border-radius: var(--bs-border-radius-lg); +} + +.input-group-sm > .form-control, +.input-group-sm > .form-select, +.input-group-sm > .input-group-text, +.input-group-sm > .btn { + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + border-radius: var(--bs-border-radius-sm); +} + +.input-group-lg > .form-select, +.input-group-sm > .form-select { + padding-right: 3rem; +} + +.input-group:not(.has-validation) > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating), +.input-group:not(.has-validation) > .dropdown-toggle:nth-last-child(n+3), +.input-group:not(.has-validation) > .form-floating:not(:last-child) > .form-control, +.input-group:not(.has-validation) > .form-floating:not(:last-child) > .form-select { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.input-group.has-validation > :nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu):not(.form-floating), +.input-group.has-validation > .dropdown-toggle:nth-last-child(n+4), +.input-group.has-validation > .form-floating:nth-last-child(n+3) > .form-control, +.input-group.has-validation > .form-floating:nth-last-child(n+3) > .form-select { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.input-group > :not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback) { + margin-left: calc(var(--bs-border-width) * -1); + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.input-group > .form-floating:not(:first-child) > .form-control, +.input-group > .form-floating:not(:first-child) > .form-select { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.valid-feedback { + display: none; + width: 100%; + margin-top: 0.25rem; + font-size: 0.875em; + color: var(--bs-form-valid-color); +} + +.valid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: 0.25rem 0.5rem; + margin-top: 0.1rem; + font-size: 0.875rem; + color: #fff; + background-color: var(--bs-success); + border-radius: var(--bs-border-radius); +} + +.was-validated :valid ~ .valid-feedback, +.was-validated :valid ~ .valid-tooltip, +.is-valid ~ .valid-feedback, +.is-valid ~ .valid-tooltip { + display: block; +} + +.was-validated .form-control:valid, .form-control.is-valid { + border-color: var(--bs-form-valid-border-color); + padding-right: calc(1.5em + 0.75rem); + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: right calc(0.375em + 0.1875rem) center; + background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); +} +.was-validated .form-control:valid:focus, .form-control.is-valid:focus { + border-color: var(--bs-form-valid-border-color); + box-shadow: 0 0 0 0.25rem rgba(var(--bs-success-rgb), 0.25); +} + +.was-validated textarea.form-control:valid, textarea.form-control.is-valid { + padding-right: calc(1.5em + 0.75rem); + background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem); +} + +.was-validated .form-select:valid, .form-select.is-valid { + border-color: var(--bs-form-valid-border-color); +} +.was-validated .form-select:valid:not([multiple]):not([size]), .was-validated .form-select:valid:not([multiple])[size="1"], .form-select.is-valid:not([multiple]):not([size]), .form-select.is-valid:not([multiple])[size="1"] { + --bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e"); + padding-right: 4.125rem; + background-position: right 0.75rem center, center right 2.25rem; + background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); +} +.was-validated .form-select:valid:focus, .form-select.is-valid:focus { + border-color: var(--bs-form-valid-border-color); + box-shadow: 0 0 0 0.25rem rgba(var(--bs-success-rgb), 0.25); +} + +.was-validated .form-control-color:valid, .form-control-color.is-valid { + width: calc(3rem + calc(1.5em + 0.75rem)); +} + +.was-validated .form-check-input:valid, .form-check-input.is-valid { + border-color: var(--bs-form-valid-border-color); +} +.was-validated .form-check-input:valid:checked, .form-check-input.is-valid:checked { + background-color: var(--bs-form-valid-color); +} +.was-validated .form-check-input:valid:focus, .form-check-input.is-valid:focus { + box-shadow: 0 0 0 0.25rem rgba(var(--bs-success-rgb), 0.25); +} +.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label { + color: var(--bs-form-valid-color); +} + +.form-check-inline .form-check-input ~ .valid-feedback { + margin-left: 0.5em; +} + +.was-validated .input-group > .form-control:not(:focus):valid, .input-group > .form-control:not(:focus).is-valid, +.was-validated .input-group > .form-select:not(:focus):valid, +.input-group > .form-select:not(:focus).is-valid, +.was-validated .input-group > .form-floating:not(:focus-within):valid, +.input-group > .form-floating:not(:focus-within).is-valid { + z-index: 3; +} + +.invalid-feedback { + display: none; + width: 100%; + margin-top: 0.25rem; + font-size: 0.875em; + color: var(--bs-form-invalid-color); +} + +.invalid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: 0.25rem 0.5rem; + margin-top: 0.1rem; + font-size: 0.875rem; + color: #fff; + background-color: var(--bs-danger); + border-radius: var(--bs-border-radius); +} + +.was-validated :invalid ~ .invalid-feedback, +.was-validated :invalid ~ .invalid-tooltip, +.is-invalid ~ .invalid-feedback, +.is-invalid ~ .invalid-tooltip { + display: block; +} + +.was-validated .form-control:invalid, .form-control.is-invalid { + border-color: var(--bs-form-invalid-border-color); + padding-right: calc(1.5em + 0.75rem); + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: right calc(0.375em + 0.1875rem) center; + background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); +} +.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus { + border-color: var(--bs-form-invalid-border-color); + box-shadow: 0 0 0 0.25rem rgba(var(--bs-danger-rgb), 0.25); +} + +.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid { + padding-right: calc(1.5em + 0.75rem); + background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem); +} + +.was-validated .form-select:invalid, .form-select.is-invalid { + border-color: var(--bs-form-invalid-border-color); +} +.was-validated .form-select:invalid:not([multiple]):not([size]), .was-validated .form-select:invalid:not([multiple])[size="1"], .form-select.is-invalid:not([multiple]):not([size]), .form-select.is-invalid:not([multiple])[size="1"] { + --bs-form-select-bg-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e"); + padding-right: 4.125rem; + background-position: right 0.75rem center, center right 2.25rem; + background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); +} +.was-validated .form-select:invalid:focus, .form-select.is-invalid:focus { + border-color: var(--bs-form-invalid-border-color); + box-shadow: 0 0 0 0.25rem rgba(var(--bs-danger-rgb), 0.25); +} + +.was-validated .form-control-color:invalid, .form-control-color.is-invalid { + width: calc(3rem + calc(1.5em + 0.75rem)); +} + +.was-validated .form-check-input:invalid, .form-check-input.is-invalid { + border-color: var(--bs-form-invalid-border-color); +} +.was-validated .form-check-input:invalid:checked, .form-check-input.is-invalid:checked { + background-color: var(--bs-form-invalid-color); +} +.was-validated .form-check-input:invalid:focus, .form-check-input.is-invalid:focus { + box-shadow: 0 0 0 0.25rem rgba(var(--bs-danger-rgb), 0.25); +} +.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label { + color: var(--bs-form-invalid-color); +} + +.form-check-inline .form-check-input ~ .invalid-feedback { + margin-left: 0.5em; +} + +.was-validated .input-group > .form-control:not(:focus):invalid, .input-group > .form-control:not(:focus).is-invalid, +.was-validated .input-group > .form-select:not(:focus):invalid, +.input-group > .form-select:not(:focus).is-invalid, +.was-validated .input-group > .form-floating:not(:focus-within):invalid, +.input-group > .form-floating:not(:focus-within).is-invalid { + z-index: 4; +} + +.btn { + --bs-btn-padding-x: 0.75rem; + --bs-btn-padding-y: 0.375rem; + --bs-btn-font-family: ; + --bs-btn-font-size: 1rem; + --bs-btn-font-weight: 400; + --bs-btn-line-height: 1.5; + --bs-btn-color: var(--bs-body-color); + --bs-btn-bg: transparent; + --bs-btn-border-width: var(--bs-border-width); + --bs-btn-border-color: transparent; + --bs-btn-border-radius: var(--bs-border-radius); + --bs-btn-hover-border-color: transparent; + --bs-btn-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075); + --bs-btn-disabled-opacity: 0.65; + --bs-btn-focus-box-shadow: 0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb), .5); + display: inline-block; + padding: var(--bs-btn-padding-y) var(--bs-btn-padding-x); + font-family: var(--bs-btn-font-family); + font-size: var(--bs-btn-font-size); + font-weight: var(--bs-btn-font-weight); + line-height: var(--bs-btn-line-height); + color: var(--bs-btn-color); + text-align: center; + text-decoration: none; + vertical-align: middle; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + border: var(--bs-btn-border-width) solid var(--bs-btn-border-color); + border-radius: var(--bs-btn-border-radius); + background-color: var(--bs-btn-bg); + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .btn { + transition: none; + } +} +.btn:hover { + color: var(--bs-btn-hover-color); + background-color: var(--bs-btn-hover-bg); + border-color: var(--bs-btn-hover-border-color); +} +.btn-check + .btn:hover { + color: var(--bs-btn-color); + background-color: var(--bs-btn-bg); + border-color: var(--bs-btn-border-color); +} +.btn:focus-visible { + color: var(--bs-btn-hover-color); + background-color: var(--bs-btn-hover-bg); + border-color: var(--bs-btn-hover-border-color); + outline: 0; + box-shadow: var(--bs-btn-focus-box-shadow); +} +.btn-check:focus-visible + .btn { + border-color: var(--bs-btn-hover-border-color); + outline: 0; + box-shadow: var(--bs-btn-focus-box-shadow); +} +.btn-check:checked + .btn, :not(.btn-check) + .btn:active, .btn:first-child:active, .btn.active, .btn.show { + color: var(--bs-btn-active-color); + background-color: var(--bs-btn-active-bg); + border-color: var(--bs-btn-active-border-color); +} +.btn-check:checked + .btn:focus-visible, :not(.btn-check) + .btn:active:focus-visible, .btn:first-child:active:focus-visible, .btn.active:focus-visible, .btn.show:focus-visible { + box-shadow: var(--bs-btn-focus-box-shadow); +} +.btn:disabled, .btn.disabled, fieldset:disabled .btn { + color: var(--bs-btn-disabled-color); + pointer-events: none; + background-color: var(--bs-btn-disabled-bg); + border-color: var(--bs-btn-disabled-border-color); + opacity: var(--bs-btn-disabled-opacity); +} + +.btn-primary { + --bs-btn-color: #fff; + --bs-btn-bg: #0d6efd; + --bs-btn-border-color: #0d6efd; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #0b5ed7; + --bs-btn-hover-border-color: #0a58ca; + --bs-btn-focus-shadow-rgb: 49, 132, 253; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #0a58ca; + --bs-btn-active-border-color: #0a53be; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #0d6efd; + --bs-btn-disabled-border-color: #0d6efd; +} + +.btn-secondary { + --bs-btn-color: #fff; + --bs-btn-bg: #6c757d; + --bs-btn-border-color: #6c757d; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #5c636a; + --bs-btn-hover-border-color: #565e64; + --bs-btn-focus-shadow-rgb: 130, 138, 145; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #565e64; + --bs-btn-active-border-color: #51585e; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #6c757d; + --bs-btn-disabled-border-color: #6c757d; +} + +.btn-success { + --bs-btn-color: #fff; + --bs-btn-bg: #198754; + --bs-btn-border-color: #198754; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #157347; + --bs-btn-hover-border-color: #146c43; + --bs-btn-focus-shadow-rgb: 60, 153, 110; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #146c43; + --bs-btn-active-border-color: #13653f; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #198754; + --bs-btn-disabled-border-color: #198754; +} + +.btn-info { + --bs-btn-color: #000; + --bs-btn-bg: #0dcaf0; + --bs-btn-border-color: #0dcaf0; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #31d2f2; + --bs-btn-hover-border-color: #25cff2; + --bs-btn-focus-shadow-rgb: 11, 172, 204; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #3dd5f3; + --bs-btn-active-border-color: #25cff2; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #000; + --bs-btn-disabled-bg: #0dcaf0; + --bs-btn-disabled-border-color: #0dcaf0; +} + +.btn-warning { + --bs-btn-color: #000; + --bs-btn-bg: #ffc107; + --bs-btn-border-color: #ffc107; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #ffca2c; + --bs-btn-hover-border-color: #ffc720; + --bs-btn-focus-shadow-rgb: 217, 164, 6; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #ffcd39; + --bs-btn-active-border-color: #ffc720; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #000; + --bs-btn-disabled-bg: #ffc107; + --bs-btn-disabled-border-color: #ffc107; +} + +.btn-danger { + --bs-btn-color: #fff; + --bs-btn-bg: #dc3545; + --bs-btn-border-color: #dc3545; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #bb2d3b; + --bs-btn-hover-border-color: #b02a37; + --bs-btn-focus-shadow-rgb: 225, 83, 97; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #b02a37; + --bs-btn-active-border-color: #a52834; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #dc3545; + --bs-btn-disabled-border-color: #dc3545; +} + +.btn-light { + --bs-btn-color: #000; + --bs-btn-bg: #f8f9fa; + --bs-btn-border-color: #f8f9fa; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #d3d4d5; + --bs-btn-hover-border-color: #c6c7c8; + --bs-btn-focus-shadow-rgb: 211, 212, 213; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #c6c7c8; + --bs-btn-active-border-color: #babbbc; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #000; + --bs-btn-disabled-bg: #f8f9fa; + --bs-btn-disabled-border-color: #f8f9fa; +} + +.btn-dark { + --bs-btn-color: #fff; + --bs-btn-bg: #212529; + --bs-btn-border-color: #212529; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #424649; + --bs-btn-hover-border-color: #373b3e; + --bs-btn-focus-shadow-rgb: 66, 70, 73; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #4d5154; + --bs-btn-active-border-color: #373b3e; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #fff; + --bs-btn-disabled-bg: #212529; + --bs-btn-disabled-border-color: #212529; +} + +.btn-outline-primary { + --bs-btn-color: #0d6efd; + --bs-btn-border-color: #0d6efd; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #0d6efd; + --bs-btn-hover-border-color: #0d6efd; + --bs-btn-focus-shadow-rgb: 13, 110, 253; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #0d6efd; + --bs-btn-active-border-color: #0d6efd; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #0d6efd; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #0d6efd; + --bs-gradient: none; +} + +.btn-outline-secondary { + --bs-btn-color: #6c757d; + --bs-btn-border-color: #6c757d; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #6c757d; + --bs-btn-hover-border-color: #6c757d; + --bs-btn-focus-shadow-rgb: 108, 117, 125; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #6c757d; + --bs-btn-active-border-color: #6c757d; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #6c757d; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #6c757d; + --bs-gradient: none; +} + +.btn-outline-success { + --bs-btn-color: #198754; + --bs-btn-border-color: #198754; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #198754; + --bs-btn-hover-border-color: #198754; + --bs-btn-focus-shadow-rgb: 25, 135, 84; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #198754; + --bs-btn-active-border-color: #198754; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #198754; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #198754; + --bs-gradient: none; +} + +.btn-outline-info { + --bs-btn-color: #0dcaf0; + --bs-btn-border-color: #0dcaf0; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #0dcaf0; + --bs-btn-hover-border-color: #0dcaf0; + --bs-btn-focus-shadow-rgb: 13, 202, 240; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #0dcaf0; + --bs-btn-active-border-color: #0dcaf0; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #0dcaf0; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #0dcaf0; + --bs-gradient: none; +} + +.btn-outline-warning { + --bs-btn-color: #ffc107; + --bs-btn-border-color: #ffc107; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #ffc107; + --bs-btn-hover-border-color: #ffc107; + --bs-btn-focus-shadow-rgb: 255, 193, 7; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #ffc107; + --bs-btn-active-border-color: #ffc107; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #ffc107; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #ffc107; + --bs-gradient: none; +} + +.btn-outline-danger { + --bs-btn-color: #dc3545; + --bs-btn-border-color: #dc3545; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #dc3545; + --bs-btn-hover-border-color: #dc3545; + --bs-btn-focus-shadow-rgb: 220, 53, 69; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #dc3545; + --bs-btn-active-border-color: #dc3545; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #dc3545; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #dc3545; + --bs-gradient: none; +} + +.btn-outline-light { + --bs-btn-color: #f8f9fa; + --bs-btn-border-color: #f8f9fa; + --bs-btn-hover-color: #000; + --bs-btn-hover-bg: #f8f9fa; + --bs-btn-hover-border-color: #f8f9fa; + --bs-btn-focus-shadow-rgb: 248, 249, 250; + --bs-btn-active-color: #000; + --bs-btn-active-bg: #f8f9fa; + --bs-btn-active-border-color: #f8f9fa; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #f8f9fa; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #f8f9fa; + --bs-gradient: none; +} + +.btn-outline-dark { + --bs-btn-color: #212529; + --bs-btn-border-color: #212529; + --bs-btn-hover-color: #fff; + --bs-btn-hover-bg: #212529; + --bs-btn-hover-border-color: #212529; + --bs-btn-focus-shadow-rgb: 33, 37, 41; + --bs-btn-active-color: #fff; + --bs-btn-active-bg: #212529; + --bs-btn-active-border-color: #212529; + --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + --bs-btn-disabled-color: #212529; + --bs-btn-disabled-bg: transparent; + --bs-btn-disabled-border-color: #212529; + --bs-gradient: none; +} + +.btn-link { + --bs-btn-font-weight: 400; + --bs-btn-color: var(--bs-link-color); + --bs-btn-bg: transparent; + --bs-btn-border-color: transparent; + --bs-btn-hover-color: var(--bs-link-hover-color); + --bs-btn-hover-border-color: transparent; + --bs-btn-active-color: var(--bs-link-hover-color); + --bs-btn-active-border-color: transparent; + --bs-btn-disabled-color: #6c757d; + --bs-btn-disabled-border-color: transparent; + --bs-btn-box-shadow: 0 0 0 #000; + --bs-btn-focus-shadow-rgb: 49, 132, 253; + text-decoration: underline; +} +.btn-link:focus-visible { + color: var(--bs-btn-color); +} +.btn-link:hover { + color: var(--bs-btn-hover-color); +} + +.btn-lg, .btn-group-lg > .btn { + --bs-btn-padding-y: 0.5rem; + --bs-btn-padding-x: 1rem; + --bs-btn-font-size: 1.25rem; + --bs-btn-border-radius: var(--bs-border-radius-lg); +} + +.btn-sm, .btn-group-sm > .btn { + --bs-btn-padding-y: 0.25rem; + --bs-btn-padding-x: 0.5rem; + --bs-btn-font-size: 0.875rem; + --bs-btn-border-radius: var(--bs-border-radius-sm); +} + +.fade { + transition: opacity 0.15s linear; +} +@media (prefers-reduced-motion: reduce) { + .fade { + transition: none; + } +} +.fade:not(.show) { + opacity: 0; +} + +.collapse:not(.show) { + display: none; +} + +.collapsing { + height: 0; + overflow: hidden; + transition: height 0.35s ease; +} +@media (prefers-reduced-motion: reduce) { + .collapsing { + transition: none; + } +} +.collapsing.collapse-horizontal { + width: 0; + height: auto; + transition: width 0.35s ease; +} +@media (prefers-reduced-motion: reduce) { + .collapsing.collapse-horizontal { + transition: none; + } +} + +.dropup, +.dropend, +.dropdown, +.dropstart, +.dropup-center, +.dropdown-center { + position: relative; +} + +.dropdown-toggle { + white-space: nowrap; +} +.dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid; + border-right: 0.3em solid transparent; + border-bottom: 0; + border-left: 0.3em solid transparent; +} +.dropdown-toggle:empty::after { + margin-left: 0; +} + +.dropdown-menu { + --bs-dropdown-zindex: 1000; + --bs-dropdown-min-width: 10rem; + --bs-dropdown-padding-x: 0; + --bs-dropdown-padding-y: 0.5rem; + --bs-dropdown-spacer: 0.125rem; + --bs-dropdown-font-size: 1rem; + --bs-dropdown-color: var(--bs-body-color); + --bs-dropdown-bg: var(--bs-body-bg); + --bs-dropdown-border-color: var(--bs-border-color-translucent); + --bs-dropdown-border-radius: var(--bs-border-radius); + --bs-dropdown-border-width: var(--bs-border-width); + --bs-dropdown-inner-border-radius: calc(var(--bs-border-radius) - var(--bs-border-width)); + --bs-dropdown-divider-bg: var(--bs-border-color-translucent); + --bs-dropdown-divider-margin-y: 0.5rem; + --bs-dropdown-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15); + --bs-dropdown-link-color: var(--bs-body-color); + --bs-dropdown-link-hover-color: var(--bs-body-color); + --bs-dropdown-link-hover-bg: var(--bs-tertiary-bg); + --bs-dropdown-link-active-color: #fff; + --bs-dropdown-link-active-bg: #0d6efd; + --bs-dropdown-link-disabled-color: var(--bs-tertiary-color); + --bs-dropdown-item-padding-x: 1rem; + --bs-dropdown-item-padding-y: 0.25rem; + --bs-dropdown-header-color: #6c757d; + --bs-dropdown-header-padding-x: 1rem; + --bs-dropdown-header-padding-y: 0.5rem; + position: absolute; + z-index: var(--bs-dropdown-zindex); + display: none; + min-width: var(--bs-dropdown-min-width); + padding: var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x); + margin: 0; + font-size: var(--bs-dropdown-font-size); + color: var(--bs-dropdown-color); + text-align: left; + list-style: none; + background-color: var(--bs-dropdown-bg); + background-clip: padding-box; + border: var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color); + border-radius: var(--bs-dropdown-border-radius); +} +.dropdown-menu[data-bs-popper] { + top: 100%; + left: 0; + margin-top: var(--bs-dropdown-spacer); +} + +.dropdown-menu-start { + --bs-position: start; +} +.dropdown-menu-start[data-bs-popper] { + right: auto; + left: 0; +} + +.dropdown-menu-end { + --bs-position: end; +} +.dropdown-menu-end[data-bs-popper] { + right: 0; + left: auto; +} + +@media (min-width: 576px) { + .dropdown-menu-sm-start { + --bs-position: start; + } + .dropdown-menu-sm-start[data-bs-popper] { + right: auto; + left: 0; + } + .dropdown-menu-sm-end { + --bs-position: end; + } + .dropdown-menu-sm-end[data-bs-popper] { + right: 0; + left: auto; + } +} +@media (min-width: 768px) { + .dropdown-menu-md-start { + --bs-position: start; + } + .dropdown-menu-md-start[data-bs-popper] { + right: auto; + left: 0; + } + .dropdown-menu-md-end { + --bs-position: end; + } + .dropdown-menu-md-end[data-bs-popper] { + right: 0; + left: auto; + } +} +@media (min-width: 992px) { + .dropdown-menu-lg-start { + --bs-position: start; + } + .dropdown-menu-lg-start[data-bs-popper] { + right: auto; + left: 0; + } + .dropdown-menu-lg-end { + --bs-position: end; + } + .dropdown-menu-lg-end[data-bs-popper] { + right: 0; + left: auto; + } +} +@media (min-width: 1200px) { + .dropdown-menu-xl-start { + --bs-position: start; + } + .dropdown-menu-xl-start[data-bs-popper] { + right: auto; + left: 0; + } + .dropdown-menu-xl-end { + --bs-position: end; + } + .dropdown-menu-xl-end[data-bs-popper] { + right: 0; + left: auto; + } +} +@media (min-width: 1400px) { + .dropdown-menu-xxl-start { + --bs-position: start; + } + .dropdown-menu-xxl-start[data-bs-popper] { + right: auto; + left: 0; + } + .dropdown-menu-xxl-end { + --bs-position: end; + } + .dropdown-menu-xxl-end[data-bs-popper] { + right: 0; + left: auto; + } +} +.dropup .dropdown-menu[data-bs-popper] { + top: auto; + bottom: 100%; + margin-top: 0; + margin-bottom: var(--bs-dropdown-spacer); +} +.dropup .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0; + border-right: 0.3em solid transparent; + border-bottom: 0.3em solid; + border-left: 0.3em solid transparent; +} +.dropup .dropdown-toggle:empty::after { + margin-left: 0; +} + +.dropend .dropdown-menu[data-bs-popper] { + top: 0; + right: auto; + left: 100%; + margin-top: 0; + margin-left: var(--bs-dropdown-spacer); +} +.dropend .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid transparent; + border-right: 0; + border-bottom: 0.3em solid transparent; + border-left: 0.3em solid; +} +.dropend .dropdown-toggle:empty::after { + margin-left: 0; +} +.dropend .dropdown-toggle::after { + vertical-align: 0; +} + +.dropstart .dropdown-menu[data-bs-popper] { + top: 0; + right: 100%; + left: auto; + margin-top: 0; + margin-right: var(--bs-dropdown-spacer); +} +.dropstart .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; +} +.dropstart .dropdown-toggle::after { + display: none; +} +.dropstart .dropdown-toggle::before { + display: inline-block; + margin-right: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid transparent; + border-right: 0.3em solid; + border-bottom: 0.3em solid transparent; +} +.dropstart .dropdown-toggle:empty::after { + margin-left: 0; +} +.dropstart .dropdown-toggle::before { + vertical-align: 0; +} + +.dropdown-divider { + height: 0; + margin: var(--bs-dropdown-divider-margin-y) 0; + overflow: hidden; + border-top: 1px solid var(--bs-dropdown-divider-bg); + opacity: 1; +} + +.dropdown-item { + display: block; + width: 100%; + padding: var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x); + clear: both; + font-weight: 400; + color: var(--bs-dropdown-link-color); + text-align: inherit; + text-decoration: none; + white-space: nowrap; + background-color: transparent; + border: 0; + border-radius: var(--bs-dropdown-item-border-radius, 0); +} +.dropdown-item:hover, .dropdown-item:focus { + color: var(--bs-dropdown-link-hover-color); + background-color: var(--bs-dropdown-link-hover-bg); +} +.dropdown-item.active, .dropdown-item:active { + color: var(--bs-dropdown-link-active-color); + text-decoration: none; + background-color: var(--bs-dropdown-link-active-bg); +} +.dropdown-item.disabled, .dropdown-item:disabled { + color: var(--bs-dropdown-link-disabled-color); + pointer-events: none; + background-color: transparent; +} + +.dropdown-menu.show { + display: block; +} + +.dropdown-header { + display: block; + padding: var(--bs-dropdown-header-padding-y) var(--bs-dropdown-header-padding-x); + margin-bottom: 0; + font-size: 0.875rem; + color: var(--bs-dropdown-header-color); + white-space: nowrap; +} + +.dropdown-item-text { + display: block; + padding: var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x); + color: var(--bs-dropdown-link-color); +} + +.dropdown-menu-dark { + --bs-dropdown-color: #dee2e6; + --bs-dropdown-bg: #343a40; + --bs-dropdown-border-color: var(--bs-border-color-translucent); + --bs-dropdown-box-shadow: ; + --bs-dropdown-link-color: #dee2e6; + --bs-dropdown-link-hover-color: #fff; + --bs-dropdown-divider-bg: var(--bs-border-color-translucent); + --bs-dropdown-link-hover-bg: rgba(255, 255, 255, 0.15); + --bs-dropdown-link-active-color: #fff; + --bs-dropdown-link-active-bg: #0d6efd; + --bs-dropdown-link-disabled-color: #adb5bd; + --bs-dropdown-header-color: #adb5bd; +} + +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-flex; + vertical-align: middle; +} +.btn-group > .btn, +.btn-group-vertical > .btn { + position: relative; + flex: 1 1 auto; +} +.btn-group > .btn-check:checked + .btn, +.btn-group > .btn-check:focus + .btn, +.btn-group > .btn:hover, +.btn-group > .btn:focus, +.btn-group > .btn:active, +.btn-group > .btn.active, +.btn-group-vertical > .btn-check:checked + .btn, +.btn-group-vertical > .btn-check:focus + .btn, +.btn-group-vertical > .btn:hover, +.btn-group-vertical > .btn:focus, +.btn-group-vertical > .btn:active, +.btn-group-vertical > .btn.active { + z-index: 1; +} + +.btn-toolbar { + display: flex; + flex-wrap: wrap; + justify-content: flex-start; +} +.btn-toolbar .input-group { + width: auto; +} + +.btn-group { + border-radius: var(--bs-border-radius); +} +.btn-group > :not(.btn-check:first-child) + .btn, +.btn-group > .btn-group:not(:first-child) { + margin-left: calc(var(--bs-border-width) * -1); +} +.btn-group > .btn:not(:last-child):not(.dropdown-toggle), +.btn-group > .btn.dropdown-toggle-split:first-child, +.btn-group > .btn-group:not(:last-child) > .btn { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.btn-group > .btn:nth-child(n+3), +.btn-group > :not(.btn-check) + .btn, +.btn-group > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.dropdown-toggle-split { + padding-right: 0.5625rem; + padding-left: 0.5625rem; +} +.dropdown-toggle-split::after, .dropup .dropdown-toggle-split::after, .dropend .dropdown-toggle-split::after { + margin-left: 0; +} +.dropstart .dropdown-toggle-split::before { + margin-right: 0; +} + +.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split { + padding-right: 0.375rem; + padding-left: 0.375rem; +} + +.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split { + padding-right: 0.75rem; + padding-left: 0.75rem; +} + +.btn-group-vertical { + flex-direction: column; + align-items: flex-start; + justify-content: center; +} +.btn-group-vertical > .btn, +.btn-group-vertical > .btn-group { + width: 100%; +} +.btn-group-vertical > .btn:not(:first-child), +.btn-group-vertical > .btn-group:not(:first-child) { + margin-top: calc(var(--bs-border-width) * -1); +} +.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle), +.btn-group-vertical > .btn-group:not(:last-child) > .btn { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn ~ .btn, +.btn-group-vertical > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.nav { + --bs-nav-link-padding-x: 1rem; + --bs-nav-link-padding-y: 0.5rem; + --bs-nav-link-font-weight: ; + --bs-nav-link-color: var(--bs-link-color); + --bs-nav-link-hover-color: var(--bs-link-hover-color); + --bs-nav-link-disabled-color: var(--bs-secondary-color); + display: flex; + flex-wrap: wrap; + padding-left: 0; + margin-bottom: 0; + list-style: none; +} + +.nav-link { + display: block; + padding: var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x); + font-size: var(--bs-nav-link-font-size); + font-weight: var(--bs-nav-link-font-weight); + color: var(--bs-nav-link-color); + text-decoration: none; + background: none; + border: 0; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .nav-link { + transition: none; + } +} +.nav-link:hover, .nav-link:focus { + color: var(--bs-nav-link-hover-color); +} +.nav-link:focus-visible { + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25); +} +.nav-link.disabled { + color: var(--bs-nav-link-disabled-color); + pointer-events: none; + cursor: default; +} + +.nav-tabs { + --bs-nav-tabs-border-width: var(--bs-border-width); + --bs-nav-tabs-border-color: var(--bs-border-color); + --bs-nav-tabs-border-radius: var(--bs-border-radius); + --bs-nav-tabs-link-hover-border-color: var(--bs-secondary-bg) var(--bs-secondary-bg) var(--bs-border-color); + --bs-nav-tabs-link-active-color: var(--bs-emphasis-color); + --bs-nav-tabs-link-active-bg: var(--bs-body-bg); + --bs-nav-tabs-link-active-border-color: var(--bs-border-color) var(--bs-border-color) var(--bs-body-bg); + border-bottom: var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color); +} +.nav-tabs .nav-link { + margin-bottom: calc(-1 * var(--bs-nav-tabs-border-width)); + border: var(--bs-nav-tabs-border-width) solid transparent; + border-top-left-radius: var(--bs-nav-tabs-border-radius); + border-top-right-radius: var(--bs-nav-tabs-border-radius); +} +.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus { + isolation: isolate; + border-color: var(--bs-nav-tabs-link-hover-border-color); +} +.nav-tabs .nav-link.disabled, .nav-tabs .nav-link:disabled { + color: var(--bs-nav-link-disabled-color); + background-color: transparent; + border-color: transparent; +} +.nav-tabs .nav-link.active, +.nav-tabs .nav-item.show .nav-link { + color: var(--bs-nav-tabs-link-active-color); + background-color: var(--bs-nav-tabs-link-active-bg); + border-color: var(--bs-nav-tabs-link-active-border-color); +} +.nav-tabs .dropdown-menu { + margin-top: calc(-1 * var(--bs-nav-tabs-border-width)); + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.nav-pills { + --bs-nav-pills-border-radius: var(--bs-border-radius); + --bs-nav-pills-link-active-color: #fff; + --bs-nav-pills-link-active-bg: #0d6efd; +} +.nav-pills .nav-link { + border-radius: var(--bs-nav-pills-border-radius); +} +.nav-pills .nav-link:disabled { + color: var(--bs-nav-link-disabled-color); + background-color: transparent; + border-color: transparent; +} +.nav-pills .nav-link.active, +.nav-pills .show > .nav-link { + color: var(--bs-nav-pills-link-active-color); + background-color: var(--bs-nav-pills-link-active-bg); +} + +.nav-underline { + --bs-nav-underline-gap: 1rem; + --bs-nav-underline-border-width: 0.125rem; + --bs-nav-underline-link-active-color: var(--bs-emphasis-color); + gap: var(--bs-nav-underline-gap); +} +.nav-underline .nav-link { + padding-right: 0; + padding-left: 0; + border-bottom: var(--bs-nav-underline-border-width) solid transparent; +} +.nav-underline .nav-link:hover, .nav-underline .nav-link:focus { + border-bottom-color: currentcolor; +} +.nav-underline .nav-link.active, +.nav-underline .show > .nav-link { + font-weight: 700; + color: var(--bs-nav-underline-link-active-color); + border-bottom-color: currentcolor; +} + +.nav-fill > .nav-link, +.nav-fill .nav-item { + flex: 1 1 auto; + text-align: center; +} + +.nav-justified > .nav-link, +.nav-justified .nav-item { + flex-basis: 0; + flex-grow: 1; + text-align: center; +} + +.nav-fill .nav-item .nav-link, +.nav-justified .nav-item .nav-link { + width: 100%; +} + +.tab-content > .tab-pane { + display: none; +} +.tab-content > .active { + display: block; +} + +.navbar { + --bs-navbar-padding-x: 0; + --bs-navbar-padding-y: 0.5rem; + --bs-navbar-color: rgba(var(--bs-emphasis-color-rgb), 0.65); + --bs-navbar-hover-color: rgba(var(--bs-emphasis-color-rgb), 0.8); + --bs-navbar-disabled-color: rgba(var(--bs-emphasis-color-rgb), 0.3); + --bs-navbar-active-color: rgba(var(--bs-emphasis-color-rgb), 1); + --bs-navbar-brand-padding-y: 0.3125rem; + --bs-navbar-brand-margin-end: 1rem; + --bs-navbar-brand-font-size: 1.25rem; + --bs-navbar-brand-color: rgba(var(--bs-emphasis-color-rgb), 1); + --bs-navbar-brand-hover-color: rgba(var(--bs-emphasis-color-rgb), 1); + --bs-navbar-nav-link-padding-x: 0.5rem; + --bs-navbar-toggler-padding-y: 0.25rem; + --bs-navbar-toggler-padding-x: 0.75rem; + --bs-navbar-toggler-font-size: 1.25rem; + --bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2833, 37, 41, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); + --bs-navbar-toggler-border-color: rgba(var(--bs-emphasis-color-rgb), 0.15); + --bs-navbar-toggler-border-radius: var(--bs-border-radius); + --bs-navbar-toggler-focus-width: 0.25rem; + --bs-navbar-toggler-transition: box-shadow 0.15s ease-in-out; + position: relative; + display: flex; + flex-wrap: wrap; + align-items: center; + justify-content: space-between; + padding: var(--bs-navbar-padding-y) var(--bs-navbar-padding-x); +} +.navbar > .container, +.navbar > .container-fluid, +.navbar > .container-sm, +.navbar > .container-md, +.navbar > .container-lg, +.navbar > .container-xl, +.navbar > .container-xxl { + display: flex; + flex-wrap: inherit; + align-items: center; + justify-content: space-between; +} +.navbar-brand { + padding-top: var(--bs-navbar-brand-padding-y); + padding-bottom: var(--bs-navbar-brand-padding-y); + margin-right: var(--bs-navbar-brand-margin-end); + font-size: var(--bs-navbar-brand-font-size); + color: var(--bs-navbar-brand-color); + text-decoration: none; + white-space: nowrap; +} +.navbar-brand:hover, .navbar-brand:focus { + color: var(--bs-navbar-brand-hover-color); +} + +.navbar-nav { + --bs-nav-link-padding-x: 0; + --bs-nav-link-padding-y: 0.5rem; + --bs-nav-link-font-weight: ; + --bs-nav-link-color: var(--bs-navbar-color); + --bs-nav-link-hover-color: var(--bs-navbar-hover-color); + --bs-nav-link-disabled-color: var(--bs-navbar-disabled-color); + display: flex; + flex-direction: column; + padding-left: 0; + margin-bottom: 0; + list-style: none; +} +.navbar-nav .nav-link.active, .navbar-nav .nav-link.show { + color: var(--bs-navbar-active-color); +} +.navbar-nav .dropdown-menu { + position: static; +} + +.navbar-text { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + color: var(--bs-navbar-color); +} +.navbar-text a, +.navbar-text a:hover, +.navbar-text a:focus { + color: var(--bs-navbar-active-color); +} + +.navbar-collapse { + flex-basis: 100%; + flex-grow: 1; + align-items: center; +} + +.navbar-toggler { + padding: var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x); + font-size: var(--bs-navbar-toggler-font-size); + line-height: 1; + color: var(--bs-navbar-color); + background-color: transparent; + border: var(--bs-border-width) solid var(--bs-navbar-toggler-border-color); + border-radius: var(--bs-navbar-toggler-border-radius); + transition: var(--bs-navbar-toggler-transition); +} +@media (prefers-reduced-motion: reduce) { + .navbar-toggler { + transition: none; + } +} +.navbar-toggler:hover { + text-decoration: none; +} +.navbar-toggler:focus { + text-decoration: none; + outline: 0; + box-shadow: 0 0 0 var(--bs-navbar-toggler-focus-width); +} + +.navbar-toggler-icon { + display: inline-block; + width: 1.5em; + height: 1.5em; + vertical-align: middle; + background-image: var(--bs-navbar-toggler-icon-bg); + background-repeat: no-repeat; + background-position: center; + background-size: 100%; +} + +.navbar-nav-scroll { + max-height: var(--bs-scroll-height, 75vh); + overflow-y: auto; +} + +@media (min-width: 576px) { + .navbar-expand-sm { + flex-wrap: nowrap; + justify-content: flex-start; + } + .navbar-expand-sm .navbar-nav { + flex-direction: row; + } + .navbar-expand-sm .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-sm .navbar-nav .nav-link { + padding-right: var(--bs-navbar-nav-link-padding-x); + padding-left: var(--bs-navbar-nav-link-padding-x); + } + .navbar-expand-sm .navbar-nav-scroll { + overflow: visible; + } + .navbar-expand-sm .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .navbar-expand-sm .navbar-toggler { + display: none; + } + .navbar-expand-sm .offcanvas { + position: static; + z-index: auto; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + transform: none !important; + transition: none; + } + .navbar-expand-sm .offcanvas .offcanvas-header { + display: none; + } + .navbar-expand-sm .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +@media (min-width: 768px) { + .navbar-expand-md { + flex-wrap: nowrap; + justify-content: flex-start; + } + .navbar-expand-md .navbar-nav { + flex-direction: row; + } + .navbar-expand-md .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-md .navbar-nav .nav-link { + padding-right: var(--bs-navbar-nav-link-padding-x); + padding-left: var(--bs-navbar-nav-link-padding-x); + } + .navbar-expand-md .navbar-nav-scroll { + overflow: visible; + } + .navbar-expand-md .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .navbar-expand-md .navbar-toggler { + display: none; + } + .navbar-expand-md .offcanvas { + position: static; + z-index: auto; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + transform: none !important; + transition: none; + } + .navbar-expand-md .offcanvas .offcanvas-header { + display: none; + } + .navbar-expand-md .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +@media (min-width: 992px) { + .navbar-expand-lg { + flex-wrap: nowrap; + justify-content: flex-start; + } + .navbar-expand-lg .navbar-nav { + flex-direction: row; + } + .navbar-expand-lg .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-lg .navbar-nav .nav-link { + padding-right: var(--bs-navbar-nav-link-padding-x); + padding-left: var(--bs-navbar-nav-link-padding-x); + } + .navbar-expand-lg .navbar-nav-scroll { + overflow: visible; + } + .navbar-expand-lg .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .navbar-expand-lg .navbar-toggler { + display: none; + } + .navbar-expand-lg .offcanvas { + position: static; + z-index: auto; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + transform: none !important; + transition: none; + } + .navbar-expand-lg .offcanvas .offcanvas-header { + display: none; + } + .navbar-expand-lg .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +@media (min-width: 1200px) { + .navbar-expand-xl { + flex-wrap: nowrap; + justify-content: flex-start; + } + .navbar-expand-xl .navbar-nav { + flex-direction: row; + } + .navbar-expand-xl .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-xl .navbar-nav .nav-link { + padding-right: var(--bs-navbar-nav-link-padding-x); + padding-left: var(--bs-navbar-nav-link-padding-x); + } + .navbar-expand-xl .navbar-nav-scroll { + overflow: visible; + } + .navbar-expand-xl .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .navbar-expand-xl .navbar-toggler { + display: none; + } + .navbar-expand-xl .offcanvas { + position: static; + z-index: auto; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + transform: none !important; + transition: none; + } + .navbar-expand-xl .offcanvas .offcanvas-header { + display: none; + } + .navbar-expand-xl .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +@media (min-width: 1400px) { + .navbar-expand-xxl { + flex-wrap: nowrap; + justify-content: flex-start; + } + .navbar-expand-xxl .navbar-nav { + flex-direction: row; + } + .navbar-expand-xxl .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-xxl .navbar-nav .nav-link { + padding-right: var(--bs-navbar-nav-link-padding-x); + padding-left: var(--bs-navbar-nav-link-padding-x); + } + .navbar-expand-xxl .navbar-nav-scroll { + overflow: visible; + } + .navbar-expand-xxl .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .navbar-expand-xxl .navbar-toggler { + display: none; + } + .navbar-expand-xxl .offcanvas { + position: static; + z-index: auto; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + transform: none !important; + transition: none; + } + .navbar-expand-xxl .offcanvas .offcanvas-header { + display: none; + } + .navbar-expand-xxl .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +.navbar-expand { + flex-wrap: nowrap; + justify-content: flex-start; +} +.navbar-expand .navbar-nav { + flex-direction: row; +} +.navbar-expand .navbar-nav .dropdown-menu { + position: absolute; +} +.navbar-expand .navbar-nav .nav-link { + padding-right: var(--bs-navbar-nav-link-padding-x); + padding-left: var(--bs-navbar-nav-link-padding-x); +} +.navbar-expand .navbar-nav-scroll { + overflow: visible; +} +.navbar-expand .navbar-collapse { + display: flex !important; + flex-basis: auto; +} +.navbar-expand .navbar-toggler { + display: none; +} +.navbar-expand .offcanvas { + position: static; + z-index: auto; + flex-grow: 1; + width: auto !important; + height: auto !important; + visibility: visible !important; + background-color: transparent !important; + border: 0 !important; + transform: none !important; + transition: none; +} +.navbar-expand .offcanvas .offcanvas-header { + display: none; +} +.navbar-expand .offcanvas .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; +} + +.navbar-dark, +.navbar[data-bs-theme=dark] { + --bs-navbar-color: rgba(255, 255, 255, 0.55); + --bs-navbar-hover-color: rgba(255, 255, 255, 0.75); + --bs-navbar-disabled-color: rgba(255, 255, 255, 0.25); + --bs-navbar-active-color: #fff; + --bs-navbar-brand-color: #fff; + --bs-navbar-brand-hover-color: #fff; + --bs-navbar-toggler-border-color: rgba(255, 255, 255, 0.1); + --bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); +} + +[data-bs-theme=dark] .navbar-toggler-icon { + --bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); +} + +.card { + --bs-card-spacer-y: 1rem; + --bs-card-spacer-x: 1rem; + --bs-card-title-spacer-y: 0.5rem; + --bs-card-title-color: ; + --bs-card-subtitle-color: ; + --bs-card-border-width: var(--bs-border-width); + --bs-card-border-color: var(--bs-border-color-translucent); + --bs-card-border-radius: var(--bs-border-radius); + --bs-card-box-shadow: ; + --bs-card-inner-border-radius: calc(var(--bs-border-radius) - (var(--bs-border-width))); + --bs-card-cap-padding-y: 0.5rem; + --bs-card-cap-padding-x: 1rem; + --bs-card-cap-bg: rgba(var(--bs-body-color-rgb), 0.03); + --bs-card-cap-color: ; + --bs-card-height: ; + --bs-card-color: ; + --bs-card-bg: var(--bs-body-bg); + --bs-card-img-overlay-padding: 1rem; + --bs-card-group-margin: 0.75rem; + position: relative; + display: flex; + flex-direction: column; + min-width: 0; + height: var(--bs-card-height); + color: var(--bs-body-color); + word-wrap: break-word; + background-color: var(--bs-card-bg); + background-clip: border-box; + border: var(--bs-card-border-width) solid var(--bs-card-border-color); + border-radius: var(--bs-card-border-radius); +} +.card > hr { + margin-right: 0; + margin-left: 0; +} +.card > .list-group { + border-top: inherit; + border-bottom: inherit; +} +.card > .list-group:first-child { + border-top-width: 0; + border-top-left-radius: var(--bs-card-inner-border-radius); + border-top-right-radius: var(--bs-card-inner-border-radius); +} +.card > .list-group:last-child { + border-bottom-width: 0; + border-bottom-right-radius: var(--bs-card-inner-border-radius); + border-bottom-left-radius: var(--bs-card-inner-border-radius); +} +.card > .card-header + .list-group, +.card > .list-group + .card-footer { + border-top: 0; +} + +.card-body { + flex: 1 1 auto; + padding: var(--bs-card-spacer-y) var(--bs-card-spacer-x); + color: var(--bs-card-color); +} + +.card-title { + margin-bottom: var(--bs-card-title-spacer-y); + color: var(--bs-card-title-color); +} + +.card-subtitle { + margin-top: calc(-0.5 * var(--bs-card-title-spacer-y)); + margin-bottom: 0; + color: var(--bs-card-subtitle-color); +} + +.card-text:last-child { + margin-bottom: 0; +} + +.card-link + .card-link { + margin-left: var(--bs-card-spacer-x); +} + +.card-header { + padding: var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x); + margin-bottom: 0; + color: var(--bs-card-cap-color); + background-color: var(--bs-card-cap-bg); + border-bottom: var(--bs-card-border-width) solid var(--bs-card-border-color); +} +.card-header:first-child { + border-radius: var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius) 0 0; +} + +.card-footer { + padding: var(--bs-card-cap-padding-y) var(--bs-card-cap-padding-x); + color: var(--bs-card-cap-color); + background-color: var(--bs-card-cap-bg); + border-top: var(--bs-card-border-width) solid var(--bs-card-border-color); +} +.card-footer:last-child { + border-radius: 0 0 var(--bs-card-inner-border-radius) var(--bs-card-inner-border-radius); +} + +.card-header-tabs { + margin-right: calc(-0.5 * var(--bs-card-cap-padding-x)); + margin-bottom: calc(-1 * var(--bs-card-cap-padding-y)); + margin-left: calc(-0.5 * var(--bs-card-cap-padding-x)); + border-bottom: 0; +} +.card-header-tabs .nav-link.active { + background-color: var(--bs-card-bg); + border-bottom-color: var(--bs-card-bg); +} + +.card-header-pills { + margin-right: calc(-0.5 * var(--bs-card-cap-padding-x)); + margin-left: calc(-0.5 * var(--bs-card-cap-padding-x)); +} + +.card-img-overlay { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + padding: var(--bs-card-img-overlay-padding); + border-radius: var(--bs-card-inner-border-radius); +} + +.card-img, +.card-img-top, +.card-img-bottom { + width: 100%; +} + +.card-img, +.card-img-top { + border-top-left-radius: var(--bs-card-inner-border-radius); + border-top-right-radius: var(--bs-card-inner-border-radius); +} + +.card-img, +.card-img-bottom { + border-bottom-right-radius: var(--bs-card-inner-border-radius); + border-bottom-left-radius: var(--bs-card-inner-border-radius); +} + +.card-group > .card { + margin-bottom: var(--bs-card-group-margin); +} +@media (min-width: 576px) { + .card-group { + display: flex; + flex-flow: row wrap; + } + .card-group > .card { + flex: 1 0 0%; + margin-bottom: 0; + } + .card-group > .card + .card { + margin-left: 0; + border-left: 0; + } + .card-group > .card:not(:last-child) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } + .card-group > .card:not(:last-child) .card-img-top, + .card-group > .card:not(:last-child) .card-header { + border-top-right-radius: 0; + } + .card-group > .card:not(:last-child) .card-img-bottom, + .card-group > .card:not(:last-child) .card-footer { + border-bottom-right-radius: 0; + } + .card-group > .card:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } + .card-group > .card:not(:first-child) .card-img-top, + .card-group > .card:not(:first-child) .card-header { + border-top-left-radius: 0; + } + .card-group > .card:not(:first-child) .card-img-bottom, + .card-group > .card:not(:first-child) .card-footer { + border-bottom-left-radius: 0; + } +} + +.accordion { + --bs-accordion-color: var(--bs-body-color); + --bs-accordion-bg: var(--bs-body-bg); + --bs-accordion-transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, border-radius 0.15s ease; + --bs-accordion-border-color: var(--bs-border-color); + --bs-accordion-border-width: var(--bs-border-width); + --bs-accordion-border-radius: var(--bs-border-radius); + --bs-accordion-inner-border-radius: calc(var(--bs-border-radius) - (var(--bs-border-width))); + --bs-accordion-btn-padding-x: 1.25rem; + --bs-accordion-btn-padding-y: 1rem; + --bs-accordion-btn-color: var(--bs-body-color); + --bs-accordion-btn-bg: var(--bs-accordion-bg); + --bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); + --bs-accordion-btn-icon-width: 1.25rem; + --bs-accordion-btn-icon-transform: rotate(-180deg); + --bs-accordion-btn-icon-transition: transform 0.2s ease-in-out; + --bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23052c65'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); + --bs-accordion-btn-focus-border-color: #86b7fe; + --bs-accordion-btn-focus-box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25); + --bs-accordion-body-padding-x: 1.25rem; + --bs-accordion-body-padding-y: 1rem; + --bs-accordion-active-color: var(--bs-primary-text-emphasis); + --bs-accordion-active-bg: var(--bs-primary-bg-subtle); +} + +.accordion-button { + position: relative; + display: flex; + align-items: center; + width: 100%; + padding: var(--bs-accordion-btn-padding-y) var(--bs-accordion-btn-padding-x); + font-size: 1rem; + color: var(--bs-accordion-btn-color); + text-align: left; + background-color: var(--bs-accordion-btn-bg); + border: 0; + border-radius: 0; + overflow-anchor: none; + transition: var(--bs-accordion-transition); +} +@media (prefers-reduced-motion: reduce) { + .accordion-button { + transition: none; + } +} +.accordion-button:not(.collapsed) { + color: var(--bs-accordion-active-color); + background-color: var(--bs-accordion-active-bg); + box-shadow: inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--bs-accordion-border-color); +} +.accordion-button:not(.collapsed)::after { + background-image: var(--bs-accordion-btn-active-icon); + transform: var(--bs-accordion-btn-icon-transform); +} +.accordion-button::after { + flex-shrink: 0; + width: var(--bs-accordion-btn-icon-width); + height: var(--bs-accordion-btn-icon-width); + margin-left: auto; + content: ""; + background-image: var(--bs-accordion-btn-icon); + background-repeat: no-repeat; + background-size: var(--bs-accordion-btn-icon-width); + transition: var(--bs-accordion-btn-icon-transition); +} +@media (prefers-reduced-motion: reduce) { + .accordion-button::after { + transition: none; + } +} +.accordion-button:hover { + z-index: 2; +} +.accordion-button:focus { + z-index: 3; + border-color: var(--bs-accordion-btn-focus-border-color); + outline: 0; + box-shadow: var(--bs-accordion-btn-focus-box-shadow); +} + +.accordion-header { + margin-bottom: 0; +} + +.accordion-item { + color: var(--bs-accordion-color); + background-color: var(--bs-accordion-bg); + border: var(--bs-accordion-border-width) solid var(--bs-accordion-border-color); +} +.accordion-item:first-of-type { + border-top-left-radius: var(--bs-accordion-border-radius); + border-top-right-radius: var(--bs-accordion-border-radius); +} +.accordion-item:first-of-type .accordion-button { + border-top-left-radius: var(--bs-accordion-inner-border-radius); + border-top-right-radius: var(--bs-accordion-inner-border-radius); +} +.accordion-item:not(:first-of-type) { + border-top: 0; +} +.accordion-item:last-of-type { + border-bottom-right-radius: var(--bs-accordion-border-radius); + border-bottom-left-radius: var(--bs-accordion-border-radius); +} +.accordion-item:last-of-type .accordion-button.collapsed { + border-bottom-right-radius: var(--bs-accordion-inner-border-radius); + border-bottom-left-radius: var(--bs-accordion-inner-border-radius); +} +.accordion-item:last-of-type .accordion-collapse { + border-bottom-right-radius: var(--bs-accordion-border-radius); + border-bottom-left-radius: var(--bs-accordion-border-radius); +} + +.accordion-body { + padding: var(--bs-accordion-body-padding-y) var(--bs-accordion-body-padding-x); +} + +.accordion-flush .accordion-collapse { + border-width: 0; +} +.accordion-flush .accordion-item { + border-right: 0; + border-left: 0; + border-radius: 0; +} +.accordion-flush .accordion-item:first-child { + border-top: 0; +} +.accordion-flush .accordion-item:last-child { + border-bottom: 0; +} +.accordion-flush .accordion-item .accordion-button, .accordion-flush .accordion-item .accordion-button.collapsed { + border-radius: 0; +} + +[data-bs-theme=dark] .accordion-button::after { + --bs-accordion-btn-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); + --bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); +} + +.breadcrumb { + --bs-breadcrumb-padding-x: 0; + --bs-breadcrumb-padding-y: 0; + --bs-breadcrumb-margin-bottom: 1rem; + --bs-breadcrumb-bg: ; + --bs-breadcrumb-border-radius: ; + --bs-breadcrumb-divider-color: var(--bs-secondary-color); + --bs-breadcrumb-item-padding-x: 0.5rem; + --bs-breadcrumb-item-active-color: var(--bs-secondary-color); + display: flex; + flex-wrap: wrap; + padding: var(--bs-breadcrumb-padding-y) var(--bs-breadcrumb-padding-x); + margin-bottom: var(--bs-breadcrumb-margin-bottom); + font-size: var(--bs-breadcrumb-font-size); + list-style: none; + background-color: var(--bs-breadcrumb-bg); + border-radius: var(--bs-breadcrumb-border-radius); +} + +.breadcrumb-item + .breadcrumb-item { + padding-left: var(--bs-breadcrumb-item-padding-x); +} +.breadcrumb-item + .breadcrumb-item::before { + float: left; + padding-right: var(--bs-breadcrumb-item-padding-x); + color: var(--bs-breadcrumb-divider-color); + content: var(--bs-breadcrumb-divider, "/") /* rtl: var(--bs-breadcrumb-divider, "/") */; +} +.breadcrumb-item.active { + color: var(--bs-breadcrumb-item-active-color); +} + +.pagination { + --bs-pagination-padding-x: 0.75rem; + --bs-pagination-padding-y: 0.375rem; + --bs-pagination-font-size: 1rem; + --bs-pagination-color: var(--bs-link-color); + --bs-pagination-bg: var(--bs-body-bg); + --bs-pagination-border-width: var(--bs-border-width); + --bs-pagination-border-color: var(--bs-border-color); + --bs-pagination-border-radius: var(--bs-border-radius); + --bs-pagination-hover-color: var(--bs-link-hover-color); + --bs-pagination-hover-bg: var(--bs-tertiary-bg); + --bs-pagination-hover-border-color: var(--bs-border-color); + --bs-pagination-focus-color: var(--bs-link-hover-color); + --bs-pagination-focus-bg: var(--bs-secondary-bg); + --bs-pagination-focus-box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25); + --bs-pagination-active-color: #fff; + --bs-pagination-active-bg: #0d6efd; + --bs-pagination-active-border-color: #0d6efd; + --bs-pagination-disabled-color: var(--bs-secondary-color); + --bs-pagination-disabled-bg: var(--bs-secondary-bg); + --bs-pagination-disabled-border-color: var(--bs-border-color); + display: flex; + padding-left: 0; + list-style: none; +} + +.page-link { + position: relative; + display: block; + padding: var(--bs-pagination-padding-y) var(--bs-pagination-padding-x); + font-size: var(--bs-pagination-font-size); + color: var(--bs-pagination-color); + text-decoration: none; + background-color: var(--bs-pagination-bg); + border: var(--bs-pagination-border-width) solid var(--bs-pagination-border-color); + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .page-link { + transition: none; + } +} +.page-link:hover { + z-index: 2; + color: var(--bs-pagination-hover-color); + background-color: var(--bs-pagination-hover-bg); + border-color: var(--bs-pagination-hover-border-color); +} +.page-link:focus { + z-index: 3; + color: var(--bs-pagination-focus-color); + background-color: var(--bs-pagination-focus-bg); + outline: 0; + box-shadow: var(--bs-pagination-focus-box-shadow); +} +.page-link.active, .active > .page-link { + z-index: 3; + color: var(--bs-pagination-active-color); + background-color: var(--bs-pagination-active-bg); + border-color: var(--bs-pagination-active-border-color); +} +.page-link.disabled, .disabled > .page-link { + color: var(--bs-pagination-disabled-color); + pointer-events: none; + background-color: var(--bs-pagination-disabled-bg); + border-color: var(--bs-pagination-disabled-border-color); +} + +.page-item:not(:first-child) .page-link { + margin-left: calc(var(--bs-border-width) * -1); +} +.page-item:first-child .page-link { + border-top-left-radius: var(--bs-pagination-border-radius); + border-bottom-left-radius: var(--bs-pagination-border-radius); +} +.page-item:last-child .page-link { + border-top-right-radius: var(--bs-pagination-border-radius); + border-bottom-right-radius: var(--bs-pagination-border-radius); +} + +.pagination-lg { + --bs-pagination-padding-x: 1.5rem; + --bs-pagination-padding-y: 0.75rem; + --bs-pagination-font-size: 1.25rem; + --bs-pagination-border-radius: var(--bs-border-radius-lg); +} + +.pagination-sm { + --bs-pagination-padding-x: 0.5rem; + --bs-pagination-padding-y: 0.25rem; + --bs-pagination-font-size: 0.875rem; + --bs-pagination-border-radius: var(--bs-border-radius-sm); +} + +.badge { + --bs-badge-padding-x: 0.65em; + --bs-badge-padding-y: 0.35em; + --bs-badge-font-size: 0.75em; + --bs-badge-font-weight: 700; + --bs-badge-color: #fff; + --bs-badge-border-radius: var(--bs-border-radius); + display: inline-block; + padding: var(--bs-badge-padding-y) var(--bs-badge-padding-x); + font-size: var(--bs-badge-font-size); + font-weight: var(--bs-badge-font-weight); + line-height: 1; + color: var(--bs-badge-color); + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: var(--bs-badge-border-radius); +} +.badge:empty { + display: none; +} + +.btn .badge { + position: relative; + top: -1px; +} + +.alert { + --bs-alert-bg: transparent; + --bs-alert-padding-x: 1rem; + --bs-alert-padding-y: 1rem; + --bs-alert-margin-bottom: 1rem; + --bs-alert-color: inherit; + --bs-alert-border-color: transparent; + --bs-alert-border: var(--bs-border-width) solid var(--bs-alert-border-color); + --bs-alert-border-radius: var(--bs-border-radius); + --bs-alert-link-color: inherit; + position: relative; + padding: var(--bs-alert-padding-y) var(--bs-alert-padding-x); + margin-bottom: var(--bs-alert-margin-bottom); + color: var(--bs-alert-color); + background-color: var(--bs-alert-bg); + border: var(--bs-alert-border); + border-radius: var(--bs-alert-border-radius); +} + +.alert-heading { + color: inherit; +} + +.alert-link { + font-weight: 700; + color: var(--bs-alert-link-color); +} + +.alert-dismissible { + padding-right: 3rem; +} +.alert-dismissible .btn-close { + position: absolute; + top: 0; + right: 0; + z-index: 2; + padding: 1.25rem 1rem; +} + +.alert-primary { + --bs-alert-color: var(--bs-primary-text-emphasis); + --bs-alert-bg: var(--bs-primary-bg-subtle); + --bs-alert-border-color: var(--bs-primary-border-subtle); + --bs-alert-link-color: var(--bs-primary-text-emphasis); +} + +.alert-secondary { + --bs-alert-color: var(--bs-secondary-text-emphasis); + --bs-alert-bg: var(--bs-secondary-bg-subtle); + --bs-alert-border-color: var(--bs-secondary-border-subtle); + --bs-alert-link-color: var(--bs-secondary-text-emphasis); +} + +.alert-success { + --bs-alert-color: var(--bs-success-text-emphasis); + --bs-alert-bg: var(--bs-success-bg-subtle); + --bs-alert-border-color: var(--bs-success-border-subtle); + --bs-alert-link-color: var(--bs-success-text-emphasis); +} + +.alert-info { + --bs-alert-color: var(--bs-info-text-emphasis); + --bs-alert-bg: var(--bs-info-bg-subtle); + --bs-alert-border-color: var(--bs-info-border-subtle); + --bs-alert-link-color: var(--bs-info-text-emphasis); +} + +.alert-warning { + --bs-alert-color: var(--bs-warning-text-emphasis); + --bs-alert-bg: var(--bs-warning-bg-subtle); + --bs-alert-border-color: var(--bs-warning-border-subtle); + --bs-alert-link-color: var(--bs-warning-text-emphasis); +} + +.alert-danger { + --bs-alert-color: var(--bs-danger-text-emphasis); + --bs-alert-bg: var(--bs-danger-bg-subtle); + --bs-alert-border-color: var(--bs-danger-border-subtle); + --bs-alert-link-color: var(--bs-danger-text-emphasis); +} + +.alert-light { + --bs-alert-color: var(--bs-light-text-emphasis); + --bs-alert-bg: var(--bs-light-bg-subtle); + --bs-alert-border-color: var(--bs-light-border-subtle); + --bs-alert-link-color: var(--bs-light-text-emphasis); +} + +.alert-dark { + --bs-alert-color: var(--bs-dark-text-emphasis); + --bs-alert-bg: var(--bs-dark-bg-subtle); + --bs-alert-border-color: var(--bs-dark-border-subtle); + --bs-alert-link-color: var(--bs-dark-text-emphasis); +} + +@keyframes progress-bar-stripes { + 0% { + background-position-x: 1rem; + } +} +.progress, +.progress-stacked { + --bs-progress-height: 1rem; + --bs-progress-font-size: 0.75rem; + --bs-progress-bg: var(--bs-secondary-bg); + --bs-progress-border-radius: var(--bs-border-radius); + --bs-progress-box-shadow: var(--bs-box-shadow-inset); + --bs-progress-bar-color: #fff; + --bs-progress-bar-bg: #0d6efd; + --bs-progress-bar-transition: width 0.6s ease; + display: flex; + height: var(--bs-progress-height); + overflow: hidden; + font-size: var(--bs-progress-font-size); + background-color: var(--bs-progress-bg); + border-radius: var(--bs-progress-border-radius); +} + +.progress-bar { + display: flex; + flex-direction: column; + justify-content: center; + overflow: hidden; + color: var(--bs-progress-bar-color); + text-align: center; + white-space: nowrap; + background-color: var(--bs-progress-bar-bg); + transition: var(--bs-progress-bar-transition); +} +@media (prefers-reduced-motion: reduce) { + .progress-bar { + transition: none; + } +} + +.progress-bar-striped { + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-size: var(--bs-progress-height) var(--bs-progress-height); +} + +.progress-stacked > .progress { + overflow: visible; +} + +.progress-stacked > .progress > .progress-bar { + width: 100%; +} + +.progress-bar-animated { + animation: 1s linear infinite progress-bar-stripes; +} +@media (prefers-reduced-motion: reduce) { + .progress-bar-animated { + animation: none; + } +} + +.list-group { + --bs-list-group-color: var(--bs-body-color); + --bs-list-group-bg: var(--bs-body-bg); + --bs-list-group-border-color: var(--bs-border-color); + --bs-list-group-border-width: var(--bs-border-width); + --bs-list-group-border-radius: var(--bs-border-radius); + --bs-list-group-item-padding-x: 1rem; + --bs-list-group-item-padding-y: 0.5rem; + --bs-list-group-action-color: var(--bs-secondary-color); + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-tertiary-bg); + --bs-list-group-action-active-color: var(--bs-body-color); + --bs-list-group-action-active-bg: var(--bs-secondary-bg); + --bs-list-group-disabled-color: var(--bs-secondary-color); + --bs-list-group-disabled-bg: var(--bs-body-bg); + --bs-list-group-active-color: #fff; + --bs-list-group-active-bg: #0d6efd; + --bs-list-group-active-border-color: #0d6efd; + display: flex; + flex-direction: column; + padding-left: 0; + margin-bottom: 0; + border-radius: var(--bs-list-group-border-radius); +} + +.list-group-numbered { + list-style-type: none; + counter-reset: section; +} +.list-group-numbered > .list-group-item::before { + content: counters(section, ".") ". "; + counter-increment: section; +} + +.list-group-item-action { + width: 100%; + color: var(--bs-list-group-action-color); + text-align: inherit; +} +.list-group-item-action:hover, .list-group-item-action:focus { + z-index: 1; + color: var(--bs-list-group-action-hover-color); + text-decoration: none; + background-color: var(--bs-list-group-action-hover-bg); +} +.list-group-item-action:active { + color: var(--bs-list-group-action-active-color); + background-color: var(--bs-list-group-action-active-bg); +} + +.list-group-item { + position: relative; + display: block; + padding: var(--bs-list-group-item-padding-y) var(--bs-list-group-item-padding-x); + color: var(--bs-list-group-color); + text-decoration: none; + background-color: var(--bs-list-group-bg); + border: var(--bs-list-group-border-width) solid var(--bs-list-group-border-color); +} +.list-group-item:first-child { + border-top-left-radius: inherit; + border-top-right-radius: inherit; +} +.list-group-item:last-child { + border-bottom-right-radius: inherit; + border-bottom-left-radius: inherit; +} +.list-group-item.disabled, .list-group-item:disabled { + color: var(--bs-list-group-disabled-color); + pointer-events: none; + background-color: var(--bs-list-group-disabled-bg); +} +.list-group-item.active { + z-index: 2; + color: var(--bs-list-group-active-color); + background-color: var(--bs-list-group-active-bg); + border-color: var(--bs-list-group-active-border-color); +} +.list-group-item + .list-group-item { + border-top-width: 0; +} +.list-group-item + .list-group-item.active { + margin-top: calc(-1 * var(--bs-list-group-border-width)); + border-top-width: var(--bs-list-group-border-width); +} + +.list-group-horizontal { + flex-direction: row; +} +.list-group-horizontal > .list-group-item:first-child:not(:last-child) { + border-bottom-left-radius: var(--bs-list-group-border-radius); + border-top-right-radius: 0; +} +.list-group-horizontal > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--bs-list-group-border-radius); + border-bottom-left-radius: 0; +} +.list-group-horizontal > .list-group-item.active { + margin-top: 0; +} +.list-group-horizontal > .list-group-item + .list-group-item { + border-top-width: var(--bs-list-group-border-width); + border-left-width: 0; +} +.list-group-horizontal > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--bs-list-group-border-width)); + border-left-width: var(--bs-list-group-border-width); +} + +@media (min-width: 576px) { + .list-group-horizontal-sm { + flex-direction: row; + } + .list-group-horizontal-sm > .list-group-item:first-child:not(:last-child) { + border-bottom-left-radius: var(--bs-list-group-border-radius); + border-top-right-radius: 0; + } + .list-group-horizontal-sm > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--bs-list-group-border-radius); + border-bottom-left-radius: 0; + } + .list-group-horizontal-sm > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-sm > .list-group-item + .list-group-item { + border-top-width: var(--bs-list-group-border-width); + border-left-width: 0; + } + .list-group-horizontal-sm > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--bs-list-group-border-width)); + border-left-width: var(--bs-list-group-border-width); + } +} +@media (min-width: 768px) { + .list-group-horizontal-md { + flex-direction: row; + } + .list-group-horizontal-md > .list-group-item:first-child:not(:last-child) { + border-bottom-left-radius: var(--bs-list-group-border-radius); + border-top-right-radius: 0; + } + .list-group-horizontal-md > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--bs-list-group-border-radius); + border-bottom-left-radius: 0; + } + .list-group-horizontal-md > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-md > .list-group-item + .list-group-item { + border-top-width: var(--bs-list-group-border-width); + border-left-width: 0; + } + .list-group-horizontal-md > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--bs-list-group-border-width)); + border-left-width: var(--bs-list-group-border-width); + } +} +@media (min-width: 992px) { + .list-group-horizontal-lg { + flex-direction: row; + } + .list-group-horizontal-lg > .list-group-item:first-child:not(:last-child) { + border-bottom-left-radius: var(--bs-list-group-border-radius); + border-top-right-radius: 0; + } + .list-group-horizontal-lg > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--bs-list-group-border-radius); + border-bottom-left-radius: 0; + } + .list-group-horizontal-lg > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-lg > .list-group-item + .list-group-item { + border-top-width: var(--bs-list-group-border-width); + border-left-width: 0; + } + .list-group-horizontal-lg > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--bs-list-group-border-width)); + border-left-width: var(--bs-list-group-border-width); + } +} +@media (min-width: 1200px) { + .list-group-horizontal-xl { + flex-direction: row; + } + .list-group-horizontal-xl > .list-group-item:first-child:not(:last-child) { + border-bottom-left-radius: var(--bs-list-group-border-radius); + border-top-right-radius: 0; + } + .list-group-horizontal-xl > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--bs-list-group-border-radius); + border-bottom-left-radius: 0; + } + .list-group-horizontal-xl > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-xl > .list-group-item + .list-group-item { + border-top-width: var(--bs-list-group-border-width); + border-left-width: 0; + } + .list-group-horizontal-xl > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--bs-list-group-border-width)); + border-left-width: var(--bs-list-group-border-width); + } +} +@media (min-width: 1400px) { + .list-group-horizontal-xxl { + flex-direction: row; + } + .list-group-horizontal-xxl > .list-group-item:first-child:not(:last-child) { + border-bottom-left-radius: var(--bs-list-group-border-radius); + border-top-right-radius: 0; + } + .list-group-horizontal-xxl > .list-group-item:last-child:not(:first-child) { + border-top-right-radius: var(--bs-list-group-border-radius); + border-bottom-left-radius: 0; + } + .list-group-horizontal-xxl > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-xxl > .list-group-item + .list-group-item { + border-top-width: var(--bs-list-group-border-width); + border-left-width: 0; + } + .list-group-horizontal-xxl > .list-group-item + .list-group-item.active { + margin-left: calc(-1 * var(--bs-list-group-border-width)); + border-left-width: var(--bs-list-group-border-width); + } +} +.list-group-flush { + border-radius: 0; +} +.list-group-flush > .list-group-item { + border-width: 0 0 var(--bs-list-group-border-width); +} +.list-group-flush > .list-group-item:last-child { + border-bottom-width: 0; +} + +.list-group-item-primary { + --bs-list-group-color: var(--bs-primary-text-emphasis); + --bs-list-group-bg: var(--bs-primary-bg-subtle); + --bs-list-group-border-color: var(--bs-primary-border-subtle); + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-primary-border-subtle); + --bs-list-group-action-active-color: var(--bs-emphasis-color); + --bs-list-group-action-active-bg: var(--bs-primary-border-subtle); + --bs-list-group-active-color: var(--bs-primary-bg-subtle); + --bs-list-group-active-bg: var(--bs-primary-text-emphasis); + --bs-list-group-active-border-color: var(--bs-primary-text-emphasis); +} + +.list-group-item-secondary { + --bs-list-group-color: var(--bs-secondary-text-emphasis); + --bs-list-group-bg: var(--bs-secondary-bg-subtle); + --bs-list-group-border-color: var(--bs-secondary-border-subtle); + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-secondary-border-subtle); + --bs-list-group-action-active-color: var(--bs-emphasis-color); + --bs-list-group-action-active-bg: var(--bs-secondary-border-subtle); + --bs-list-group-active-color: var(--bs-secondary-bg-subtle); + --bs-list-group-active-bg: var(--bs-secondary-text-emphasis); + --bs-list-group-active-border-color: var(--bs-secondary-text-emphasis); +} + +.list-group-item-success { + --bs-list-group-color: var(--bs-success-text-emphasis); + --bs-list-group-bg: var(--bs-success-bg-subtle); + --bs-list-group-border-color: var(--bs-success-border-subtle); + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-success-border-subtle); + --bs-list-group-action-active-color: var(--bs-emphasis-color); + --bs-list-group-action-active-bg: var(--bs-success-border-subtle); + --bs-list-group-active-color: var(--bs-success-bg-subtle); + --bs-list-group-active-bg: var(--bs-success-text-emphasis); + --bs-list-group-active-border-color: var(--bs-success-text-emphasis); +} + +.list-group-item-info { + --bs-list-group-color: var(--bs-info-text-emphasis); + --bs-list-group-bg: var(--bs-info-bg-subtle); + --bs-list-group-border-color: var(--bs-info-border-subtle); + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-info-border-subtle); + --bs-list-group-action-active-color: var(--bs-emphasis-color); + --bs-list-group-action-active-bg: var(--bs-info-border-subtle); + --bs-list-group-active-color: var(--bs-info-bg-subtle); + --bs-list-group-active-bg: var(--bs-info-text-emphasis); + --bs-list-group-active-border-color: var(--bs-info-text-emphasis); +} + +.list-group-item-warning { + --bs-list-group-color: var(--bs-warning-text-emphasis); + --bs-list-group-bg: var(--bs-warning-bg-subtle); + --bs-list-group-border-color: var(--bs-warning-border-subtle); + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-warning-border-subtle); + --bs-list-group-action-active-color: var(--bs-emphasis-color); + --bs-list-group-action-active-bg: var(--bs-warning-border-subtle); + --bs-list-group-active-color: var(--bs-warning-bg-subtle); + --bs-list-group-active-bg: var(--bs-warning-text-emphasis); + --bs-list-group-active-border-color: var(--bs-warning-text-emphasis); +} + +.list-group-item-danger { + --bs-list-group-color: var(--bs-danger-text-emphasis); + --bs-list-group-bg: var(--bs-danger-bg-subtle); + --bs-list-group-border-color: var(--bs-danger-border-subtle); + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-danger-border-subtle); + --bs-list-group-action-active-color: var(--bs-emphasis-color); + --bs-list-group-action-active-bg: var(--bs-danger-border-subtle); + --bs-list-group-active-color: var(--bs-danger-bg-subtle); + --bs-list-group-active-bg: var(--bs-danger-text-emphasis); + --bs-list-group-active-border-color: var(--bs-danger-text-emphasis); +} + +.list-group-item-light { + --bs-list-group-color: var(--bs-light-text-emphasis); + --bs-list-group-bg: var(--bs-light-bg-subtle); + --bs-list-group-border-color: var(--bs-light-border-subtle); + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-light-border-subtle); + --bs-list-group-action-active-color: var(--bs-emphasis-color); + --bs-list-group-action-active-bg: var(--bs-light-border-subtle); + --bs-list-group-active-color: var(--bs-light-bg-subtle); + --bs-list-group-active-bg: var(--bs-light-text-emphasis); + --bs-list-group-active-border-color: var(--bs-light-text-emphasis); +} + +.list-group-item-dark { + --bs-list-group-color: var(--bs-dark-text-emphasis); + --bs-list-group-bg: var(--bs-dark-bg-subtle); + --bs-list-group-border-color: var(--bs-dark-border-subtle); + --bs-list-group-action-hover-color: var(--bs-emphasis-color); + --bs-list-group-action-hover-bg: var(--bs-dark-border-subtle); + --bs-list-group-action-active-color: var(--bs-emphasis-color); + --bs-list-group-action-active-bg: var(--bs-dark-border-subtle); + --bs-list-group-active-color: var(--bs-dark-bg-subtle); + --bs-list-group-active-bg: var(--bs-dark-text-emphasis); + --bs-list-group-active-border-color: var(--bs-dark-text-emphasis); +} + +.btn-close { + --bs-btn-close-color: #000; + --bs-btn-close-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e"); + --bs-btn-close-opacity: 0.5; + --bs-btn-close-hover-opacity: 0.75; + --bs-btn-close-focus-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25); + --bs-btn-close-focus-opacity: 1; + --bs-btn-close-disabled-opacity: 0.25; + --bs-btn-close-white-filter: invert(1) grayscale(100%) brightness(200%); + box-sizing: content-box; + width: 1em; + height: 1em; + padding: 0.25em 0.25em; + color: var(--bs-btn-close-color); + background: transparent var(--bs-btn-close-bg) center/1em auto no-repeat; + border: 0; + border-radius: 0.375rem; + opacity: var(--bs-btn-close-opacity); +} +.btn-close:hover { + color: var(--bs-btn-close-color); + text-decoration: none; + opacity: var(--bs-btn-close-hover-opacity); +} +.btn-close:focus { + outline: 0; + box-shadow: var(--bs-btn-close-focus-shadow); + opacity: var(--bs-btn-close-focus-opacity); +} +.btn-close:disabled, .btn-close.disabled { + pointer-events: none; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + opacity: var(--bs-btn-close-disabled-opacity); +} + +.btn-close-white { + filter: var(--bs-btn-close-white-filter); +} + +[data-bs-theme=dark] .btn-close { + filter: var(--bs-btn-close-white-filter); +} + +.toast { + --bs-toast-zindex: 1090; + --bs-toast-padding-x: 0.75rem; + --bs-toast-padding-y: 0.5rem; + --bs-toast-spacing: 1.5rem; + --bs-toast-max-width: 350px; + --bs-toast-font-size: 0.875rem; + --bs-toast-color: ; + --bs-toast-bg: rgba(var(--bs-body-bg-rgb), 0.85); + --bs-toast-border-width: var(--bs-border-width); + --bs-toast-border-color: var(--bs-border-color-translucent); + --bs-toast-border-radius: var(--bs-border-radius); + --bs-toast-box-shadow: var(--bs-box-shadow); + --bs-toast-header-color: var(--bs-secondary-color); + --bs-toast-header-bg: rgba(var(--bs-body-bg-rgb), 0.85); + --bs-toast-header-border-color: var(--bs-border-color-translucent); + width: var(--bs-toast-max-width); + max-width: 100%; + font-size: var(--bs-toast-font-size); + color: var(--bs-toast-color); + pointer-events: auto; + background-color: var(--bs-toast-bg); + background-clip: padding-box; + border: var(--bs-toast-border-width) solid var(--bs-toast-border-color); + box-shadow: var(--bs-toast-box-shadow); + border-radius: var(--bs-toast-border-radius); +} +.toast.showing { + opacity: 0; +} +.toast:not(.show) { + display: none; +} + +.toast-container { + --bs-toast-zindex: 1090; + position: absolute; + z-index: var(--bs-toast-zindex); + width: -webkit-max-content; + width: -moz-max-content; + width: max-content; + max-width: 100%; + pointer-events: none; +} +.toast-container > :not(:last-child) { + margin-bottom: var(--bs-toast-spacing); +} + +.toast-header { + display: flex; + align-items: center; + padding: var(--bs-toast-padding-y) var(--bs-toast-padding-x); + color: var(--bs-toast-header-color); + background-color: var(--bs-toast-header-bg); + background-clip: padding-box; + border-bottom: var(--bs-toast-border-width) solid var(--bs-toast-header-border-color); + border-top-left-radius: calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width)); + border-top-right-radius: calc(var(--bs-toast-border-radius) - var(--bs-toast-border-width)); +} +.toast-header .btn-close { + margin-right: calc(-0.5 * var(--bs-toast-padding-x)); + margin-left: var(--bs-toast-padding-x); +} + +.toast-body { + padding: var(--bs-toast-padding-x); + word-wrap: break-word; +} + +.modal { + --bs-modal-zindex: 1055; + --bs-modal-width: 500px; + --bs-modal-padding: 1rem; + --bs-modal-margin: 0.5rem; + --bs-modal-color: ; + --bs-modal-bg: var(--bs-body-bg); + --bs-modal-border-color: var(--bs-border-color-translucent); + --bs-modal-border-width: var(--bs-border-width); + --bs-modal-border-radius: var(--bs-border-radius-lg); + --bs-modal-box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075); + --bs-modal-inner-border-radius: calc(var(--bs-border-radius-lg) - (var(--bs-border-width))); + --bs-modal-header-padding-x: 1rem; + --bs-modal-header-padding-y: 1rem; + --bs-modal-header-padding: 1rem 1rem; + --bs-modal-header-border-color: var(--bs-border-color); + --bs-modal-header-border-width: var(--bs-border-width); + --bs-modal-title-line-height: 1.5; + --bs-modal-footer-gap: 0.5rem; + --bs-modal-footer-bg: ; + --bs-modal-footer-border-color: var(--bs-border-color); + --bs-modal-footer-border-width: var(--bs-border-width); + position: fixed; + top: 0; + left: 0; + z-index: var(--bs-modal-zindex); + display: none; + width: 100%; + height: 100%; + overflow-x: hidden; + overflow-y: auto; + outline: 0; +} + +.modal-dialog { + position: relative; + width: auto; + margin: var(--bs-modal-margin); + pointer-events: none; +} +.modal.fade .modal-dialog { + transition: transform 0.3s ease-out; + transform: translate(0, -50px); +} +@media (prefers-reduced-motion: reduce) { + .modal.fade .modal-dialog { + transition: none; + } +} +.modal.show .modal-dialog { + transform: none; +} +.modal.modal-static .modal-dialog { + transform: scale(1.02); +} + +.modal-dialog-scrollable { + height: calc(100% - var(--bs-modal-margin) * 2); +} +.modal-dialog-scrollable .modal-content { + max-height: 100%; + overflow: hidden; +} +.modal-dialog-scrollable .modal-body { + overflow-y: auto; +} + +.modal-dialog-centered { + display: flex; + align-items: center; + min-height: calc(100% - var(--bs-modal-margin) * 2); +} + +.modal-content { + position: relative; + display: flex; + flex-direction: column; + width: 100%; + color: var(--bs-modal-color); + pointer-events: auto; + background-color: var(--bs-modal-bg); + background-clip: padding-box; + border: var(--bs-modal-border-width) solid var(--bs-modal-border-color); + border-radius: var(--bs-modal-border-radius); + outline: 0; +} + +.modal-backdrop { + --bs-backdrop-zindex: 1050; + --bs-backdrop-bg: #000; + --bs-backdrop-opacity: 0.5; + position: fixed; + top: 0; + left: 0; + z-index: var(--bs-backdrop-zindex); + width: 100vw; + height: 100vh; + background-color: var(--bs-backdrop-bg); +} +.modal-backdrop.fade { + opacity: 0; +} +.modal-backdrop.show { + opacity: var(--bs-backdrop-opacity); +} + +.modal-header { + display: flex; + flex-shrink: 0; + align-items: center; + justify-content: space-between; + padding: var(--bs-modal-header-padding); + border-bottom: var(--bs-modal-header-border-width) solid var(--bs-modal-header-border-color); + border-top-left-radius: var(--bs-modal-inner-border-radius); + border-top-right-radius: var(--bs-modal-inner-border-radius); +} +.modal-header .btn-close { + padding: calc(var(--bs-modal-header-padding-y) * 0.5) calc(var(--bs-modal-header-padding-x) * 0.5); + margin: calc(-0.5 * var(--bs-modal-header-padding-y)) calc(-0.5 * var(--bs-modal-header-padding-x)) calc(-0.5 * var(--bs-modal-header-padding-y)) auto; +} + +.modal-title { + margin-bottom: 0; + line-height: var(--bs-modal-title-line-height); +} + +.modal-body { + position: relative; + flex: 1 1 auto; + padding: var(--bs-modal-padding); +} + +.modal-footer { + display: flex; + flex-shrink: 0; + flex-wrap: wrap; + align-items: center; + justify-content: flex-end; + padding: calc(var(--bs-modal-padding) - var(--bs-modal-footer-gap) * 0.5); + background-color: var(--bs-modal-footer-bg); + border-top: var(--bs-modal-footer-border-width) solid var(--bs-modal-footer-border-color); + border-bottom-right-radius: var(--bs-modal-inner-border-radius); + border-bottom-left-radius: var(--bs-modal-inner-border-radius); +} +.modal-footer > * { + margin: calc(var(--bs-modal-footer-gap) * 0.5); +} + +@media (min-width: 576px) { + .modal { + --bs-modal-margin: 1.75rem; + --bs-modal-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15); + } + .modal-dialog { + max-width: var(--bs-modal-width); + margin-right: auto; + margin-left: auto; + } + .modal-sm { + --bs-modal-width: 300px; + } +} +@media (min-width: 992px) { + .modal-lg, + .modal-xl { + --bs-modal-width: 800px; + } +} +@media (min-width: 1200px) { + .modal-xl { + --bs-modal-width: 1140px; + } +} +.modal-fullscreen { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; +} +.modal-fullscreen .modal-content { + height: 100%; + border: 0; + border-radius: 0; +} +.modal-fullscreen .modal-header, +.modal-fullscreen .modal-footer { + border-radius: 0; +} +.modal-fullscreen .modal-body { + overflow-y: auto; +} + +@media (max-width: 575.98px) { + .modal-fullscreen-sm-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-sm-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-sm-down .modal-header, + .modal-fullscreen-sm-down .modal-footer { + border-radius: 0; + } + .modal-fullscreen-sm-down .modal-body { + overflow-y: auto; + } +} +@media (max-width: 767.98px) { + .modal-fullscreen-md-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-md-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-md-down .modal-header, + .modal-fullscreen-md-down .modal-footer { + border-radius: 0; + } + .modal-fullscreen-md-down .modal-body { + overflow-y: auto; + } +} +@media (max-width: 991.98px) { + .modal-fullscreen-lg-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-lg-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-lg-down .modal-header, + .modal-fullscreen-lg-down .modal-footer { + border-radius: 0; + } + .modal-fullscreen-lg-down .modal-body { + overflow-y: auto; + } +} +@media (max-width: 1199.98px) { + .modal-fullscreen-xl-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-xl-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-xl-down .modal-header, + .modal-fullscreen-xl-down .modal-footer { + border-radius: 0; + } + .modal-fullscreen-xl-down .modal-body { + overflow-y: auto; + } +} +@media (max-width: 1399.98px) { + .modal-fullscreen-xxl-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-xxl-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-xxl-down .modal-header, + .modal-fullscreen-xxl-down .modal-footer { + border-radius: 0; + } + .modal-fullscreen-xxl-down .modal-body { + overflow-y: auto; + } +} +.tooltip { + --bs-tooltip-zindex: 1080; + --bs-tooltip-max-width: 200px; + --bs-tooltip-padding-x: 0.5rem; + --bs-tooltip-padding-y: 0.25rem; + --bs-tooltip-margin: ; + --bs-tooltip-font-size: 0.875rem; + --bs-tooltip-color: var(--bs-body-bg); + --bs-tooltip-bg: var(--bs-emphasis-color); + --bs-tooltip-border-radius: var(--bs-border-radius); + --bs-tooltip-opacity: 0.9; + --bs-tooltip-arrow-width: 0.8rem; + --bs-tooltip-arrow-height: 0.4rem; + z-index: var(--bs-tooltip-zindex); + display: block; + margin: var(--bs-tooltip-margin); + font-family: var(--bs-font-sans-serif); + font-style: normal; + font-weight: 400; + line-height: 1.5; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + white-space: normal; + word-spacing: normal; + line-break: auto; + font-size: var(--bs-tooltip-font-size); + word-wrap: break-word; + opacity: 0; +} +.tooltip.show { + opacity: var(--bs-tooltip-opacity); +} +.tooltip .tooltip-arrow { + display: block; + width: var(--bs-tooltip-arrow-width); + height: var(--bs-tooltip-arrow-height); +} +.tooltip .tooltip-arrow::before { + position: absolute; + content: ""; + border-color: transparent; + border-style: solid; +} + +.bs-tooltip-top .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow { + bottom: calc(-1 * var(--bs-tooltip-arrow-height)); +} +.bs-tooltip-top .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before { + top: -1px; + border-width: var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * 0.5) 0; + border-top-color: var(--bs-tooltip-bg); +} + +/* rtl:begin:ignore */ +.bs-tooltip-end .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow { + left: calc(-1 * var(--bs-tooltip-arrow-height)); + width: var(--bs-tooltip-arrow-height); + height: var(--bs-tooltip-arrow-width); +} +.bs-tooltip-end .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before { + right: -1px; + border-width: calc(var(--bs-tooltip-arrow-width) * 0.5) var(--bs-tooltip-arrow-height) calc(var(--bs-tooltip-arrow-width) * 0.5) 0; + border-right-color: var(--bs-tooltip-bg); +} + +/* rtl:end:ignore */ +.bs-tooltip-bottom .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow { + top: calc(-1 * var(--bs-tooltip-arrow-height)); +} +.bs-tooltip-bottom .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before { + bottom: -1px; + border-width: 0 calc(var(--bs-tooltip-arrow-width) * 0.5) var(--bs-tooltip-arrow-height); + border-bottom-color: var(--bs-tooltip-bg); +} + +/* rtl:begin:ignore */ +.bs-tooltip-start .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow { + right: calc(-1 * var(--bs-tooltip-arrow-height)); + width: var(--bs-tooltip-arrow-height); + height: var(--bs-tooltip-arrow-width); +} +.bs-tooltip-start .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before { + left: -1px; + border-width: calc(var(--bs-tooltip-arrow-width) * 0.5) 0 calc(var(--bs-tooltip-arrow-width) * 0.5) var(--bs-tooltip-arrow-height); + border-left-color: var(--bs-tooltip-bg); +} + +/* rtl:end:ignore */ +.tooltip-inner { + max-width: var(--bs-tooltip-max-width); + padding: var(--bs-tooltip-padding-y) var(--bs-tooltip-padding-x); + color: var(--bs-tooltip-color); + text-align: center; + background-color: var(--bs-tooltip-bg); + border-radius: var(--bs-tooltip-border-radius); +} + +.popover { + --bs-popover-zindex: 1070; + --bs-popover-max-width: 276px; + --bs-popover-font-size: 0.875rem; + --bs-popover-bg: var(--bs-body-bg); + --bs-popover-border-width: var(--bs-border-width); + --bs-popover-border-color: var(--bs-border-color-translucent); + --bs-popover-border-radius: var(--bs-border-radius-lg); + --bs-popover-inner-border-radius: calc(var(--bs-border-radius-lg) - var(--bs-border-width)); + --bs-popover-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15); + --bs-popover-header-padding-x: 1rem; + --bs-popover-header-padding-y: 0.5rem; + --bs-popover-header-font-size: 1rem; + --bs-popover-header-color: inherit; + --bs-popover-header-bg: var(--bs-secondary-bg); + --bs-popover-body-padding-x: 1rem; + --bs-popover-body-padding-y: 1rem; + --bs-popover-body-color: var(--bs-body-color); + --bs-popover-arrow-width: 1rem; + --bs-popover-arrow-height: 0.5rem; + --bs-popover-arrow-border: var(--bs-popover-border-color); + z-index: var(--bs-popover-zindex); + display: block; + max-width: var(--bs-popover-max-width); + font-family: var(--bs-font-sans-serif); + font-style: normal; + font-weight: 400; + line-height: 1.5; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + white-space: normal; + word-spacing: normal; + line-break: auto; + font-size: var(--bs-popover-font-size); + word-wrap: break-word; + background-color: var(--bs-popover-bg); + background-clip: padding-box; + border: var(--bs-popover-border-width) solid var(--bs-popover-border-color); + border-radius: var(--bs-popover-border-radius); +} +.popover .popover-arrow { + display: block; + width: var(--bs-popover-arrow-width); + height: var(--bs-popover-arrow-height); +} +.popover .popover-arrow::before, .popover .popover-arrow::after { + position: absolute; + display: block; + content: ""; + border-color: transparent; + border-style: solid; + border-width: 0; +} + +.bs-popover-top > .popover-arrow, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow { + bottom: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width)); +} +.bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::before, .bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::after { + border-width: var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * 0.5) 0; +} +.bs-popover-top > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::before { + bottom: 0; + border-top-color: var(--bs-popover-arrow-border); +} +.bs-popover-top > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::after { + bottom: var(--bs-popover-border-width); + border-top-color: var(--bs-popover-bg); +} + +/* rtl:begin:ignore */ +.bs-popover-end > .popover-arrow, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow { + left: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width)); + width: var(--bs-popover-arrow-height); + height: var(--bs-popover-arrow-width); +} +.bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::before, .bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::after { + border-width: calc(var(--bs-popover-arrow-width) * 0.5) var(--bs-popover-arrow-height) calc(var(--bs-popover-arrow-width) * 0.5) 0; +} +.bs-popover-end > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::before { + left: 0; + border-right-color: var(--bs-popover-arrow-border); +} +.bs-popover-end > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::after { + left: var(--bs-popover-border-width); + border-right-color: var(--bs-popover-bg); +} + +/* rtl:end:ignore */ +.bs-popover-bottom > .popover-arrow, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow { + top: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width)); +} +.bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::before, .bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::after { + border-width: 0 calc(var(--bs-popover-arrow-width) * 0.5) var(--bs-popover-arrow-height); +} +.bs-popover-bottom > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::before { + top: 0; + border-bottom-color: var(--bs-popover-arrow-border); +} +.bs-popover-bottom > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::after { + top: var(--bs-popover-border-width); + border-bottom-color: var(--bs-popover-bg); +} +.bs-popover-bottom .popover-header::before, .bs-popover-auto[data-popper-placement^=bottom] .popover-header::before { + position: absolute; + top: 0; + left: 50%; + display: block; + width: var(--bs-popover-arrow-width); + margin-left: calc(-0.5 * var(--bs-popover-arrow-width)); + content: ""; + border-bottom: var(--bs-popover-border-width) solid var(--bs-popover-header-bg); +} + +/* rtl:begin:ignore */ +.bs-popover-start > .popover-arrow, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow { + right: calc(-1 * (var(--bs-popover-arrow-height)) - var(--bs-popover-border-width)); + width: var(--bs-popover-arrow-height); + height: var(--bs-popover-arrow-width); +} +.bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::before, .bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::after { + border-width: calc(var(--bs-popover-arrow-width) * 0.5) 0 calc(var(--bs-popover-arrow-width) * 0.5) var(--bs-popover-arrow-height); +} +.bs-popover-start > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::before { + right: 0; + border-left-color: var(--bs-popover-arrow-border); +} +.bs-popover-start > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::after { + right: var(--bs-popover-border-width); + border-left-color: var(--bs-popover-bg); +} + +/* rtl:end:ignore */ +.popover-header { + padding: var(--bs-popover-header-padding-y) var(--bs-popover-header-padding-x); + margin-bottom: 0; + font-size: var(--bs-popover-header-font-size); + color: var(--bs-popover-header-color); + background-color: var(--bs-popover-header-bg); + border-bottom: var(--bs-popover-border-width) solid var(--bs-popover-border-color); + border-top-left-radius: var(--bs-popover-inner-border-radius); + border-top-right-radius: var(--bs-popover-inner-border-radius); +} +.popover-header:empty { + display: none; +} + +.popover-body { + padding: var(--bs-popover-body-padding-y) var(--bs-popover-body-padding-x); + color: var(--bs-popover-body-color); +} + +.carousel { + position: relative; +} + +.carousel.pointer-event { + touch-action: pan-y; +} + +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} +.carousel-inner::after { + display: block; + clear: both; + content: ""; +} + +.carousel-item { + position: relative; + display: none; + float: left; + width: 100%; + margin-right: -100%; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + transition: transform 0.6s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .carousel-item { + transition: none; + } +} + +.carousel-item.active, +.carousel-item-next, +.carousel-item-prev { + display: block; +} + +.carousel-item-next:not(.carousel-item-start), +.active.carousel-item-end { + transform: translateX(100%); +} + +.carousel-item-prev:not(.carousel-item-end), +.active.carousel-item-start { + transform: translateX(-100%); +} + +.carousel-fade .carousel-item { + opacity: 0; + transition-property: opacity; + transform: none; +} +.carousel-fade .carousel-item.active, +.carousel-fade .carousel-item-next.carousel-item-start, +.carousel-fade .carousel-item-prev.carousel-item-end { + z-index: 1; + opacity: 1; +} +.carousel-fade .active.carousel-item-start, +.carousel-fade .active.carousel-item-end { + z-index: 0; + opacity: 0; + transition: opacity 0s 0.6s; +} +@media (prefers-reduced-motion: reduce) { + .carousel-fade .active.carousel-item-start, + .carousel-fade .active.carousel-item-end { + transition: none; + } +} + +.carousel-control-prev, +.carousel-control-next { + position: absolute; + top: 0; + bottom: 0; + z-index: 1; + display: flex; + align-items: center; + justify-content: center; + width: 15%; + padding: 0; + color: #fff; + text-align: center; + background: none; + border: 0; + opacity: 0.5; + transition: opacity 0.15s ease; +} +@media (prefers-reduced-motion: reduce) { + .carousel-control-prev, + .carousel-control-next { + transition: none; + } +} +.carousel-control-prev:hover, .carousel-control-prev:focus, +.carousel-control-next:hover, +.carousel-control-next:focus { + color: #fff; + text-decoration: none; + outline: 0; + opacity: 0.9; +} + +.carousel-control-prev { + left: 0; +} + +.carousel-control-next { + right: 0; +} + +.carousel-control-prev-icon, +.carousel-control-next-icon { + display: inline-block; + width: 2rem; + height: 2rem; + background-repeat: no-repeat; + background-position: 50%; + background-size: 100% 100%; +} + +/* rtl:options: { + "autoRename": true, + "stringMap":[ { + "name" : "prev-next", + "search" : "prev", + "replace" : "next" + } ] +} */ +.carousel-control-prev-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e"); +} + +.carousel-control-next-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); +} + +.carousel-indicators { + position: absolute; + right: 0; + bottom: 0; + left: 0; + z-index: 2; + display: flex; + justify-content: center; + padding: 0; + margin-right: 15%; + margin-bottom: 1rem; + margin-left: 15%; +} +.carousel-indicators [data-bs-target] { + box-sizing: content-box; + flex: 0 1 auto; + width: 30px; + height: 3px; + padding: 0; + margin-right: 3px; + margin-left: 3px; + text-indent: -999px; + cursor: pointer; + background-color: #fff; + background-clip: padding-box; + border: 0; + border-top: 10px solid transparent; + border-bottom: 10px solid transparent; + opacity: 0.5; + transition: opacity 0.6s ease; +} +@media (prefers-reduced-motion: reduce) { + .carousel-indicators [data-bs-target] { + transition: none; + } +} +.carousel-indicators .active { + opacity: 1; +} + +.carousel-caption { + position: absolute; + right: 15%; + bottom: 1.25rem; + left: 15%; + padding-top: 1.25rem; + padding-bottom: 1.25rem; + color: #fff; + text-align: center; +} + +.carousel-dark .carousel-control-prev-icon, +.carousel-dark .carousel-control-next-icon { + filter: invert(1) grayscale(100); +} +.carousel-dark .carousel-indicators [data-bs-target] { + background-color: #000; +} +.carousel-dark .carousel-caption { + color: #000; +} + +[data-bs-theme=dark] .carousel .carousel-control-prev-icon, +[data-bs-theme=dark] .carousel .carousel-control-next-icon, [data-bs-theme=dark].carousel .carousel-control-prev-icon, +[data-bs-theme=dark].carousel .carousel-control-next-icon { + filter: invert(1) grayscale(100); +} +[data-bs-theme=dark] .carousel .carousel-indicators [data-bs-target], [data-bs-theme=dark].carousel .carousel-indicators [data-bs-target] { + background-color: #000; +} +[data-bs-theme=dark] .carousel .carousel-caption, [data-bs-theme=dark].carousel .carousel-caption { + color: #000; +} + +.spinner-grow, +.spinner-border { + display: inline-block; + width: var(--bs-spinner-width); + height: var(--bs-spinner-height); + vertical-align: var(--bs-spinner-vertical-align); + border-radius: 50%; + animation: var(--bs-spinner-animation-speed) linear infinite var(--bs-spinner-animation-name); +} + +@keyframes spinner-border { + to { + transform: rotate(360deg) /* rtl:ignore */; + } +} +.spinner-border { + --bs-spinner-width: 2rem; + --bs-spinner-height: 2rem; + --bs-spinner-vertical-align: -0.125em; + --bs-spinner-border-width: 0.25em; + --bs-spinner-animation-speed: 0.75s; + --bs-spinner-animation-name: spinner-border; + border: var(--bs-spinner-border-width) solid currentcolor; + border-right-color: transparent; +} + +.spinner-border-sm { + --bs-spinner-width: 1rem; + --bs-spinner-height: 1rem; + --bs-spinner-border-width: 0.2em; +} + +@keyframes spinner-grow { + 0% { + transform: scale(0); + } + 50% { + opacity: 1; + transform: none; + } +} +.spinner-grow { + --bs-spinner-width: 2rem; + --bs-spinner-height: 2rem; + --bs-spinner-vertical-align: -0.125em; + --bs-spinner-animation-speed: 0.75s; + --bs-spinner-animation-name: spinner-grow; + background-color: currentcolor; + opacity: 0; +} + +.spinner-grow-sm { + --bs-spinner-width: 1rem; + --bs-spinner-height: 1rem; +} + +@media (prefers-reduced-motion: reduce) { + .spinner-border, + .spinner-grow { + --bs-spinner-animation-speed: 1.5s; + } +} +.offcanvas, .offcanvas-xxl, .offcanvas-xl, .offcanvas-lg, .offcanvas-md, .offcanvas-sm { + --bs-offcanvas-zindex: 1045; + --bs-offcanvas-width: 400px; + --bs-offcanvas-height: 30vh; + --bs-offcanvas-padding-x: 1rem; + --bs-offcanvas-padding-y: 1rem; + --bs-offcanvas-color: var(--bs-body-color); + --bs-offcanvas-bg: var(--bs-body-bg); + --bs-offcanvas-border-width: var(--bs-border-width); + --bs-offcanvas-border-color: var(--bs-border-color-translucent); + --bs-offcanvas-box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075); + --bs-offcanvas-transition: transform 0.3s ease-in-out; + --bs-offcanvas-title-line-height: 1.5; +} + +@media (max-width: 575.98px) { + .offcanvas-sm { + position: fixed; + bottom: 0; + z-index: var(--bs-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--bs-offcanvas-color); + visibility: hidden; + background-color: var(--bs-offcanvas-bg); + background-clip: padding-box; + outline: 0; + transition: var(--bs-offcanvas-transition); + } +} +@media (max-width: 575.98px) and (prefers-reduced-motion: reduce) { + .offcanvas-sm { + transition: none; + } +} +@media (max-width: 575.98px) { + .offcanvas-sm.offcanvas-start { + top: 0; + left: 0; + width: var(--bs-offcanvas-width); + border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(-100%); + } + .offcanvas-sm.offcanvas-end { + top: 0; + right: 0; + width: var(--bs-offcanvas-width); + border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(100%); + } + .offcanvas-sm.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(-100%); + } + .offcanvas-sm.offcanvas-bottom { + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(100%); + } + .offcanvas-sm.showing, .offcanvas-sm.show:not(.hiding) { + transform: none; + } + .offcanvas-sm.showing, .offcanvas-sm.hiding, .offcanvas-sm.show { + visibility: visible; + } +} +@media (min-width: 576px) { + .offcanvas-sm { + --bs-offcanvas-height: auto; + --bs-offcanvas-border-width: 0; + background-color: transparent !important; + } + .offcanvas-sm .offcanvas-header { + display: none; + } + .offcanvas-sm .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + background-color: transparent !important; + } +} + +@media (max-width: 767.98px) { + .offcanvas-md { + position: fixed; + bottom: 0; + z-index: var(--bs-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--bs-offcanvas-color); + visibility: hidden; + background-color: var(--bs-offcanvas-bg); + background-clip: padding-box; + outline: 0; + transition: var(--bs-offcanvas-transition); + } +} +@media (max-width: 767.98px) and (prefers-reduced-motion: reduce) { + .offcanvas-md { + transition: none; + } +} +@media (max-width: 767.98px) { + .offcanvas-md.offcanvas-start { + top: 0; + left: 0; + width: var(--bs-offcanvas-width); + border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(-100%); + } + .offcanvas-md.offcanvas-end { + top: 0; + right: 0; + width: var(--bs-offcanvas-width); + border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(100%); + } + .offcanvas-md.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(-100%); + } + .offcanvas-md.offcanvas-bottom { + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(100%); + } + .offcanvas-md.showing, .offcanvas-md.show:not(.hiding) { + transform: none; + } + .offcanvas-md.showing, .offcanvas-md.hiding, .offcanvas-md.show { + visibility: visible; + } +} +@media (min-width: 768px) { + .offcanvas-md { + --bs-offcanvas-height: auto; + --bs-offcanvas-border-width: 0; + background-color: transparent !important; + } + .offcanvas-md .offcanvas-header { + display: none; + } + .offcanvas-md .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + background-color: transparent !important; + } +} + +@media (max-width: 991.98px) { + .offcanvas-lg { + position: fixed; + bottom: 0; + z-index: var(--bs-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--bs-offcanvas-color); + visibility: hidden; + background-color: var(--bs-offcanvas-bg); + background-clip: padding-box; + outline: 0; + transition: var(--bs-offcanvas-transition); + } +} +@media (max-width: 991.98px) and (prefers-reduced-motion: reduce) { + .offcanvas-lg { + transition: none; + } +} +@media (max-width: 991.98px) { + .offcanvas-lg.offcanvas-start { + top: 0; + left: 0; + width: var(--bs-offcanvas-width); + border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(-100%); + } + .offcanvas-lg.offcanvas-end { + top: 0; + right: 0; + width: var(--bs-offcanvas-width); + border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(100%); + } + .offcanvas-lg.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(-100%); + } + .offcanvas-lg.offcanvas-bottom { + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(100%); + } + .offcanvas-lg.showing, .offcanvas-lg.show:not(.hiding) { + transform: none; + } + .offcanvas-lg.showing, .offcanvas-lg.hiding, .offcanvas-lg.show { + visibility: visible; + } +} +@media (min-width: 992px) { + .offcanvas-lg { + --bs-offcanvas-height: auto; + --bs-offcanvas-border-width: 0; + background-color: transparent !important; + } + .offcanvas-lg .offcanvas-header { + display: none; + } + .offcanvas-lg .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + background-color: transparent !important; + } +} + +@media (max-width: 1199.98px) { + .offcanvas-xl { + position: fixed; + bottom: 0; + z-index: var(--bs-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--bs-offcanvas-color); + visibility: hidden; + background-color: var(--bs-offcanvas-bg); + background-clip: padding-box; + outline: 0; + transition: var(--bs-offcanvas-transition); + } +} +@media (max-width: 1199.98px) and (prefers-reduced-motion: reduce) { + .offcanvas-xl { + transition: none; + } +} +@media (max-width: 1199.98px) { + .offcanvas-xl.offcanvas-start { + top: 0; + left: 0; + width: var(--bs-offcanvas-width); + border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(-100%); + } + .offcanvas-xl.offcanvas-end { + top: 0; + right: 0; + width: var(--bs-offcanvas-width); + border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(100%); + } + .offcanvas-xl.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(-100%); + } + .offcanvas-xl.offcanvas-bottom { + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(100%); + } + .offcanvas-xl.showing, .offcanvas-xl.show:not(.hiding) { + transform: none; + } + .offcanvas-xl.showing, .offcanvas-xl.hiding, .offcanvas-xl.show { + visibility: visible; + } +} +@media (min-width: 1200px) { + .offcanvas-xl { + --bs-offcanvas-height: auto; + --bs-offcanvas-border-width: 0; + background-color: transparent !important; + } + .offcanvas-xl .offcanvas-header { + display: none; + } + .offcanvas-xl .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + background-color: transparent !important; + } +} + +@media (max-width: 1399.98px) { + .offcanvas-xxl { + position: fixed; + bottom: 0; + z-index: var(--bs-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--bs-offcanvas-color); + visibility: hidden; + background-color: var(--bs-offcanvas-bg); + background-clip: padding-box; + outline: 0; + transition: var(--bs-offcanvas-transition); + } +} +@media (max-width: 1399.98px) and (prefers-reduced-motion: reduce) { + .offcanvas-xxl { + transition: none; + } +} +@media (max-width: 1399.98px) { + .offcanvas-xxl.offcanvas-start { + top: 0; + left: 0; + width: var(--bs-offcanvas-width); + border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(-100%); + } + .offcanvas-xxl.offcanvas-end { + top: 0; + right: 0; + width: var(--bs-offcanvas-width); + border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(100%); + } + .offcanvas-xxl.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(-100%); + } + .offcanvas-xxl.offcanvas-bottom { + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(100%); + } + .offcanvas-xxl.showing, .offcanvas-xxl.show:not(.hiding) { + transform: none; + } + .offcanvas-xxl.showing, .offcanvas-xxl.hiding, .offcanvas-xxl.show { + visibility: visible; + } +} +@media (min-width: 1400px) { + .offcanvas-xxl { + --bs-offcanvas-height: auto; + --bs-offcanvas-border-width: 0; + background-color: transparent !important; + } + .offcanvas-xxl .offcanvas-header { + display: none; + } + .offcanvas-xxl .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + background-color: transparent !important; + } +} + +.offcanvas { + position: fixed; + bottom: 0; + z-index: var(--bs-offcanvas-zindex); + display: flex; + flex-direction: column; + max-width: 100%; + color: var(--bs-offcanvas-color); + visibility: hidden; + background-color: var(--bs-offcanvas-bg); + background-clip: padding-box; + outline: 0; + transition: var(--bs-offcanvas-transition); +} +@media (prefers-reduced-motion: reduce) { + .offcanvas { + transition: none; + } +} +.offcanvas.offcanvas-start { + top: 0; + left: 0; + width: var(--bs-offcanvas-width); + border-right: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(-100%); +} +.offcanvas.offcanvas-end { + top: 0; + right: 0; + width: var(--bs-offcanvas-width); + border-left: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateX(100%); +} +.offcanvas.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-bottom: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(-100%); +} +.offcanvas.offcanvas-bottom { + right: 0; + left: 0; + height: var(--bs-offcanvas-height); + max-height: 100%; + border-top: var(--bs-offcanvas-border-width) solid var(--bs-offcanvas-border-color); + transform: translateY(100%); +} +.offcanvas.showing, .offcanvas.show:not(.hiding) { + transform: none; +} +.offcanvas.showing, .offcanvas.hiding, .offcanvas.show { + visibility: visible; +} + +.offcanvas-backdrop { + position: fixed; + top: 0; + left: 0; + z-index: 1040; + width: 100vw; + height: 100vh; + background-color: #000; +} +.offcanvas-backdrop.fade { + opacity: 0; +} +.offcanvas-backdrop.show { + opacity: 0.5; +} + +.offcanvas-header { + display: flex; + align-items: center; + justify-content: space-between; + padding: var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x); +} +.offcanvas-header .btn-close { + padding: calc(var(--bs-offcanvas-padding-y) * 0.5) calc(var(--bs-offcanvas-padding-x) * 0.5); + margin-top: calc(-0.5 * var(--bs-offcanvas-padding-y)); + margin-right: calc(-0.5 * var(--bs-offcanvas-padding-x)); + margin-bottom: calc(-0.5 * var(--bs-offcanvas-padding-y)); +} + +.offcanvas-title { + margin-bottom: 0; + line-height: var(--bs-offcanvas-title-line-height); +} + +.offcanvas-body { + flex-grow: 1; + padding: var(--bs-offcanvas-padding-y) var(--bs-offcanvas-padding-x); + overflow-y: auto; +} + +.placeholder { + display: inline-block; + min-height: 1em; + vertical-align: middle; + cursor: wait; + background-color: currentcolor; + opacity: 0.5; +} +.placeholder.btn::before { + display: inline-block; + content: ""; +} + +.placeholder-xs { + min-height: 0.6em; +} + +.placeholder-sm { + min-height: 0.8em; +} + +.placeholder-lg { + min-height: 1.2em; +} + +.placeholder-glow .placeholder { + animation: placeholder-glow 2s ease-in-out infinite; +} + +@keyframes placeholder-glow { + 50% { + opacity: 0.2; + } +} +.placeholder-wave { + -webkit-mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%); + mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%); + -webkit-mask-size: 200% 100%; + mask-size: 200% 100%; + animation: placeholder-wave 2s linear infinite; +} + +@keyframes placeholder-wave { + 100% { + -webkit-mask-position: -200% 0%; + mask-position: -200% 0%; + } +} +.clearfix::after { + display: block; + clear: both; + content: ""; +} + +.text-bg-primary { + color: #fff !important; + background-color: RGBA(13, 110, 253, var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-secondary { + color: #fff !important; + background-color: RGBA(108, 117, 125, var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-success { + color: #fff !important; + background-color: RGBA(25, 135, 84, var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-info { + color: #000 !important; + background-color: RGBA(13, 202, 240, var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-warning { + color: #000 !important; + background-color: RGBA(255, 193, 7, var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-danger { + color: #fff !important; + background-color: RGBA(220, 53, 69, var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-light { + color: #000 !important; + background-color: RGBA(248, 249, 250, var(--bs-bg-opacity, 1)) !important; +} + +.text-bg-dark { + color: #fff !important; + background-color: RGBA(33, 37, 41, var(--bs-bg-opacity, 1)) !important; +} + +.link-primary { + color: RGBA(var(--bs-primary-rgb), var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--bs-primary-rgb), var(--bs-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--bs-primary-rgb), var(--bs-link-underline-opacity, 1)) !important; +} +.link-primary:hover, .link-primary:focus { + color: RGBA(10, 88, 202, var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(10, 88, 202, var(--bs-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(10, 88, 202, var(--bs-link-underline-opacity, 1)) !important; +} + +.link-secondary { + color: RGBA(var(--bs-secondary-rgb), var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--bs-secondary-rgb), var(--bs-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--bs-secondary-rgb), var(--bs-link-underline-opacity, 1)) !important; +} +.link-secondary:hover, .link-secondary:focus { + color: RGBA(86, 94, 100, var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(86, 94, 100, var(--bs-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(86, 94, 100, var(--bs-link-underline-opacity, 1)) !important; +} + +.link-success { + color: RGBA(var(--bs-success-rgb), var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--bs-success-rgb), var(--bs-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--bs-success-rgb), var(--bs-link-underline-opacity, 1)) !important; +} +.link-success:hover, .link-success:focus { + color: RGBA(20, 108, 67, var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(20, 108, 67, var(--bs-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(20, 108, 67, var(--bs-link-underline-opacity, 1)) !important; +} + +.link-info { + color: RGBA(var(--bs-info-rgb), var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--bs-info-rgb), var(--bs-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--bs-info-rgb), var(--bs-link-underline-opacity, 1)) !important; +} +.link-info:hover, .link-info:focus { + color: RGBA(61, 213, 243, var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(61, 213, 243, var(--bs-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(61, 213, 243, var(--bs-link-underline-opacity, 1)) !important; +} + +.link-warning { + color: RGBA(var(--bs-warning-rgb), var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--bs-warning-rgb), var(--bs-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--bs-warning-rgb), var(--bs-link-underline-opacity, 1)) !important; +} +.link-warning:hover, .link-warning:focus { + color: RGBA(255, 205, 57, var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(255, 205, 57, var(--bs-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(255, 205, 57, var(--bs-link-underline-opacity, 1)) !important; +} + +.link-danger { + color: RGBA(var(--bs-danger-rgb), var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--bs-danger-rgb), var(--bs-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--bs-danger-rgb), var(--bs-link-underline-opacity, 1)) !important; +} +.link-danger:hover, .link-danger:focus { + color: RGBA(176, 42, 55, var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(176, 42, 55, var(--bs-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(176, 42, 55, var(--bs-link-underline-opacity, 1)) !important; +} + +.link-light { + color: RGBA(var(--bs-light-rgb), var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--bs-light-rgb), var(--bs-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--bs-light-rgb), var(--bs-link-underline-opacity, 1)) !important; +} +.link-light:hover, .link-light:focus { + color: RGBA(249, 250, 251, var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(249, 250, 251, var(--bs-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(249, 250, 251, var(--bs-link-underline-opacity, 1)) !important; +} + +.link-dark { + color: RGBA(var(--bs-dark-rgb), var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--bs-dark-rgb), var(--bs-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--bs-dark-rgb), var(--bs-link-underline-opacity, 1)) !important; +} +.link-dark:hover, .link-dark:focus { + color: RGBA(26, 30, 33, var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(26, 30, 33, var(--bs-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(26, 30, 33, var(--bs-link-underline-opacity, 1)) !important; +} + +.link-body-emphasis { + color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 1)) !important; + -webkit-text-decoration-color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 1)) !important; + text-decoration-color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 1)) !important; +} +.link-body-emphasis:hover, .link-body-emphasis:focus { + color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-opacity, 0.75)) !important; + -webkit-text-decoration-color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 0.75)) !important; + text-decoration-color: RGBA(var(--bs-emphasis-color-rgb), var(--bs-link-underline-opacity, 0.75)) !important; +} + +.focus-ring:focus { + outline: 0; + box-shadow: var(--bs-focus-ring-x, 0) var(--bs-focus-ring-y, 0) var(--bs-focus-ring-blur, 0) var(--bs-focus-ring-width) var(--bs-focus-ring-color); +} + +.icon-link { + display: inline-flex; + gap: 0.375rem; + align-items: center; + -webkit-text-decoration-color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 0.5)); + text-decoration-color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 0.5)); + text-underline-offset: 0.25em; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; +} +.icon-link > .bi { + flex-shrink: 0; + width: 1em; + height: 1em; + fill: currentcolor; + transition: 0.2s ease-in-out transform; +} +@media (prefers-reduced-motion: reduce) { + .icon-link > .bi { + transition: none; + } +} + +.icon-link-hover:hover > .bi, .icon-link-hover:focus-visible > .bi { + transform: var(--bs-icon-link-transform, translate3d(0.25em, 0, 0)); +} + +.ratio { + position: relative; + width: 100%; +} +.ratio::before { + display: block; + padding-top: var(--bs-aspect-ratio); + content: ""; +} +.ratio > * { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; +} + +.ratio-1x1 { + --bs-aspect-ratio: 100%; +} + +.ratio-4x3 { + --bs-aspect-ratio: 75%; +} + +.ratio-16x9 { + --bs-aspect-ratio: 56.25%; +} + +.ratio-21x9 { + --bs-aspect-ratio: 42.8571428571%; +} + +.fixed-top { + position: fixed; + top: 0; + right: 0; + left: 0; + z-index: 1030; +} + +.fixed-bottom { + position: fixed; + right: 0; + bottom: 0; + left: 0; + z-index: 1030; +} + +.sticky-top { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1020; +} + +.sticky-bottom { + position: -webkit-sticky; + position: sticky; + bottom: 0; + z-index: 1020; +} + +@media (min-width: 576px) { + .sticky-sm-top { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1020; + } + .sticky-sm-bottom { + position: -webkit-sticky; + position: sticky; + bottom: 0; + z-index: 1020; + } +} +@media (min-width: 768px) { + .sticky-md-top { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1020; + } + .sticky-md-bottom { + position: -webkit-sticky; + position: sticky; + bottom: 0; + z-index: 1020; + } +} +@media (min-width: 992px) { + .sticky-lg-top { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1020; + } + .sticky-lg-bottom { + position: -webkit-sticky; + position: sticky; + bottom: 0; + z-index: 1020; + } +} +@media (min-width: 1200px) { + .sticky-xl-top { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1020; + } + .sticky-xl-bottom { + position: -webkit-sticky; + position: sticky; + bottom: 0; + z-index: 1020; + } +} +@media (min-width: 1400px) { + .sticky-xxl-top { + position: -webkit-sticky; + position: sticky; + top: 0; + z-index: 1020; + } + .sticky-xxl-bottom { + position: -webkit-sticky; + position: sticky; + bottom: 0; + z-index: 1020; + } +} +.hstack { + display: flex; + flex-direction: row; + align-items: center; + align-self: stretch; +} + +.vstack { + display: flex; + flex: 1 1 auto; + flex-direction: column; + align-self: stretch; +} + +.visually-hidden, +.visually-hidden-focusable:not(:focus):not(:focus-within) { + width: 1px !important; + height: 1px !important; + padding: 0 !important; + margin: -1px !important; + overflow: hidden !important; + clip: rect(0, 0, 0, 0) !important; + white-space: nowrap !important; + border: 0 !important; +} +.visually-hidden:not(caption), +.visually-hidden-focusable:not(:focus):not(:focus-within):not(caption) { + position: absolute !important; +} + +.stretched-link::after { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1; + content: ""; +} + +.text-truncate { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.vr { + display: inline-block; + align-self: stretch; + width: 1px; + min-height: 1em; + background-color: currentcolor; + opacity: 0.25; +} + +.align-baseline { + vertical-align: baseline !important; +} + +.align-top { + vertical-align: top !important; +} + +.align-middle { + vertical-align: middle !important; +} + +.align-bottom { + vertical-align: bottom !important; +} + +.align-text-bottom { + vertical-align: text-bottom !important; +} + +.align-text-top { + vertical-align: text-top !important; +} + +.float-start { + float: left !important; +} + +.float-end { + float: right !important; +} + +.float-none { + float: none !important; +} + +.object-fit-contain { + -o-object-fit: contain !important; + object-fit: contain !important; +} + +.object-fit-cover { + -o-object-fit: cover !important; + object-fit: cover !important; +} + +.object-fit-fill { + -o-object-fit: fill !important; + object-fit: fill !important; +} + +.object-fit-scale { + -o-object-fit: scale-down !important; + object-fit: scale-down !important; +} + +.object-fit-none { + -o-object-fit: none !important; + object-fit: none !important; +} + +.opacity-0 { + opacity: 0 !important; +} + +.opacity-25 { + opacity: 0.25 !important; +} + +.opacity-50 { + opacity: 0.5 !important; +} + +.opacity-75 { + opacity: 0.75 !important; +} + +.opacity-100 { + opacity: 1 !important; +} + +.overflow-auto { + overflow: auto !important; +} + +.overflow-hidden { + overflow: hidden !important; +} + +.overflow-visible { + overflow: visible !important; +} + +.overflow-scroll { + overflow: scroll !important; +} + +.overflow-x-auto { + overflow-x: auto !important; +} + +.overflow-x-hidden { + overflow-x: hidden !important; +} + +.overflow-x-visible { + overflow-x: visible !important; +} + +.overflow-x-scroll { + overflow-x: scroll !important; +} + +.overflow-y-auto { + overflow-y: auto !important; +} + +.overflow-y-hidden { + overflow-y: hidden !important; +} + +.overflow-y-visible { + overflow-y: visible !important; +} + +.overflow-y-scroll { + overflow-y: scroll !important; +} + +.d-inline { + display: inline !important; +} + +.d-inline-block { + display: inline-block !important; +} + +.d-block { + display: block !important; +} + +.d-grid { + display: grid !important; +} + +.d-inline-grid { + display: inline-grid !important; +} + +.d-table { + display: table !important; +} + +.d-table-row { + display: table-row !important; +} + +.d-table-cell { + display: table-cell !important; +} + +.d-flex { + display: flex !important; +} + +.d-inline-flex { + display: inline-flex !important; +} + +.d-none { + display: none !important; +} + +.shadow { + box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important; +} + +.shadow-sm { + box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important; +} + +.shadow-lg { + box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important; +} + +.shadow-none { + box-shadow: none !important; +} + +.focus-ring-primary { + --bs-focus-ring-color: rgba(var(--bs-primary-rgb), var(--bs-focus-ring-opacity)); +} + +.focus-ring-secondary { + --bs-focus-ring-color: rgba(var(--bs-secondary-rgb), var(--bs-focus-ring-opacity)); +} + +.focus-ring-success { + --bs-focus-ring-color: rgba(var(--bs-success-rgb), var(--bs-focus-ring-opacity)); +} + +.focus-ring-info { + --bs-focus-ring-color: rgba(var(--bs-info-rgb), var(--bs-focus-ring-opacity)); +} + +.focus-ring-warning { + --bs-focus-ring-color: rgba(var(--bs-warning-rgb), var(--bs-focus-ring-opacity)); +} + +.focus-ring-danger { + --bs-focus-ring-color: rgba(var(--bs-danger-rgb), var(--bs-focus-ring-opacity)); +} + +.focus-ring-light { + --bs-focus-ring-color: rgba(var(--bs-light-rgb), var(--bs-focus-ring-opacity)); +} + +.focus-ring-dark { + --bs-focus-ring-color: rgba(var(--bs-dark-rgb), var(--bs-focus-ring-opacity)); +} + +.position-static { + position: static !important; +} + +.position-relative { + position: relative !important; +} + +.position-absolute { + position: absolute !important; +} + +.position-fixed { + position: fixed !important; +} + +.position-sticky { + position: -webkit-sticky !important; + position: sticky !important; +} + +.top-0 { + top: 0 !important; +} + +.top-50 { + top: 50% !important; +} + +.top-100 { + top: 100% !important; +} + +.bottom-0 { + bottom: 0 !important; +} + +.bottom-50 { + bottom: 50% !important; +} + +.bottom-100 { + bottom: 100% !important; +} + +.start-0 { + left: 0 !important; +} + +.start-50 { + left: 50% !important; +} + +.start-100 { + left: 100% !important; +} + +.end-0 { + right: 0 !important; +} + +.end-50 { + right: 50% !important; +} + +.end-100 { + right: 100% !important; +} + +.translate-middle { + transform: translate(-50%, -50%) !important; +} + +.translate-middle-x { + transform: translateX(-50%) !important; +} + +.translate-middle-y { + transform: translateY(-50%) !important; +} + +.border { + border: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important; +} + +.border-0 { + border: 0 !important; +} + +.border-top { + border-top: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important; +} + +.border-top-0 { + border-top: 0 !important; +} + +.border-end { + border-right: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important; +} + +.border-end-0 { + border-right: 0 !important; +} + +.border-bottom { + border-bottom: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important; +} + +.border-bottom-0 { + border-bottom: 0 !important; +} + +.border-start { + border-left: var(--bs-border-width) var(--bs-border-style) var(--bs-border-color) !important; +} + +.border-start-0 { + border-left: 0 !important; +} + +.border-primary { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-primary-rgb), var(--bs-border-opacity)) !important; +} + +.border-secondary { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-secondary-rgb), var(--bs-border-opacity)) !important; +} + +.border-success { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-success-rgb), var(--bs-border-opacity)) !important; +} + +.border-info { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-info-rgb), var(--bs-border-opacity)) !important; +} + +.border-warning { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-warning-rgb), var(--bs-border-opacity)) !important; +} + +.border-danger { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-danger-rgb), var(--bs-border-opacity)) !important; +} + +.border-light { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-light-rgb), var(--bs-border-opacity)) !important; +} + +.border-dark { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-dark-rgb), var(--bs-border-opacity)) !important; +} + +.border-black { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-black-rgb), var(--bs-border-opacity)) !important; +} + +.border-white { + --bs-border-opacity: 1; + border-color: rgba(var(--bs-white-rgb), var(--bs-border-opacity)) !important; +} + +.border-primary-subtle { + border-color: var(--bs-primary-border-subtle) !important; +} + +.border-secondary-subtle { + border-color: var(--bs-secondary-border-subtle) !important; +} + +.border-success-subtle { + border-color: var(--bs-success-border-subtle) !important; +} + +.border-info-subtle { + border-color: var(--bs-info-border-subtle) !important; +} + +.border-warning-subtle { + border-color: var(--bs-warning-border-subtle) !important; +} + +.border-danger-subtle { + border-color: var(--bs-danger-border-subtle) !important; +} + +.border-light-subtle { + border-color: var(--bs-light-border-subtle) !important; +} + +.border-dark-subtle { + border-color: var(--bs-dark-border-subtle) !important; +} + +.border-1 { + border-width: 1px !important; +} + +.border-2 { + border-width: 2px !important; +} + +.border-3 { + border-width: 3px !important; +} + +.border-4 { + border-width: 4px !important; +} + +.border-5 { + border-width: 5px !important; +} + +.border-opacity-10 { + --bs-border-opacity: 0.1; +} + +.border-opacity-25 { + --bs-border-opacity: 0.25; +} + +.border-opacity-50 { + --bs-border-opacity: 0.5; +} + +.border-opacity-75 { + --bs-border-opacity: 0.75; +} + +.border-opacity-100 { + --bs-border-opacity: 1; +} + +.w-25 { + width: 25% !important; +} + +.w-50 { + width: 50% !important; +} + +.w-75 { + width: 75% !important; +} + +.w-100 { + width: 100% !important; +} + +.w-auto { + width: auto !important; +} + +.mw-100 { + max-width: 100% !important; +} + +.vw-100 { + width: 100vw !important; +} + +.min-vw-100 { + min-width: 100vw !important; +} + +.h-25 { + height: 25% !important; +} + +.h-50 { + height: 50% !important; +} + +.h-75 { + height: 75% !important; +} + +.h-100 { + height: 100% !important; +} + +.h-auto { + height: auto !important; +} + +.mh-100 { + max-height: 100% !important; +} + +.vh-100 { + height: 100vh !important; +} + +.min-vh-100 { + min-height: 100vh !important; +} + +.flex-fill { + flex: 1 1 auto !important; +} + +.flex-row { + flex-direction: row !important; +} + +.flex-column { + flex-direction: column !important; +} + +.flex-row-reverse { + flex-direction: row-reverse !important; +} + +.flex-column-reverse { + flex-direction: column-reverse !important; +} + +.flex-grow-0 { + flex-grow: 0 !important; +} + +.flex-grow-1 { + flex-grow: 1 !important; +} + +.flex-shrink-0 { + flex-shrink: 0 !important; +} + +.flex-shrink-1 { + flex-shrink: 1 !important; +} + +.flex-wrap { + flex-wrap: wrap !important; +} + +.flex-nowrap { + flex-wrap: nowrap !important; +} + +.flex-wrap-reverse { + flex-wrap: wrap-reverse !important; +} + +.justify-content-start { + justify-content: flex-start !important; +} + +.justify-content-end { + justify-content: flex-end !important; +} + +.justify-content-center { + justify-content: center !important; +} + +.justify-content-between { + justify-content: space-between !important; +} + +.justify-content-around { + justify-content: space-around !important; +} + +.justify-content-evenly { + justify-content: space-evenly !important; +} + +.align-items-start { + align-items: flex-start !important; +} + +.align-items-end { + align-items: flex-end !important; +} + +.align-items-center { + align-items: center !important; +} + +.align-items-baseline { + align-items: baseline !important; +} + +.align-items-stretch { + align-items: stretch !important; +} + +.align-content-start { + align-content: flex-start !important; +} + +.align-content-end { + align-content: flex-end !important; +} + +.align-content-center { + align-content: center !important; +} + +.align-content-between { + align-content: space-between !important; +} + +.align-content-around { + align-content: space-around !important; +} + +.align-content-stretch { + align-content: stretch !important; +} + +.align-self-auto { + align-self: auto !important; +} + +.align-self-start { + align-self: flex-start !important; +} + +.align-self-end { + align-self: flex-end !important; +} + +.align-self-center { + align-self: center !important; +} + +.align-self-baseline { + align-self: baseline !important; +} + +.align-self-stretch { + align-self: stretch !important; +} + +.order-first { + order: -1 !important; +} + +.order-0 { + order: 0 !important; +} + +.order-1 { + order: 1 !important; +} + +.order-2 { + order: 2 !important; +} + +.order-3 { + order: 3 !important; +} + +.order-4 { + order: 4 !important; +} + +.order-5 { + order: 5 !important; +} + +.order-last { + order: 6 !important; +} + +.m-0 { + margin: 0 !important; +} + +.m-1 { + margin: 0.25rem !important; +} + +.m-2 { + margin: 0.5rem !important; +} + +.m-3 { + margin: 1rem !important; +} + +.m-4 { + margin: 1.5rem !important; +} + +.m-5 { + margin: 3rem !important; +} + +.m-auto { + margin: auto !important; +} + +.mx-0 { + margin-right: 0 !important; + margin-left: 0 !important; +} + +.mx-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; +} + +.mx-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; +} + +.mx-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; +} + +.mx-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; +} + +.mx-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; +} + +.mx-auto { + margin-right: auto !important; + margin-left: auto !important; +} + +.my-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; +} + +.my-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; +} + +.my-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; +} + +.my-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; +} + +.my-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; +} + +.my-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; +} + +.my-auto { + margin-top: auto !important; + margin-bottom: auto !important; +} + +.mt-0 { + margin-top: 0 !important; +} + +.mt-1 { + margin-top: 0.25rem !important; +} + +.mt-2 { + margin-top: 0.5rem !important; +} + +.mt-3 { + margin-top: 1rem !important; +} + +.mt-4 { + margin-top: 1.5rem !important; +} + +.mt-5 { + margin-top: 3rem !important; +} + +.mt-auto { + margin-top: auto !important; +} + +.me-0 { + margin-right: 0 !important; +} + +.me-1 { + margin-right: 0.25rem !important; +} + +.me-2 { + margin-right: 0.5rem !important; +} + +.me-3 { + margin-right: 1rem !important; +} + +.me-4 { + margin-right: 1.5rem !important; +} + +.me-5 { + margin-right: 3rem !important; +} + +.me-auto { + margin-right: auto !important; +} + +.mb-0 { + margin-bottom: 0 !important; +} + +.mb-1 { + margin-bottom: 0.25rem !important; +} + +.mb-2 { + margin-bottom: 0.5rem !important; +} + +.mb-3 { + margin-bottom: 1rem !important; +} + +.mb-4 { + margin-bottom: 1.5rem !important; +} + +.mb-5 { + margin-bottom: 3rem !important; +} + +.mb-auto { + margin-bottom: auto !important; +} + +.ms-0 { + margin-left: 0 !important; +} + +.ms-1 { + margin-left: 0.25rem !important; +} + +.ms-2 { + margin-left: 0.5rem !important; +} + +.ms-3 { + margin-left: 1rem !important; +} + +.ms-4 { + margin-left: 1.5rem !important; +} + +.ms-5 { + margin-left: 3rem !important; +} + +.ms-auto { + margin-left: auto !important; +} + +.p-0 { + padding: 0 !important; +} + +.p-1 { + padding: 0.25rem !important; +} + +.p-2 { + padding: 0.5rem !important; +} + +.p-3 { + padding: 1rem !important; +} + +.p-4 { + padding: 1.5rem !important; +} + +.p-5 { + padding: 3rem !important; +} + +.px-0 { + padding-right: 0 !important; + padding-left: 0 !important; +} + +.px-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; +} + +.px-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; +} + +.px-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; +} + +.px-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; +} + +.px-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; +} + +.py-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; +} + +.py-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; +} + +.py-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; +} + +.py-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; +} + +.py-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; +} + +.py-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; +} + +.pt-0 { + padding-top: 0 !important; +} + +.pt-1 { + padding-top: 0.25rem !important; +} + +.pt-2 { + padding-top: 0.5rem !important; +} + +.pt-3 { + padding-top: 1rem !important; +} + +.pt-4 { + padding-top: 1.5rem !important; +} + +.pt-5 { + padding-top: 3rem !important; +} + +.pe-0 { + padding-right: 0 !important; +} + +.pe-1 { + padding-right: 0.25rem !important; +} + +.pe-2 { + padding-right: 0.5rem !important; +} + +.pe-3 { + padding-right: 1rem !important; +} + +.pe-4 { + padding-right: 1.5rem !important; +} + +.pe-5 { + padding-right: 3rem !important; +} + +.pb-0 { + padding-bottom: 0 !important; +} + +.pb-1 { + padding-bottom: 0.25rem !important; +} + +.pb-2 { + padding-bottom: 0.5rem !important; +} + +.pb-3 { + padding-bottom: 1rem !important; +} + +.pb-4 { + padding-bottom: 1.5rem !important; +} + +.pb-5 { + padding-bottom: 3rem !important; +} + +.ps-0 { + padding-left: 0 !important; +} + +.ps-1 { + padding-left: 0.25rem !important; +} + +.ps-2 { + padding-left: 0.5rem !important; +} + +.ps-3 { + padding-left: 1rem !important; +} + +.ps-4 { + padding-left: 1.5rem !important; +} + +.ps-5 { + padding-left: 3rem !important; +} + +.gap-0 { + gap: 0 !important; +} + +.gap-1 { + gap: 0.25rem !important; +} + +.gap-2 { + gap: 0.5rem !important; +} + +.gap-3 { + gap: 1rem !important; +} + +.gap-4 { + gap: 1.5rem !important; +} + +.gap-5 { + gap: 3rem !important; +} + +.row-gap-0 { + row-gap: 0 !important; +} + +.row-gap-1 { + row-gap: 0.25rem !important; +} + +.row-gap-2 { + row-gap: 0.5rem !important; +} + +.row-gap-3 { + row-gap: 1rem !important; +} + +.row-gap-4 { + row-gap: 1.5rem !important; +} + +.row-gap-5 { + row-gap: 3rem !important; +} + +.column-gap-0 { + -moz-column-gap: 0 !important; + column-gap: 0 !important; +} + +.column-gap-1 { + -moz-column-gap: 0.25rem !important; + column-gap: 0.25rem !important; +} + +.column-gap-2 { + -moz-column-gap: 0.5rem !important; + column-gap: 0.5rem !important; +} + +.column-gap-3 { + -moz-column-gap: 1rem !important; + column-gap: 1rem !important; +} + +.column-gap-4 { + -moz-column-gap: 1.5rem !important; + column-gap: 1.5rem !important; +} + +.column-gap-5 { + -moz-column-gap: 3rem !important; + column-gap: 3rem !important; +} + +.font-monospace { + font-family: var(--bs-font-monospace) !important; +} + +.fs-1 { + font-size: calc(1.375rem + 1.5vw) !important; +} + +.fs-2 { + font-size: calc(1.325rem + 0.9vw) !important; +} + +.fs-3 { + font-size: calc(1.3rem + 0.6vw) !important; +} + +.fs-4 { + font-size: calc(1.275rem + 0.3vw) !important; +} + +.fs-5 { + font-size: 1.25rem !important; +} + +.fs-6 { + font-size: 1rem !important; +} + +.fst-italic { + font-style: italic !important; +} + +.fst-normal { + font-style: normal !important; +} + +.fw-lighter { + font-weight: lighter !important; +} + +.fw-light { + font-weight: 300 !important; +} + +.fw-normal { + font-weight: 400 !important; +} + +.fw-medium { + font-weight: 500 !important; +} + +.fw-semibold { + font-weight: 600 !important; +} + +.fw-bold { + font-weight: 700 !important; +} + +.fw-bolder { + font-weight: bolder !important; +} + +.lh-1 { + line-height: 1 !important; +} + +.lh-sm { + line-height: 1.25 !important; +} + +.lh-base { + line-height: 1.5 !important; +} + +.lh-lg { + line-height: 2 !important; +} + +.text-start { + text-align: left !important; +} + +.text-end { + text-align: right !important; +} + +.text-center { + text-align: center !important; +} + +.text-decoration-none { + text-decoration: none !important; +} + +.text-decoration-underline { + text-decoration: underline !important; +} + +.text-decoration-line-through { + text-decoration: line-through !important; +} + +.text-lowercase { + text-transform: lowercase !important; +} + +.text-uppercase { + text-transform: uppercase !important; +} + +.text-capitalize { + text-transform: capitalize !important; +} + +.text-wrap { + white-space: normal !important; +} + +.text-nowrap { + white-space: nowrap !important; +} + +/* rtl:begin:remove */ +.text-break { + word-wrap: break-word !important; + word-break: break-word !important; +} + +/* rtl:end:remove */ +.text-primary { + --bs-text-opacity: 1; + color: rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important; +} + +.text-secondary { + --bs-text-opacity: 1; + color: rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important; +} + +.text-success { + --bs-text-opacity: 1; + color: rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important; +} + +.text-info { + --bs-text-opacity: 1; + color: rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important; +} + +.text-warning { + --bs-text-opacity: 1; + color: rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important; +} + +.text-danger { + --bs-text-opacity: 1; + color: rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important; +} + +.text-light { + --bs-text-opacity: 1; + color: rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important; +} + +.text-dark { + --bs-text-opacity: 1; + color: rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important; +} + +.text-black { + --bs-text-opacity: 1; + color: rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important; +} + +.text-white { + --bs-text-opacity: 1; + color: rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important; +} + +.text-body { + --bs-text-opacity: 1; + color: rgba(var(--bs-body-color-rgb), var(--bs-text-opacity)) !important; +} + +.text-muted { + --bs-text-opacity: 1; + color: var(--bs-secondary-color) !important; +} + +.text-black-50 { + --bs-text-opacity: 1; + color: rgba(0, 0, 0, 0.5) !important; +} + +.text-white-50 { + --bs-text-opacity: 1; + color: rgba(255, 255, 255, 0.5) !important; +} + +.text-body-secondary { + --bs-text-opacity: 1; + color: var(--bs-secondary-color) !important; +} + +.text-body-tertiary { + --bs-text-opacity: 1; + color: var(--bs-tertiary-color) !important; +} + +.text-body-emphasis { + --bs-text-opacity: 1; + color: var(--bs-emphasis-color) !important; +} + +.text-reset { + --bs-text-opacity: 1; + color: inherit !important; +} + +.text-opacity-25 { + --bs-text-opacity: 0.25; +} + +.text-opacity-50 { + --bs-text-opacity: 0.5; +} + +.text-opacity-75 { + --bs-text-opacity: 0.75; +} + +.text-opacity-100 { + --bs-text-opacity: 1; +} + +.text-primary-emphasis { + color: var(--bs-primary-text-emphasis) !important; +} + +.text-secondary-emphasis { + color: var(--bs-secondary-text-emphasis) !important; +} + +.text-success-emphasis { + color: var(--bs-success-text-emphasis) !important; +} + +.text-info-emphasis { + color: var(--bs-info-text-emphasis) !important; +} + +.text-warning-emphasis { + color: var(--bs-warning-text-emphasis) !important; +} + +.text-danger-emphasis { + color: var(--bs-danger-text-emphasis) !important; +} + +.text-light-emphasis { + color: var(--bs-light-text-emphasis) !important; +} + +.text-dark-emphasis { + color: var(--bs-dark-text-emphasis) !important; +} + +.link-opacity-10 { + --bs-link-opacity: 0.1; +} + +.link-opacity-10-hover:hover { + --bs-link-opacity: 0.1; +} + +.link-opacity-25 { + --bs-link-opacity: 0.25; +} + +.link-opacity-25-hover:hover { + --bs-link-opacity: 0.25; +} + +.link-opacity-50 { + --bs-link-opacity: 0.5; +} + +.link-opacity-50-hover:hover { + --bs-link-opacity: 0.5; +} + +.link-opacity-75 { + --bs-link-opacity: 0.75; +} + +.link-opacity-75-hover:hover { + --bs-link-opacity: 0.75; +} + +.link-opacity-100 { + --bs-link-opacity: 1; +} + +.link-opacity-100-hover:hover { + --bs-link-opacity: 1; +} + +.link-offset-1 { + text-underline-offset: 0.125em !important; +} + +.link-offset-1-hover:hover { + text-underline-offset: 0.125em !important; +} + +.link-offset-2 { + text-underline-offset: 0.25em !important; +} + +.link-offset-2-hover:hover { + text-underline-offset: 0.25em !important; +} + +.link-offset-3 { + text-underline-offset: 0.375em !important; +} + +.link-offset-3-hover:hover { + text-underline-offset: 0.375em !important; +} + +.link-underline-primary { + --bs-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--bs-primary-rgb), var(--bs-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--bs-primary-rgb), var(--bs-link-underline-opacity)) !important; +} + +.link-underline-secondary { + --bs-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--bs-secondary-rgb), var(--bs-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--bs-secondary-rgb), var(--bs-link-underline-opacity)) !important; +} + +.link-underline-success { + --bs-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--bs-success-rgb), var(--bs-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--bs-success-rgb), var(--bs-link-underline-opacity)) !important; +} + +.link-underline-info { + --bs-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--bs-info-rgb), var(--bs-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--bs-info-rgb), var(--bs-link-underline-opacity)) !important; +} + +.link-underline-warning { + --bs-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--bs-warning-rgb), var(--bs-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--bs-warning-rgb), var(--bs-link-underline-opacity)) !important; +} + +.link-underline-danger { + --bs-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--bs-danger-rgb), var(--bs-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--bs-danger-rgb), var(--bs-link-underline-opacity)) !important; +} + +.link-underline-light { + --bs-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--bs-light-rgb), var(--bs-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--bs-light-rgb), var(--bs-link-underline-opacity)) !important; +} + +.link-underline-dark { + --bs-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--bs-dark-rgb), var(--bs-link-underline-opacity)) !important; + text-decoration-color: rgba(var(--bs-dark-rgb), var(--bs-link-underline-opacity)) !important; +} + +.link-underline { + --bs-link-underline-opacity: 1; + -webkit-text-decoration-color: rgba(var(--bs-link-color-rgb), var(--bs-link-underline-opacity, 1)) !important; + text-decoration-color: rgba(var(--bs-link-color-rgb), var(--bs-link-underline-opacity, 1)) !important; +} + +.link-underline-opacity-0 { + --bs-link-underline-opacity: 0; +} + +.link-underline-opacity-0-hover:hover { + --bs-link-underline-opacity: 0; +} + +.link-underline-opacity-10 { + --bs-link-underline-opacity: 0.1; +} + +.link-underline-opacity-10-hover:hover { + --bs-link-underline-opacity: 0.1; +} + +.link-underline-opacity-25 { + --bs-link-underline-opacity: 0.25; +} + +.link-underline-opacity-25-hover:hover { + --bs-link-underline-opacity: 0.25; +} + +.link-underline-opacity-50 { + --bs-link-underline-opacity: 0.5; +} + +.link-underline-opacity-50-hover:hover { + --bs-link-underline-opacity: 0.5; +} + +.link-underline-opacity-75 { + --bs-link-underline-opacity: 0.75; +} + +.link-underline-opacity-75-hover:hover { + --bs-link-underline-opacity: 0.75; +} + +.link-underline-opacity-100 { + --bs-link-underline-opacity: 1; +} + +.link-underline-opacity-100-hover:hover { + --bs-link-underline-opacity: 1; +} + +.bg-primary { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-secondary { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-success { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-info { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-warning { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-danger { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-light { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-dark { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-black { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-white { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-body { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-transparent { + --bs-bg-opacity: 1; + background-color: transparent !important; +} + +.bg-body-secondary { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-secondary-bg-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-body-tertiary { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-tertiary-bg-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-opacity-10 { + --bs-bg-opacity: 0.1; +} + +.bg-opacity-25 { + --bs-bg-opacity: 0.25; +} + +.bg-opacity-50 { + --bs-bg-opacity: 0.5; +} + +.bg-opacity-75 { + --bs-bg-opacity: 0.75; +} + +.bg-opacity-100 { + --bs-bg-opacity: 1; +} + +.bg-primary-subtle { + background-color: var(--bs-primary-bg-subtle) !important; +} + +.bg-secondary-subtle { + background-color: var(--bs-secondary-bg-subtle) !important; +} + +.bg-success-subtle { + background-color: var(--bs-success-bg-subtle) !important; +} + +.bg-info-subtle { + background-color: var(--bs-info-bg-subtle) !important; +} + +.bg-warning-subtle { + background-color: var(--bs-warning-bg-subtle) !important; +} + +.bg-danger-subtle { + background-color: var(--bs-danger-bg-subtle) !important; +} + +.bg-light-subtle { + background-color: var(--bs-light-bg-subtle) !important; +} + +.bg-dark-subtle { + background-color: var(--bs-dark-bg-subtle) !important; +} + +.bg-gradient { + background-image: var(--bs-gradient) !important; +} + +.user-select-all { + -webkit-user-select: all !important; + -moz-user-select: all !important; + user-select: all !important; +} + +.user-select-auto { + -webkit-user-select: auto !important; + -moz-user-select: auto !important; + user-select: auto !important; +} + +.user-select-none { + -webkit-user-select: none !important; + -moz-user-select: none !important; + user-select: none !important; +} + +.pe-none { + pointer-events: none !important; +} + +.pe-auto { + pointer-events: auto !important; +} + +.rounded { + border-radius: var(--bs-border-radius) !important; +} + +.rounded-0 { + border-radius: 0 !important; +} + +.rounded-1 { + border-radius: var(--bs-border-radius-sm) !important; +} + +.rounded-2 { + border-radius: var(--bs-border-radius) !important; +} + +.rounded-3 { + border-radius: var(--bs-border-radius-lg) !important; +} + +.rounded-4 { + border-radius: var(--bs-border-radius-xl) !important; +} + +.rounded-5 { + border-radius: var(--bs-border-radius-xxl) !important; +} + +.rounded-circle { + border-radius: 50% !important; +} + +.rounded-pill { + border-radius: var(--bs-border-radius-pill) !important; +} + +.rounded-top { + border-top-left-radius: var(--bs-border-radius) !important; + border-top-right-radius: var(--bs-border-radius) !important; +} + +.rounded-top-0 { + border-top-left-radius: 0 !important; + border-top-right-radius: 0 !important; +} + +.rounded-top-1 { + border-top-left-radius: var(--bs-border-radius-sm) !important; + border-top-right-radius: var(--bs-border-radius-sm) !important; +} + +.rounded-top-2 { + border-top-left-radius: var(--bs-border-radius) !important; + border-top-right-radius: var(--bs-border-radius) !important; +} + +.rounded-top-3 { + border-top-left-radius: var(--bs-border-radius-lg) !important; + border-top-right-radius: var(--bs-border-radius-lg) !important; +} + +.rounded-top-4 { + border-top-left-radius: var(--bs-border-radius-xl) !important; + border-top-right-radius: var(--bs-border-radius-xl) !important; +} + +.rounded-top-5 { + border-top-left-radius: var(--bs-border-radius-xxl) !important; + border-top-right-radius: var(--bs-border-radius-xxl) !important; +} + +.rounded-top-circle { + border-top-left-radius: 50% !important; + border-top-right-radius: 50% !important; +} + +.rounded-top-pill { + border-top-left-radius: var(--bs-border-radius-pill) !important; + border-top-right-radius: var(--bs-border-radius-pill) !important; +} + +.rounded-end { + border-top-right-radius: var(--bs-border-radius) !important; + border-bottom-right-radius: var(--bs-border-radius) !important; +} + +.rounded-end-0 { + border-top-right-radius: 0 !important; + border-bottom-right-radius: 0 !important; +} + +.rounded-end-1 { + border-top-right-radius: var(--bs-border-radius-sm) !important; + border-bottom-right-radius: var(--bs-border-radius-sm) !important; +} + +.rounded-end-2 { + border-top-right-radius: var(--bs-border-radius) !important; + border-bottom-right-radius: var(--bs-border-radius) !important; +} + +.rounded-end-3 { + border-top-right-radius: var(--bs-border-radius-lg) !important; + border-bottom-right-radius: var(--bs-border-radius-lg) !important; +} + +.rounded-end-4 { + border-top-right-radius: var(--bs-border-radius-xl) !important; + border-bottom-right-radius: var(--bs-border-radius-xl) !important; +} + +.rounded-end-5 { + border-top-right-radius: var(--bs-border-radius-xxl) !important; + border-bottom-right-radius: var(--bs-border-radius-xxl) !important; +} + +.rounded-end-circle { + border-top-right-radius: 50% !important; + border-bottom-right-radius: 50% !important; +} + +.rounded-end-pill { + border-top-right-radius: var(--bs-border-radius-pill) !important; + border-bottom-right-radius: var(--bs-border-radius-pill) !important; +} + +.rounded-bottom { + border-bottom-right-radius: var(--bs-border-radius) !important; + border-bottom-left-radius: var(--bs-border-radius) !important; +} + +.rounded-bottom-0 { + border-bottom-right-radius: 0 !important; + border-bottom-left-radius: 0 !important; +} + +.rounded-bottom-1 { + border-bottom-right-radius: var(--bs-border-radius-sm) !important; + border-bottom-left-radius: var(--bs-border-radius-sm) !important; +} + +.rounded-bottom-2 { + border-bottom-right-radius: var(--bs-border-radius) !important; + border-bottom-left-radius: var(--bs-border-radius) !important; +} + +.rounded-bottom-3 { + border-bottom-right-radius: var(--bs-border-radius-lg) !important; + border-bottom-left-radius: var(--bs-border-radius-lg) !important; +} + +.rounded-bottom-4 { + border-bottom-right-radius: var(--bs-border-radius-xl) !important; + border-bottom-left-radius: var(--bs-border-radius-xl) !important; +} + +.rounded-bottom-5 { + border-bottom-right-radius: var(--bs-border-radius-xxl) !important; + border-bottom-left-radius: var(--bs-border-radius-xxl) !important; +} + +.rounded-bottom-circle { + border-bottom-right-radius: 50% !important; + border-bottom-left-radius: 50% !important; +} + +.rounded-bottom-pill { + border-bottom-right-radius: var(--bs-border-radius-pill) !important; + border-bottom-left-radius: var(--bs-border-radius-pill) !important; +} + +.rounded-start { + border-bottom-left-radius: var(--bs-border-radius) !important; + border-top-left-radius: var(--bs-border-radius) !important; +} + +.rounded-start-0 { + border-bottom-left-radius: 0 !important; + border-top-left-radius: 0 !important; +} + +.rounded-start-1 { + border-bottom-left-radius: var(--bs-border-radius-sm) !important; + border-top-left-radius: var(--bs-border-radius-sm) !important; +} + +.rounded-start-2 { + border-bottom-left-radius: var(--bs-border-radius) !important; + border-top-left-radius: var(--bs-border-radius) !important; +} + +.rounded-start-3 { + border-bottom-left-radius: var(--bs-border-radius-lg) !important; + border-top-left-radius: var(--bs-border-radius-lg) !important; +} + +.rounded-start-4 { + border-bottom-left-radius: var(--bs-border-radius-xl) !important; + border-top-left-radius: var(--bs-border-radius-xl) !important; +} + +.rounded-start-5 { + border-bottom-left-radius: var(--bs-border-radius-xxl) !important; + border-top-left-radius: var(--bs-border-radius-xxl) !important; +} + +.rounded-start-circle { + border-bottom-left-radius: 50% !important; + border-top-left-radius: 50% !important; +} + +.rounded-start-pill { + border-bottom-left-radius: var(--bs-border-radius-pill) !important; + border-top-left-radius: var(--bs-border-radius-pill) !important; +} + +.visible { + visibility: visible !important; +} + +.invisible { + visibility: hidden !important; +} + +.z-n1 { + z-index: -1 !important; +} + +.z-0 { + z-index: 0 !important; +} + +.z-1 { + z-index: 1 !important; +} + +.z-2 { + z-index: 2 !important; +} + +.z-3 { + z-index: 3 !important; +} + +@media (min-width: 576px) { + .float-sm-start { + float: left !important; + } + .float-sm-end { + float: right !important; + } + .float-sm-none { + float: none !important; + } + .object-fit-sm-contain { + -o-object-fit: contain !important; + object-fit: contain !important; + } + .object-fit-sm-cover { + -o-object-fit: cover !important; + object-fit: cover !important; + } + .object-fit-sm-fill { + -o-object-fit: fill !important; + object-fit: fill !important; + } + .object-fit-sm-scale { + -o-object-fit: scale-down !important; + object-fit: scale-down !important; + } + .object-fit-sm-none { + -o-object-fit: none !important; + object-fit: none !important; + } + .d-sm-inline { + display: inline !important; + } + .d-sm-inline-block { + display: inline-block !important; + } + .d-sm-block { + display: block !important; + } + .d-sm-grid { + display: grid !important; + } + .d-sm-inline-grid { + display: inline-grid !important; + } + .d-sm-table { + display: table !important; + } + .d-sm-table-row { + display: table-row !important; + } + .d-sm-table-cell { + display: table-cell !important; + } + .d-sm-flex { + display: flex !important; + } + .d-sm-inline-flex { + display: inline-flex !important; + } + .d-sm-none { + display: none !important; + } + .flex-sm-fill { + flex: 1 1 auto !important; + } + .flex-sm-row { + flex-direction: row !important; + } + .flex-sm-column { + flex-direction: column !important; + } + .flex-sm-row-reverse { + flex-direction: row-reverse !important; + } + .flex-sm-column-reverse { + flex-direction: column-reverse !important; + } + .flex-sm-grow-0 { + flex-grow: 0 !important; + } + .flex-sm-grow-1 { + flex-grow: 1 !important; + } + .flex-sm-shrink-0 { + flex-shrink: 0 !important; + } + .flex-sm-shrink-1 { + flex-shrink: 1 !important; + } + .flex-sm-wrap { + flex-wrap: wrap !important; + } + .flex-sm-nowrap { + flex-wrap: nowrap !important; + } + .flex-sm-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-sm-start { + justify-content: flex-start !important; + } + .justify-content-sm-end { + justify-content: flex-end !important; + } + .justify-content-sm-center { + justify-content: center !important; + } + .justify-content-sm-between { + justify-content: space-between !important; + } + .justify-content-sm-around { + justify-content: space-around !important; + } + .justify-content-sm-evenly { + justify-content: space-evenly !important; + } + .align-items-sm-start { + align-items: flex-start !important; + } + .align-items-sm-end { + align-items: flex-end !important; + } + .align-items-sm-center { + align-items: center !important; + } + .align-items-sm-baseline { + align-items: baseline !important; + } + .align-items-sm-stretch { + align-items: stretch !important; + } + .align-content-sm-start { + align-content: flex-start !important; + } + .align-content-sm-end { + align-content: flex-end !important; + } + .align-content-sm-center { + align-content: center !important; + } + .align-content-sm-between { + align-content: space-between !important; + } + .align-content-sm-around { + align-content: space-around !important; + } + .align-content-sm-stretch { + align-content: stretch !important; + } + .align-self-sm-auto { + align-self: auto !important; + } + .align-self-sm-start { + align-self: flex-start !important; + } + .align-self-sm-end { + align-self: flex-end !important; + } + .align-self-sm-center { + align-self: center !important; + } + .align-self-sm-baseline { + align-self: baseline !important; + } + .align-self-sm-stretch { + align-self: stretch !important; + } + .order-sm-first { + order: -1 !important; + } + .order-sm-0 { + order: 0 !important; + } + .order-sm-1 { + order: 1 !important; + } + .order-sm-2 { + order: 2 !important; + } + .order-sm-3 { + order: 3 !important; + } + .order-sm-4 { + order: 4 !important; + } + .order-sm-5 { + order: 5 !important; + } + .order-sm-last { + order: 6 !important; + } + .m-sm-0 { + margin: 0 !important; + } + .m-sm-1 { + margin: 0.25rem !important; + } + .m-sm-2 { + margin: 0.5rem !important; + } + .m-sm-3 { + margin: 1rem !important; + } + .m-sm-4 { + margin: 1.5rem !important; + } + .m-sm-5 { + margin: 3rem !important; + } + .m-sm-auto { + margin: auto !important; + } + .mx-sm-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .mx-sm-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-sm-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .mx-sm-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .mx-sm-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .mx-sm-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .mx-sm-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-sm-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-sm-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-sm-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-sm-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-sm-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-sm-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-sm-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-sm-0 { + margin-top: 0 !important; + } + .mt-sm-1 { + margin-top: 0.25rem !important; + } + .mt-sm-2 { + margin-top: 0.5rem !important; + } + .mt-sm-3 { + margin-top: 1rem !important; + } + .mt-sm-4 { + margin-top: 1.5rem !important; + } + .mt-sm-5 { + margin-top: 3rem !important; + } + .mt-sm-auto { + margin-top: auto !important; + } + .me-sm-0 { + margin-right: 0 !important; + } + .me-sm-1 { + margin-right: 0.25rem !important; + } + .me-sm-2 { + margin-right: 0.5rem !important; + } + .me-sm-3 { + margin-right: 1rem !important; + } + .me-sm-4 { + margin-right: 1.5rem !important; + } + .me-sm-5 { + margin-right: 3rem !important; + } + .me-sm-auto { + margin-right: auto !important; + } + .mb-sm-0 { + margin-bottom: 0 !important; + } + .mb-sm-1 { + margin-bottom: 0.25rem !important; + } + .mb-sm-2 { + margin-bottom: 0.5rem !important; + } + .mb-sm-3 { + margin-bottom: 1rem !important; + } + .mb-sm-4 { + margin-bottom: 1.5rem !important; + } + .mb-sm-5 { + margin-bottom: 3rem !important; + } + .mb-sm-auto { + margin-bottom: auto !important; + } + .ms-sm-0 { + margin-left: 0 !important; + } + .ms-sm-1 { + margin-left: 0.25rem !important; + } + .ms-sm-2 { + margin-left: 0.5rem !important; + } + .ms-sm-3 { + margin-left: 1rem !important; + } + .ms-sm-4 { + margin-left: 1.5rem !important; + } + .ms-sm-5 { + margin-left: 3rem !important; + } + .ms-sm-auto { + margin-left: auto !important; + } + .p-sm-0 { + padding: 0 !important; + } + .p-sm-1 { + padding: 0.25rem !important; + } + .p-sm-2 { + padding: 0.5rem !important; + } + .p-sm-3 { + padding: 1rem !important; + } + .p-sm-4 { + padding: 1.5rem !important; + } + .p-sm-5 { + padding: 3rem !important; + } + .px-sm-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .px-sm-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-sm-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .px-sm-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .px-sm-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .px-sm-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .py-sm-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-sm-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-sm-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-sm-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-sm-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-sm-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .pt-sm-0 { + padding-top: 0 !important; + } + .pt-sm-1 { + padding-top: 0.25rem !important; + } + .pt-sm-2 { + padding-top: 0.5rem !important; + } + .pt-sm-3 { + padding-top: 1rem !important; + } + .pt-sm-4 { + padding-top: 1.5rem !important; + } + .pt-sm-5 { + padding-top: 3rem !important; + } + .pe-sm-0 { + padding-right: 0 !important; + } + .pe-sm-1 { + padding-right: 0.25rem !important; + } + .pe-sm-2 { + padding-right: 0.5rem !important; + } + .pe-sm-3 { + padding-right: 1rem !important; + } + .pe-sm-4 { + padding-right: 1.5rem !important; + } + .pe-sm-5 { + padding-right: 3rem !important; + } + .pb-sm-0 { + padding-bottom: 0 !important; + } + .pb-sm-1 { + padding-bottom: 0.25rem !important; + } + .pb-sm-2 { + padding-bottom: 0.5rem !important; + } + .pb-sm-3 { + padding-bottom: 1rem !important; + } + .pb-sm-4 { + padding-bottom: 1.5rem !important; + } + .pb-sm-5 { + padding-bottom: 3rem !important; + } + .ps-sm-0 { + padding-left: 0 !important; + } + .ps-sm-1 { + padding-left: 0.25rem !important; + } + .ps-sm-2 { + padding-left: 0.5rem !important; + } + .ps-sm-3 { + padding-left: 1rem !important; + } + .ps-sm-4 { + padding-left: 1.5rem !important; + } + .ps-sm-5 { + padding-left: 3rem !important; + } + .gap-sm-0 { + gap: 0 !important; + } + .gap-sm-1 { + gap: 0.25rem !important; + } + .gap-sm-2 { + gap: 0.5rem !important; + } + .gap-sm-3 { + gap: 1rem !important; + } + .gap-sm-4 { + gap: 1.5rem !important; + } + .gap-sm-5 { + gap: 3rem !important; + } + .row-gap-sm-0 { + row-gap: 0 !important; + } + .row-gap-sm-1 { + row-gap: 0.25rem !important; + } + .row-gap-sm-2 { + row-gap: 0.5rem !important; + } + .row-gap-sm-3 { + row-gap: 1rem !important; + } + .row-gap-sm-4 { + row-gap: 1.5rem !important; + } + .row-gap-sm-5 { + row-gap: 3rem !important; + } + .column-gap-sm-0 { + -moz-column-gap: 0 !important; + column-gap: 0 !important; + } + .column-gap-sm-1 { + -moz-column-gap: 0.25rem !important; + column-gap: 0.25rem !important; + } + .column-gap-sm-2 { + -moz-column-gap: 0.5rem !important; + column-gap: 0.5rem !important; + } + .column-gap-sm-3 { + -moz-column-gap: 1rem !important; + column-gap: 1rem !important; + } + .column-gap-sm-4 { + -moz-column-gap: 1.5rem !important; + column-gap: 1.5rem !important; + } + .column-gap-sm-5 { + -moz-column-gap: 3rem !important; + column-gap: 3rem !important; + } + .text-sm-start { + text-align: left !important; + } + .text-sm-end { + text-align: right !important; + } + .text-sm-center { + text-align: center !important; + } +} +@media (min-width: 768px) { + .float-md-start { + float: left !important; + } + .float-md-end { + float: right !important; + } + .float-md-none { + float: none !important; + } + .object-fit-md-contain { + -o-object-fit: contain !important; + object-fit: contain !important; + } + .object-fit-md-cover { + -o-object-fit: cover !important; + object-fit: cover !important; + } + .object-fit-md-fill { + -o-object-fit: fill !important; + object-fit: fill !important; + } + .object-fit-md-scale { + -o-object-fit: scale-down !important; + object-fit: scale-down !important; + } + .object-fit-md-none { + -o-object-fit: none !important; + object-fit: none !important; + } + .d-md-inline { + display: inline !important; + } + .d-md-inline-block { + display: inline-block !important; + } + .d-md-block { + display: block !important; + } + .d-md-grid { + display: grid !important; + } + .d-md-inline-grid { + display: inline-grid !important; + } + .d-md-table { + display: table !important; + } + .d-md-table-row { + display: table-row !important; + } + .d-md-table-cell { + display: table-cell !important; + } + .d-md-flex { + display: flex !important; + } + .d-md-inline-flex { + display: inline-flex !important; + } + .d-md-none { + display: none !important; + } + .flex-md-fill { + flex: 1 1 auto !important; + } + .flex-md-row { + flex-direction: row !important; + } + .flex-md-column { + flex-direction: column !important; + } + .flex-md-row-reverse { + flex-direction: row-reverse !important; + } + .flex-md-column-reverse { + flex-direction: column-reverse !important; + } + .flex-md-grow-0 { + flex-grow: 0 !important; + } + .flex-md-grow-1 { + flex-grow: 1 !important; + } + .flex-md-shrink-0 { + flex-shrink: 0 !important; + } + .flex-md-shrink-1 { + flex-shrink: 1 !important; + } + .flex-md-wrap { + flex-wrap: wrap !important; + } + .flex-md-nowrap { + flex-wrap: nowrap !important; + } + .flex-md-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-md-start { + justify-content: flex-start !important; + } + .justify-content-md-end { + justify-content: flex-end !important; + } + .justify-content-md-center { + justify-content: center !important; + } + .justify-content-md-between { + justify-content: space-between !important; + } + .justify-content-md-around { + justify-content: space-around !important; + } + .justify-content-md-evenly { + justify-content: space-evenly !important; + } + .align-items-md-start { + align-items: flex-start !important; + } + .align-items-md-end { + align-items: flex-end !important; + } + .align-items-md-center { + align-items: center !important; + } + .align-items-md-baseline { + align-items: baseline !important; + } + .align-items-md-stretch { + align-items: stretch !important; + } + .align-content-md-start { + align-content: flex-start !important; + } + .align-content-md-end { + align-content: flex-end !important; + } + .align-content-md-center { + align-content: center !important; + } + .align-content-md-between { + align-content: space-between !important; + } + .align-content-md-around { + align-content: space-around !important; + } + .align-content-md-stretch { + align-content: stretch !important; + } + .align-self-md-auto { + align-self: auto !important; + } + .align-self-md-start { + align-self: flex-start !important; + } + .align-self-md-end { + align-self: flex-end !important; + } + .align-self-md-center { + align-self: center !important; + } + .align-self-md-baseline { + align-self: baseline !important; + } + .align-self-md-stretch { + align-self: stretch !important; + } + .order-md-first { + order: -1 !important; + } + .order-md-0 { + order: 0 !important; + } + .order-md-1 { + order: 1 !important; + } + .order-md-2 { + order: 2 !important; + } + .order-md-3 { + order: 3 !important; + } + .order-md-4 { + order: 4 !important; + } + .order-md-5 { + order: 5 !important; + } + .order-md-last { + order: 6 !important; + } + .m-md-0 { + margin: 0 !important; + } + .m-md-1 { + margin: 0.25rem !important; + } + .m-md-2 { + margin: 0.5rem !important; + } + .m-md-3 { + margin: 1rem !important; + } + .m-md-4 { + margin: 1.5rem !important; + } + .m-md-5 { + margin: 3rem !important; + } + .m-md-auto { + margin: auto !important; + } + .mx-md-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .mx-md-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-md-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .mx-md-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .mx-md-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .mx-md-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .mx-md-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-md-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-md-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-md-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-md-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-md-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-md-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-md-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-md-0 { + margin-top: 0 !important; + } + .mt-md-1 { + margin-top: 0.25rem !important; + } + .mt-md-2 { + margin-top: 0.5rem !important; + } + .mt-md-3 { + margin-top: 1rem !important; + } + .mt-md-4 { + margin-top: 1.5rem !important; + } + .mt-md-5 { + margin-top: 3rem !important; + } + .mt-md-auto { + margin-top: auto !important; + } + .me-md-0 { + margin-right: 0 !important; + } + .me-md-1 { + margin-right: 0.25rem !important; + } + .me-md-2 { + margin-right: 0.5rem !important; + } + .me-md-3 { + margin-right: 1rem !important; + } + .me-md-4 { + margin-right: 1.5rem !important; + } + .me-md-5 { + margin-right: 3rem !important; + } + .me-md-auto { + margin-right: auto !important; + } + .mb-md-0 { + margin-bottom: 0 !important; + } + .mb-md-1 { + margin-bottom: 0.25rem !important; + } + .mb-md-2 { + margin-bottom: 0.5rem !important; + } + .mb-md-3 { + margin-bottom: 1rem !important; + } + .mb-md-4 { + margin-bottom: 1.5rem !important; + } + .mb-md-5 { + margin-bottom: 3rem !important; + } + .mb-md-auto { + margin-bottom: auto !important; + } + .ms-md-0 { + margin-left: 0 !important; + } + .ms-md-1 { + margin-left: 0.25rem !important; + } + .ms-md-2 { + margin-left: 0.5rem !important; + } + .ms-md-3 { + margin-left: 1rem !important; + } + .ms-md-4 { + margin-left: 1.5rem !important; + } + .ms-md-5 { + margin-left: 3rem !important; + } + .ms-md-auto { + margin-left: auto !important; + } + .p-md-0 { + padding: 0 !important; + } + .p-md-1 { + padding: 0.25rem !important; + } + .p-md-2 { + padding: 0.5rem !important; + } + .p-md-3 { + padding: 1rem !important; + } + .p-md-4 { + padding: 1.5rem !important; + } + .p-md-5 { + padding: 3rem !important; + } + .px-md-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .px-md-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-md-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .px-md-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .px-md-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .px-md-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .py-md-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-md-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-md-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-md-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-md-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-md-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .pt-md-0 { + padding-top: 0 !important; + } + .pt-md-1 { + padding-top: 0.25rem !important; + } + .pt-md-2 { + padding-top: 0.5rem !important; + } + .pt-md-3 { + padding-top: 1rem !important; + } + .pt-md-4 { + padding-top: 1.5rem !important; + } + .pt-md-5 { + padding-top: 3rem !important; + } + .pe-md-0 { + padding-right: 0 !important; + } + .pe-md-1 { + padding-right: 0.25rem !important; + } + .pe-md-2 { + padding-right: 0.5rem !important; + } + .pe-md-3 { + padding-right: 1rem !important; + } + .pe-md-4 { + padding-right: 1.5rem !important; + } + .pe-md-5 { + padding-right: 3rem !important; + } + .pb-md-0 { + padding-bottom: 0 !important; + } + .pb-md-1 { + padding-bottom: 0.25rem !important; + } + .pb-md-2 { + padding-bottom: 0.5rem !important; + } + .pb-md-3 { + padding-bottom: 1rem !important; + } + .pb-md-4 { + padding-bottom: 1.5rem !important; + } + .pb-md-5 { + padding-bottom: 3rem !important; + } + .ps-md-0 { + padding-left: 0 !important; + } + .ps-md-1 { + padding-left: 0.25rem !important; + } + .ps-md-2 { + padding-left: 0.5rem !important; + } + .ps-md-3 { + padding-left: 1rem !important; + } + .ps-md-4 { + padding-left: 1.5rem !important; + } + .ps-md-5 { + padding-left: 3rem !important; + } + .gap-md-0 { + gap: 0 !important; + } + .gap-md-1 { + gap: 0.25rem !important; + } + .gap-md-2 { + gap: 0.5rem !important; + } + .gap-md-3 { + gap: 1rem !important; + } + .gap-md-4 { + gap: 1.5rem !important; + } + .gap-md-5 { + gap: 3rem !important; + } + .row-gap-md-0 { + row-gap: 0 !important; + } + .row-gap-md-1 { + row-gap: 0.25rem !important; + } + .row-gap-md-2 { + row-gap: 0.5rem !important; + } + .row-gap-md-3 { + row-gap: 1rem !important; + } + .row-gap-md-4 { + row-gap: 1.5rem !important; + } + .row-gap-md-5 { + row-gap: 3rem !important; + } + .column-gap-md-0 { + -moz-column-gap: 0 !important; + column-gap: 0 !important; + } + .column-gap-md-1 { + -moz-column-gap: 0.25rem !important; + column-gap: 0.25rem !important; + } + .column-gap-md-2 { + -moz-column-gap: 0.5rem !important; + column-gap: 0.5rem !important; + } + .column-gap-md-3 { + -moz-column-gap: 1rem !important; + column-gap: 1rem !important; + } + .column-gap-md-4 { + -moz-column-gap: 1.5rem !important; + column-gap: 1.5rem !important; + } + .column-gap-md-5 { + -moz-column-gap: 3rem !important; + column-gap: 3rem !important; + } + .text-md-start { + text-align: left !important; + } + .text-md-end { + text-align: right !important; + } + .text-md-center { + text-align: center !important; + } +} +@media (min-width: 992px) { + .float-lg-start { + float: left !important; + } + .float-lg-end { + float: right !important; + } + .float-lg-none { + float: none !important; + } + .object-fit-lg-contain { + -o-object-fit: contain !important; + object-fit: contain !important; + } + .object-fit-lg-cover { + -o-object-fit: cover !important; + object-fit: cover !important; + } + .object-fit-lg-fill { + -o-object-fit: fill !important; + object-fit: fill !important; + } + .object-fit-lg-scale { + -o-object-fit: scale-down !important; + object-fit: scale-down !important; + } + .object-fit-lg-none { + -o-object-fit: none !important; + object-fit: none !important; + } + .d-lg-inline { + display: inline !important; + } + .d-lg-inline-block { + display: inline-block !important; + } + .d-lg-block { + display: block !important; + } + .d-lg-grid { + display: grid !important; + } + .d-lg-inline-grid { + display: inline-grid !important; + } + .d-lg-table { + display: table !important; + } + .d-lg-table-row { + display: table-row !important; + } + .d-lg-table-cell { + display: table-cell !important; + } + .d-lg-flex { + display: flex !important; + } + .d-lg-inline-flex { + display: inline-flex !important; + } + .d-lg-none { + display: none !important; + } + .flex-lg-fill { + flex: 1 1 auto !important; + } + .flex-lg-row { + flex-direction: row !important; + } + .flex-lg-column { + flex-direction: column !important; + } + .flex-lg-row-reverse { + flex-direction: row-reverse !important; + } + .flex-lg-column-reverse { + flex-direction: column-reverse !important; + } + .flex-lg-grow-0 { + flex-grow: 0 !important; + } + .flex-lg-grow-1 { + flex-grow: 1 !important; + } + .flex-lg-shrink-0 { + flex-shrink: 0 !important; + } + .flex-lg-shrink-1 { + flex-shrink: 1 !important; + } + .flex-lg-wrap { + flex-wrap: wrap !important; + } + .flex-lg-nowrap { + flex-wrap: nowrap !important; + } + .flex-lg-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-lg-start { + justify-content: flex-start !important; + } + .justify-content-lg-end { + justify-content: flex-end !important; + } + .justify-content-lg-center { + justify-content: center !important; + } + .justify-content-lg-between { + justify-content: space-between !important; + } + .justify-content-lg-around { + justify-content: space-around !important; + } + .justify-content-lg-evenly { + justify-content: space-evenly !important; + } + .align-items-lg-start { + align-items: flex-start !important; + } + .align-items-lg-end { + align-items: flex-end !important; + } + .align-items-lg-center { + align-items: center !important; + } + .align-items-lg-baseline { + align-items: baseline !important; + } + .align-items-lg-stretch { + align-items: stretch !important; + } + .align-content-lg-start { + align-content: flex-start !important; + } + .align-content-lg-end { + align-content: flex-end !important; + } + .align-content-lg-center { + align-content: center !important; + } + .align-content-lg-between { + align-content: space-between !important; + } + .align-content-lg-around { + align-content: space-around !important; + } + .align-content-lg-stretch { + align-content: stretch !important; + } + .align-self-lg-auto { + align-self: auto !important; + } + .align-self-lg-start { + align-self: flex-start !important; + } + .align-self-lg-end { + align-self: flex-end !important; + } + .align-self-lg-center { + align-self: center !important; + } + .align-self-lg-baseline { + align-self: baseline !important; + } + .align-self-lg-stretch { + align-self: stretch !important; + } + .order-lg-first { + order: -1 !important; + } + .order-lg-0 { + order: 0 !important; + } + .order-lg-1 { + order: 1 !important; + } + .order-lg-2 { + order: 2 !important; + } + .order-lg-3 { + order: 3 !important; + } + .order-lg-4 { + order: 4 !important; + } + .order-lg-5 { + order: 5 !important; + } + .order-lg-last { + order: 6 !important; + } + .m-lg-0 { + margin: 0 !important; + } + .m-lg-1 { + margin: 0.25rem !important; + } + .m-lg-2 { + margin: 0.5rem !important; + } + .m-lg-3 { + margin: 1rem !important; + } + .m-lg-4 { + margin: 1.5rem !important; + } + .m-lg-5 { + margin: 3rem !important; + } + .m-lg-auto { + margin: auto !important; + } + .mx-lg-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .mx-lg-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-lg-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .mx-lg-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .mx-lg-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .mx-lg-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .mx-lg-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-lg-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-lg-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-lg-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-lg-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-lg-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-lg-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-lg-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-lg-0 { + margin-top: 0 !important; + } + .mt-lg-1 { + margin-top: 0.25rem !important; + } + .mt-lg-2 { + margin-top: 0.5rem !important; + } + .mt-lg-3 { + margin-top: 1rem !important; + } + .mt-lg-4 { + margin-top: 1.5rem !important; + } + .mt-lg-5 { + margin-top: 3rem !important; + } + .mt-lg-auto { + margin-top: auto !important; + } + .me-lg-0 { + margin-right: 0 !important; + } + .me-lg-1 { + margin-right: 0.25rem !important; + } + .me-lg-2 { + margin-right: 0.5rem !important; + } + .me-lg-3 { + margin-right: 1rem !important; + } + .me-lg-4 { + margin-right: 1.5rem !important; + } + .me-lg-5 { + margin-right: 3rem !important; + } + .me-lg-auto { + margin-right: auto !important; + } + .mb-lg-0 { + margin-bottom: 0 !important; + } + .mb-lg-1 { + margin-bottom: 0.25rem !important; + } + .mb-lg-2 { + margin-bottom: 0.5rem !important; + } + .mb-lg-3 { + margin-bottom: 1rem !important; + } + .mb-lg-4 { + margin-bottom: 1.5rem !important; + } + .mb-lg-5 { + margin-bottom: 3rem !important; + } + .mb-lg-auto { + margin-bottom: auto !important; + } + .ms-lg-0 { + margin-left: 0 !important; + } + .ms-lg-1 { + margin-left: 0.25rem !important; + } + .ms-lg-2 { + margin-left: 0.5rem !important; + } + .ms-lg-3 { + margin-left: 1rem !important; + } + .ms-lg-4 { + margin-left: 1.5rem !important; + } + .ms-lg-5 { + margin-left: 3rem !important; + } + .ms-lg-auto { + margin-left: auto !important; + } + .p-lg-0 { + padding: 0 !important; + } + .p-lg-1 { + padding: 0.25rem !important; + } + .p-lg-2 { + padding: 0.5rem !important; + } + .p-lg-3 { + padding: 1rem !important; + } + .p-lg-4 { + padding: 1.5rem !important; + } + .p-lg-5 { + padding: 3rem !important; + } + .px-lg-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .px-lg-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-lg-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .px-lg-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .px-lg-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .px-lg-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .py-lg-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-lg-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-lg-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-lg-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-lg-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-lg-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .pt-lg-0 { + padding-top: 0 !important; + } + .pt-lg-1 { + padding-top: 0.25rem !important; + } + .pt-lg-2 { + padding-top: 0.5rem !important; + } + .pt-lg-3 { + padding-top: 1rem !important; + } + .pt-lg-4 { + padding-top: 1.5rem !important; + } + .pt-lg-5 { + padding-top: 3rem !important; + } + .pe-lg-0 { + padding-right: 0 !important; + } + .pe-lg-1 { + padding-right: 0.25rem !important; + } + .pe-lg-2 { + padding-right: 0.5rem !important; + } + .pe-lg-3 { + padding-right: 1rem !important; + } + .pe-lg-4 { + padding-right: 1.5rem !important; + } + .pe-lg-5 { + padding-right: 3rem !important; + } + .pb-lg-0 { + padding-bottom: 0 !important; + } + .pb-lg-1 { + padding-bottom: 0.25rem !important; + } + .pb-lg-2 { + padding-bottom: 0.5rem !important; + } + .pb-lg-3 { + padding-bottom: 1rem !important; + } + .pb-lg-4 { + padding-bottom: 1.5rem !important; + } + .pb-lg-5 { + padding-bottom: 3rem !important; + } + .ps-lg-0 { + padding-left: 0 !important; + } + .ps-lg-1 { + padding-left: 0.25rem !important; + } + .ps-lg-2 { + padding-left: 0.5rem !important; + } + .ps-lg-3 { + padding-left: 1rem !important; + } + .ps-lg-4 { + padding-left: 1.5rem !important; + } + .ps-lg-5 { + padding-left: 3rem !important; + } + .gap-lg-0 { + gap: 0 !important; + } + .gap-lg-1 { + gap: 0.25rem !important; + } + .gap-lg-2 { + gap: 0.5rem !important; + } + .gap-lg-3 { + gap: 1rem !important; + } + .gap-lg-4 { + gap: 1.5rem !important; + } + .gap-lg-5 { + gap: 3rem !important; + } + .row-gap-lg-0 { + row-gap: 0 !important; + } + .row-gap-lg-1 { + row-gap: 0.25rem !important; + } + .row-gap-lg-2 { + row-gap: 0.5rem !important; + } + .row-gap-lg-3 { + row-gap: 1rem !important; + } + .row-gap-lg-4 { + row-gap: 1.5rem !important; + } + .row-gap-lg-5 { + row-gap: 3rem !important; + } + .column-gap-lg-0 { + -moz-column-gap: 0 !important; + column-gap: 0 !important; + } + .column-gap-lg-1 { + -moz-column-gap: 0.25rem !important; + column-gap: 0.25rem !important; + } + .column-gap-lg-2 { + -moz-column-gap: 0.5rem !important; + column-gap: 0.5rem !important; + } + .column-gap-lg-3 { + -moz-column-gap: 1rem !important; + column-gap: 1rem !important; + } + .column-gap-lg-4 { + -moz-column-gap: 1.5rem !important; + column-gap: 1.5rem !important; + } + .column-gap-lg-5 { + -moz-column-gap: 3rem !important; + column-gap: 3rem !important; + } + .text-lg-start { + text-align: left !important; + } + .text-lg-end { + text-align: right !important; + } + .text-lg-center { + text-align: center !important; + } +} +@media (min-width: 1200px) { + .float-xl-start { + float: left !important; + } + .float-xl-end { + float: right !important; + } + .float-xl-none { + float: none !important; + } + .object-fit-xl-contain { + -o-object-fit: contain !important; + object-fit: contain !important; + } + .object-fit-xl-cover { + -o-object-fit: cover !important; + object-fit: cover !important; + } + .object-fit-xl-fill { + -o-object-fit: fill !important; + object-fit: fill !important; + } + .object-fit-xl-scale { + -o-object-fit: scale-down !important; + object-fit: scale-down !important; + } + .object-fit-xl-none { + -o-object-fit: none !important; + object-fit: none !important; + } + .d-xl-inline { + display: inline !important; + } + .d-xl-inline-block { + display: inline-block !important; + } + .d-xl-block { + display: block !important; + } + .d-xl-grid { + display: grid !important; + } + .d-xl-inline-grid { + display: inline-grid !important; + } + .d-xl-table { + display: table !important; + } + .d-xl-table-row { + display: table-row !important; + } + .d-xl-table-cell { + display: table-cell !important; + } + .d-xl-flex { + display: flex !important; + } + .d-xl-inline-flex { + display: inline-flex !important; + } + .d-xl-none { + display: none !important; + } + .flex-xl-fill { + flex: 1 1 auto !important; + } + .flex-xl-row { + flex-direction: row !important; + } + .flex-xl-column { + flex-direction: column !important; + } + .flex-xl-row-reverse { + flex-direction: row-reverse !important; + } + .flex-xl-column-reverse { + flex-direction: column-reverse !important; + } + .flex-xl-grow-0 { + flex-grow: 0 !important; + } + .flex-xl-grow-1 { + flex-grow: 1 !important; + } + .flex-xl-shrink-0 { + flex-shrink: 0 !important; + } + .flex-xl-shrink-1 { + flex-shrink: 1 !important; + } + .flex-xl-wrap { + flex-wrap: wrap !important; + } + .flex-xl-nowrap { + flex-wrap: nowrap !important; + } + .flex-xl-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-xl-start { + justify-content: flex-start !important; + } + .justify-content-xl-end { + justify-content: flex-end !important; + } + .justify-content-xl-center { + justify-content: center !important; + } + .justify-content-xl-between { + justify-content: space-between !important; + } + .justify-content-xl-around { + justify-content: space-around !important; + } + .justify-content-xl-evenly { + justify-content: space-evenly !important; + } + .align-items-xl-start { + align-items: flex-start !important; + } + .align-items-xl-end { + align-items: flex-end !important; + } + .align-items-xl-center { + align-items: center !important; + } + .align-items-xl-baseline { + align-items: baseline !important; + } + .align-items-xl-stretch { + align-items: stretch !important; + } + .align-content-xl-start { + align-content: flex-start !important; + } + .align-content-xl-end { + align-content: flex-end !important; + } + .align-content-xl-center { + align-content: center !important; + } + .align-content-xl-between { + align-content: space-between !important; + } + .align-content-xl-around { + align-content: space-around !important; + } + .align-content-xl-stretch { + align-content: stretch !important; + } + .align-self-xl-auto { + align-self: auto !important; + } + .align-self-xl-start { + align-self: flex-start !important; + } + .align-self-xl-end { + align-self: flex-end !important; + } + .align-self-xl-center { + align-self: center !important; + } + .align-self-xl-baseline { + align-self: baseline !important; + } + .align-self-xl-stretch { + align-self: stretch !important; + } + .order-xl-first { + order: -1 !important; + } + .order-xl-0 { + order: 0 !important; + } + .order-xl-1 { + order: 1 !important; + } + .order-xl-2 { + order: 2 !important; + } + .order-xl-3 { + order: 3 !important; + } + .order-xl-4 { + order: 4 !important; + } + .order-xl-5 { + order: 5 !important; + } + .order-xl-last { + order: 6 !important; + } + .m-xl-0 { + margin: 0 !important; + } + .m-xl-1 { + margin: 0.25rem !important; + } + .m-xl-2 { + margin: 0.5rem !important; + } + .m-xl-3 { + margin: 1rem !important; + } + .m-xl-4 { + margin: 1.5rem !important; + } + .m-xl-5 { + margin: 3rem !important; + } + .m-xl-auto { + margin: auto !important; + } + .mx-xl-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .mx-xl-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-xl-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .mx-xl-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .mx-xl-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .mx-xl-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .mx-xl-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-xl-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-xl-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-xl-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-xl-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-xl-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-xl-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-xl-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-xl-0 { + margin-top: 0 !important; + } + .mt-xl-1 { + margin-top: 0.25rem !important; + } + .mt-xl-2 { + margin-top: 0.5rem !important; + } + .mt-xl-3 { + margin-top: 1rem !important; + } + .mt-xl-4 { + margin-top: 1.5rem !important; + } + .mt-xl-5 { + margin-top: 3rem !important; + } + .mt-xl-auto { + margin-top: auto !important; + } + .me-xl-0 { + margin-right: 0 !important; + } + .me-xl-1 { + margin-right: 0.25rem !important; + } + .me-xl-2 { + margin-right: 0.5rem !important; + } + .me-xl-3 { + margin-right: 1rem !important; + } + .me-xl-4 { + margin-right: 1.5rem !important; + } + .me-xl-5 { + margin-right: 3rem !important; + } + .me-xl-auto { + margin-right: auto !important; + } + .mb-xl-0 { + margin-bottom: 0 !important; + } + .mb-xl-1 { + margin-bottom: 0.25rem !important; + } + .mb-xl-2 { + margin-bottom: 0.5rem !important; + } + .mb-xl-3 { + margin-bottom: 1rem !important; + } + .mb-xl-4 { + margin-bottom: 1.5rem !important; + } + .mb-xl-5 { + margin-bottom: 3rem !important; + } + .mb-xl-auto { + margin-bottom: auto !important; + } + .ms-xl-0 { + margin-left: 0 !important; + } + .ms-xl-1 { + margin-left: 0.25rem !important; + } + .ms-xl-2 { + margin-left: 0.5rem !important; + } + .ms-xl-3 { + margin-left: 1rem !important; + } + .ms-xl-4 { + margin-left: 1.5rem !important; + } + .ms-xl-5 { + margin-left: 3rem !important; + } + .ms-xl-auto { + margin-left: auto !important; + } + .p-xl-0 { + padding: 0 !important; + } + .p-xl-1 { + padding: 0.25rem !important; + } + .p-xl-2 { + padding: 0.5rem !important; + } + .p-xl-3 { + padding: 1rem !important; + } + .p-xl-4 { + padding: 1.5rem !important; + } + .p-xl-5 { + padding: 3rem !important; + } + .px-xl-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .px-xl-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-xl-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .px-xl-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .px-xl-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .px-xl-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .py-xl-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-xl-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-xl-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-xl-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-xl-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-xl-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .pt-xl-0 { + padding-top: 0 !important; + } + .pt-xl-1 { + padding-top: 0.25rem !important; + } + .pt-xl-2 { + padding-top: 0.5rem !important; + } + .pt-xl-3 { + padding-top: 1rem !important; + } + .pt-xl-4 { + padding-top: 1.5rem !important; + } + .pt-xl-5 { + padding-top: 3rem !important; + } + .pe-xl-0 { + padding-right: 0 !important; + } + .pe-xl-1 { + padding-right: 0.25rem !important; + } + .pe-xl-2 { + padding-right: 0.5rem !important; + } + .pe-xl-3 { + padding-right: 1rem !important; + } + .pe-xl-4 { + padding-right: 1.5rem !important; + } + .pe-xl-5 { + padding-right: 3rem !important; + } + .pb-xl-0 { + padding-bottom: 0 !important; + } + .pb-xl-1 { + padding-bottom: 0.25rem !important; + } + .pb-xl-2 { + padding-bottom: 0.5rem !important; + } + .pb-xl-3 { + padding-bottom: 1rem !important; + } + .pb-xl-4 { + padding-bottom: 1.5rem !important; + } + .pb-xl-5 { + padding-bottom: 3rem !important; + } + .ps-xl-0 { + padding-left: 0 !important; + } + .ps-xl-1 { + padding-left: 0.25rem !important; + } + .ps-xl-2 { + padding-left: 0.5rem !important; + } + .ps-xl-3 { + padding-left: 1rem !important; + } + .ps-xl-4 { + padding-left: 1.5rem !important; + } + .ps-xl-5 { + padding-left: 3rem !important; + } + .gap-xl-0 { + gap: 0 !important; + } + .gap-xl-1 { + gap: 0.25rem !important; + } + .gap-xl-2 { + gap: 0.5rem !important; + } + .gap-xl-3 { + gap: 1rem !important; + } + .gap-xl-4 { + gap: 1.5rem !important; + } + .gap-xl-5 { + gap: 3rem !important; + } + .row-gap-xl-0 { + row-gap: 0 !important; + } + .row-gap-xl-1 { + row-gap: 0.25rem !important; + } + .row-gap-xl-2 { + row-gap: 0.5rem !important; + } + .row-gap-xl-3 { + row-gap: 1rem !important; + } + .row-gap-xl-4 { + row-gap: 1.5rem !important; + } + .row-gap-xl-5 { + row-gap: 3rem !important; + } + .column-gap-xl-0 { + -moz-column-gap: 0 !important; + column-gap: 0 !important; + } + .column-gap-xl-1 { + -moz-column-gap: 0.25rem !important; + column-gap: 0.25rem !important; + } + .column-gap-xl-2 { + -moz-column-gap: 0.5rem !important; + column-gap: 0.5rem !important; + } + .column-gap-xl-3 { + -moz-column-gap: 1rem !important; + column-gap: 1rem !important; + } + .column-gap-xl-4 { + -moz-column-gap: 1.5rem !important; + column-gap: 1.5rem !important; + } + .column-gap-xl-5 { + -moz-column-gap: 3rem !important; + column-gap: 3rem !important; + } + .text-xl-start { + text-align: left !important; + } + .text-xl-end { + text-align: right !important; + } + .text-xl-center { + text-align: center !important; + } +} +@media (min-width: 1400px) { + .float-xxl-start { + float: left !important; + } + .float-xxl-end { + float: right !important; + } + .float-xxl-none { + float: none !important; + } + .object-fit-xxl-contain { + -o-object-fit: contain !important; + object-fit: contain !important; + } + .object-fit-xxl-cover { + -o-object-fit: cover !important; + object-fit: cover !important; + } + .object-fit-xxl-fill { + -o-object-fit: fill !important; + object-fit: fill !important; + } + .object-fit-xxl-scale { + -o-object-fit: scale-down !important; + object-fit: scale-down !important; + } + .object-fit-xxl-none { + -o-object-fit: none !important; + object-fit: none !important; + } + .d-xxl-inline { + display: inline !important; + } + .d-xxl-inline-block { + display: inline-block !important; + } + .d-xxl-block { + display: block !important; + } + .d-xxl-grid { + display: grid !important; + } + .d-xxl-inline-grid { + display: inline-grid !important; + } + .d-xxl-table { + display: table !important; + } + .d-xxl-table-row { + display: table-row !important; + } + .d-xxl-table-cell { + display: table-cell !important; + } + .d-xxl-flex { + display: flex !important; + } + .d-xxl-inline-flex { + display: inline-flex !important; + } + .d-xxl-none { + display: none !important; + } + .flex-xxl-fill { + flex: 1 1 auto !important; + } + .flex-xxl-row { + flex-direction: row !important; + } + .flex-xxl-column { + flex-direction: column !important; + } + .flex-xxl-row-reverse { + flex-direction: row-reverse !important; + } + .flex-xxl-column-reverse { + flex-direction: column-reverse !important; + } + .flex-xxl-grow-0 { + flex-grow: 0 !important; + } + .flex-xxl-grow-1 { + flex-grow: 1 !important; + } + .flex-xxl-shrink-0 { + flex-shrink: 0 !important; + } + .flex-xxl-shrink-1 { + flex-shrink: 1 !important; + } + .flex-xxl-wrap { + flex-wrap: wrap !important; + } + .flex-xxl-nowrap { + flex-wrap: nowrap !important; + } + .flex-xxl-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .justify-content-xxl-start { + justify-content: flex-start !important; + } + .justify-content-xxl-end { + justify-content: flex-end !important; + } + .justify-content-xxl-center { + justify-content: center !important; + } + .justify-content-xxl-between { + justify-content: space-between !important; + } + .justify-content-xxl-around { + justify-content: space-around !important; + } + .justify-content-xxl-evenly { + justify-content: space-evenly !important; + } + .align-items-xxl-start { + align-items: flex-start !important; + } + .align-items-xxl-end { + align-items: flex-end !important; + } + .align-items-xxl-center { + align-items: center !important; + } + .align-items-xxl-baseline { + align-items: baseline !important; + } + .align-items-xxl-stretch { + align-items: stretch !important; + } + .align-content-xxl-start { + align-content: flex-start !important; + } + .align-content-xxl-end { + align-content: flex-end !important; + } + .align-content-xxl-center { + align-content: center !important; + } + .align-content-xxl-between { + align-content: space-between !important; + } + .align-content-xxl-around { + align-content: space-around !important; + } + .align-content-xxl-stretch { + align-content: stretch !important; + } + .align-self-xxl-auto { + align-self: auto !important; + } + .align-self-xxl-start { + align-self: flex-start !important; + } + .align-self-xxl-end { + align-self: flex-end !important; + } + .align-self-xxl-center { + align-self: center !important; + } + .align-self-xxl-baseline { + align-self: baseline !important; + } + .align-self-xxl-stretch { + align-self: stretch !important; + } + .order-xxl-first { + order: -1 !important; + } + .order-xxl-0 { + order: 0 !important; + } + .order-xxl-1 { + order: 1 !important; + } + .order-xxl-2 { + order: 2 !important; + } + .order-xxl-3 { + order: 3 !important; + } + .order-xxl-4 { + order: 4 !important; + } + .order-xxl-5 { + order: 5 !important; + } + .order-xxl-last { + order: 6 !important; + } + .m-xxl-0 { + margin: 0 !important; + } + .m-xxl-1 { + margin: 0.25rem !important; + } + .m-xxl-2 { + margin: 0.5rem !important; + } + .m-xxl-3 { + margin: 1rem !important; + } + .m-xxl-4 { + margin: 1.5rem !important; + } + .m-xxl-5 { + margin: 3rem !important; + } + .m-xxl-auto { + margin: auto !important; + } + .mx-xxl-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .mx-xxl-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .mx-xxl-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .mx-xxl-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .mx-xxl-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .mx-xxl-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .mx-xxl-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .my-xxl-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .my-xxl-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .my-xxl-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .my-xxl-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .my-xxl-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .my-xxl-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .my-xxl-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .mt-xxl-0 { + margin-top: 0 !important; + } + .mt-xxl-1 { + margin-top: 0.25rem !important; + } + .mt-xxl-2 { + margin-top: 0.5rem !important; + } + .mt-xxl-3 { + margin-top: 1rem !important; + } + .mt-xxl-4 { + margin-top: 1.5rem !important; + } + .mt-xxl-5 { + margin-top: 3rem !important; + } + .mt-xxl-auto { + margin-top: auto !important; + } + .me-xxl-0 { + margin-right: 0 !important; + } + .me-xxl-1 { + margin-right: 0.25rem !important; + } + .me-xxl-2 { + margin-right: 0.5rem !important; + } + .me-xxl-3 { + margin-right: 1rem !important; + } + .me-xxl-4 { + margin-right: 1.5rem !important; + } + .me-xxl-5 { + margin-right: 3rem !important; + } + .me-xxl-auto { + margin-right: auto !important; + } + .mb-xxl-0 { + margin-bottom: 0 !important; + } + .mb-xxl-1 { + margin-bottom: 0.25rem !important; + } + .mb-xxl-2 { + margin-bottom: 0.5rem !important; + } + .mb-xxl-3 { + margin-bottom: 1rem !important; + } + .mb-xxl-4 { + margin-bottom: 1.5rem !important; + } + .mb-xxl-5 { + margin-bottom: 3rem !important; + } + .mb-xxl-auto { + margin-bottom: auto !important; + } + .ms-xxl-0 { + margin-left: 0 !important; + } + .ms-xxl-1 { + margin-left: 0.25rem !important; + } + .ms-xxl-2 { + margin-left: 0.5rem !important; + } + .ms-xxl-3 { + margin-left: 1rem !important; + } + .ms-xxl-4 { + margin-left: 1.5rem !important; + } + .ms-xxl-5 { + margin-left: 3rem !important; + } + .ms-xxl-auto { + margin-left: auto !important; + } + .p-xxl-0 { + padding: 0 !important; + } + .p-xxl-1 { + padding: 0.25rem !important; + } + .p-xxl-2 { + padding: 0.5rem !important; + } + .p-xxl-3 { + padding: 1rem !important; + } + .p-xxl-4 { + padding: 1.5rem !important; + } + .p-xxl-5 { + padding: 3rem !important; + } + .px-xxl-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .px-xxl-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .px-xxl-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .px-xxl-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .px-xxl-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .px-xxl-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .py-xxl-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .py-xxl-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .py-xxl-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .py-xxl-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .py-xxl-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .py-xxl-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .pt-xxl-0 { + padding-top: 0 !important; + } + .pt-xxl-1 { + padding-top: 0.25rem !important; + } + .pt-xxl-2 { + padding-top: 0.5rem !important; + } + .pt-xxl-3 { + padding-top: 1rem !important; + } + .pt-xxl-4 { + padding-top: 1.5rem !important; + } + .pt-xxl-5 { + padding-top: 3rem !important; + } + .pe-xxl-0 { + padding-right: 0 !important; + } + .pe-xxl-1 { + padding-right: 0.25rem !important; + } + .pe-xxl-2 { + padding-right: 0.5rem !important; + } + .pe-xxl-3 { + padding-right: 1rem !important; + } + .pe-xxl-4 { + padding-right: 1.5rem !important; + } + .pe-xxl-5 { + padding-right: 3rem !important; + } + .pb-xxl-0 { + padding-bottom: 0 !important; + } + .pb-xxl-1 { + padding-bottom: 0.25rem !important; + } + .pb-xxl-2 { + padding-bottom: 0.5rem !important; + } + .pb-xxl-3 { + padding-bottom: 1rem !important; + } + .pb-xxl-4 { + padding-bottom: 1.5rem !important; + } + .pb-xxl-5 { + padding-bottom: 3rem !important; + } + .ps-xxl-0 { + padding-left: 0 !important; + } + .ps-xxl-1 { + padding-left: 0.25rem !important; + } + .ps-xxl-2 { + padding-left: 0.5rem !important; + } + .ps-xxl-3 { + padding-left: 1rem !important; + } + .ps-xxl-4 { + padding-left: 1.5rem !important; + } + .ps-xxl-5 { + padding-left: 3rem !important; + } + .gap-xxl-0 { + gap: 0 !important; + } + .gap-xxl-1 { + gap: 0.25rem !important; + } + .gap-xxl-2 { + gap: 0.5rem !important; + } + .gap-xxl-3 { + gap: 1rem !important; + } + .gap-xxl-4 { + gap: 1.5rem !important; + } + .gap-xxl-5 { + gap: 3rem !important; + } + .row-gap-xxl-0 { + row-gap: 0 !important; + } + .row-gap-xxl-1 { + row-gap: 0.25rem !important; + } + .row-gap-xxl-2 { + row-gap: 0.5rem !important; + } + .row-gap-xxl-3 { + row-gap: 1rem !important; + } + .row-gap-xxl-4 { + row-gap: 1.5rem !important; + } + .row-gap-xxl-5 { + row-gap: 3rem !important; + } + .column-gap-xxl-0 { + -moz-column-gap: 0 !important; + column-gap: 0 !important; + } + .column-gap-xxl-1 { + -moz-column-gap: 0.25rem !important; + column-gap: 0.25rem !important; + } + .column-gap-xxl-2 { + -moz-column-gap: 0.5rem !important; + column-gap: 0.5rem !important; + } + .column-gap-xxl-3 { + -moz-column-gap: 1rem !important; + column-gap: 1rem !important; + } + .column-gap-xxl-4 { + -moz-column-gap: 1.5rem !important; + column-gap: 1.5rem !important; + } + .column-gap-xxl-5 { + -moz-column-gap: 3rem !important; + column-gap: 3rem !important; + } + .text-xxl-start { + text-align: left !important; + } + .text-xxl-end { + text-align: right !important; + } + .text-xxl-center { + text-align: center !important; + } +} +@media (min-width: 1200px) { + .fs-1 { + font-size: 2.5rem !important; + } + .fs-2 { + font-size: 2rem !important; + } + .fs-3 { + font-size: 1.75rem !important; + } + .fs-4 { + font-size: 1.5rem !important; + } +} +@media print { + .d-print-inline { + display: inline !important; + } + .d-print-inline-block { + display: inline-block !important; + } + .d-print-block { + display: block !important; + } + .d-print-grid { + display: grid !important; + } + .d-print-inline-grid { + display: inline-grid !important; + } + .d-print-table { + display: table !important; + } + .d-print-table-row { + display: table-row !important; + } + .d-print-table-cell { + display: table-cell !important; + } + .d-print-flex { + display: flex !important; + } + .d-print-inline-flex { + display: inline-flex !important; + } + .d-print-none { + display: none !important; + } +} + +/*# sourceMappingURL=bootstrap.css.map */ + +@charset "UTF-8"; +:root { + --dt-row-selected: 13, 110, 253; + --dt-row-selected-text: 255, 255, 255; + --dt-row-selected-link: 9, 10, 11; + --dt-row-stripe: 0, 0, 0; + --dt-row-hover: 0, 0, 0; + --dt-column-ordering: 0, 0, 0; + --dt-html-background: white; +} +:root.dark { + --dt-html-background: rgb(33, 37, 41); +} + +table.dataTable td.dt-control { + text-align: center; + cursor: pointer; +} +table.dataTable td.dt-control:before { + display: inline-block; + box-sizing: border-box; + content: ""; + border-top: 5px solid transparent; + border-left: 10px solid rgba(0, 0, 0, 0.5); + border-bottom: 5px solid transparent; + border-right: 0px solid transparent; +} +table.dataTable tr.dt-hasChild td.dt-control:before { + border-top: 10px solid rgba(0, 0, 0, 0.5); + border-left: 5px solid transparent; + border-bottom: 0px solid transparent; + border-right: 5px solid transparent; +} + +html.dark table.dataTable td.dt-control:before, +:root[data-bs-theme=dark] table.dataTable td.dt-control:before, +:root[data-theme=dark] table.dataTable td.dt-control:before { + border-left-color: rgba(255, 255, 255, 0.5); +} +html.dark table.dataTable tr.dt-hasChild td.dt-control:before, +:root[data-bs-theme=dark] table.dataTable tr.dt-hasChild td.dt-control:before, +:root[data-theme=dark] table.dataTable tr.dt-hasChild td.dt-control:before { + border-top-color: rgba(255, 255, 255, 0.5); + border-left-color: transparent; +} + +div.dt-scroll { + width: 100%; +} + +div.dt-scroll-body thead tr, +div.dt-scroll-body tfoot tr { + height: 0; +} +div.dt-scroll-body thead tr th, div.dt-scroll-body thead tr td, +div.dt-scroll-body tfoot tr th, +div.dt-scroll-body tfoot tr td { + height: 0 !important; + padding-top: 0px !important; + padding-bottom: 0px !important; + border-top-width: 0px !important; + border-bottom-width: 0px !important; +} +div.dt-scroll-body thead tr th div.dt-scroll-sizing, div.dt-scroll-body thead tr td div.dt-scroll-sizing, +div.dt-scroll-body tfoot tr th div.dt-scroll-sizing, +div.dt-scroll-body tfoot tr td div.dt-scroll-sizing { + height: 0 !important; + overflow: hidden !important; +} + +table.dataTable thead > tr > th:active, +table.dataTable thead > tr > td:active { + outline: none; +} +table.dataTable thead > tr > th.dt-orderable-asc span.dt-column-order:before, table.dataTable thead > tr > th.dt-ordering-asc span.dt-column-order:before, +table.dataTable thead > tr > td.dt-orderable-asc span.dt-column-order:before, +table.dataTable thead > tr > td.dt-ordering-asc span.dt-column-order:before { + position: absolute; + display: block; + bottom: 50%; + content: "▲"; + content: "▲"/""; +} +table.dataTable thead > tr > th.dt-orderable-desc span.dt-column-order:after, table.dataTable thead > tr > th.dt-ordering-desc span.dt-column-order:after, +table.dataTable thead > tr > td.dt-orderable-desc span.dt-column-order:after, +table.dataTable thead > tr > td.dt-ordering-desc span.dt-column-order:after { + position: absolute; + display: block; + top: 50%; + content: "▼"; + content: "▼"/""; +} +table.dataTable thead > tr > th.dt-orderable-asc, table.dataTable thead > tr > th.dt-orderable-desc, table.dataTable thead > tr > th.dt-ordering-asc, table.dataTable thead > tr > th.dt-ordering-desc, +table.dataTable thead > tr > td.dt-orderable-asc, +table.dataTable thead > tr > td.dt-orderable-desc, +table.dataTable thead > tr > td.dt-ordering-asc, +table.dataTable thead > tr > td.dt-ordering-desc { + position: relative; + padding-right: 30px; +} +table.dataTable thead > tr > th.dt-orderable-asc span.dt-column-order, table.dataTable thead > tr > th.dt-orderable-desc span.dt-column-order, table.dataTable thead > tr > th.dt-ordering-asc span.dt-column-order, table.dataTable thead > tr > th.dt-ordering-desc span.dt-column-order, +table.dataTable thead > tr > td.dt-orderable-asc span.dt-column-order, +table.dataTable thead > tr > td.dt-orderable-desc span.dt-column-order, +table.dataTable thead > tr > td.dt-ordering-asc span.dt-column-order, +table.dataTable thead > tr > td.dt-ordering-desc span.dt-column-order { + position: absolute; + right: 12px; + top: 0; + bottom: 0; + width: 12px; +} +table.dataTable thead > tr > th.dt-orderable-asc span.dt-column-order:before, table.dataTable thead > tr > th.dt-orderable-asc span.dt-column-order:after, table.dataTable thead > tr > th.dt-orderable-desc span.dt-column-order:before, table.dataTable thead > tr > th.dt-orderable-desc span.dt-column-order:after, table.dataTable thead > tr > th.dt-ordering-asc span.dt-column-order:before, table.dataTable thead > tr > th.dt-ordering-asc span.dt-column-order:after, table.dataTable thead > tr > th.dt-ordering-desc span.dt-column-order:before, table.dataTable thead > tr > th.dt-ordering-desc span.dt-column-order:after, +table.dataTable thead > tr > td.dt-orderable-asc span.dt-column-order:before, +table.dataTable thead > tr > td.dt-orderable-asc span.dt-column-order:after, +table.dataTable thead > tr > td.dt-orderable-desc span.dt-column-order:before, +table.dataTable thead > tr > td.dt-orderable-desc span.dt-column-order:after, +table.dataTable thead > tr > td.dt-ordering-asc span.dt-column-order:before, +table.dataTable thead > tr > td.dt-ordering-asc span.dt-column-order:after, +table.dataTable thead > tr > td.dt-ordering-desc span.dt-column-order:before, +table.dataTable thead > tr > td.dt-ordering-desc span.dt-column-order:after { + left: 0; + opacity: 0.125; + line-height: 9px; + font-size: 0.8em; +} +table.dataTable thead > tr > th.dt-orderable-asc, table.dataTable thead > tr > th.dt-orderable-desc, +table.dataTable thead > tr > td.dt-orderable-asc, +table.dataTable thead > tr > td.dt-orderable-desc { + cursor: pointer; +} +table.dataTable thead > tr > th.dt-orderable-asc:hover, table.dataTable thead > tr > th.dt-orderable-desc:hover, +table.dataTable thead > tr > td.dt-orderable-asc:hover, +table.dataTable thead > tr > td.dt-orderable-desc:hover { + outline: 2px solid rgba(0, 0, 0, 0.05); + outline-offset: -2px; +} +table.dataTable thead > tr > th.dt-ordering-asc span.dt-column-order:before, table.dataTable thead > tr > th.dt-ordering-desc span.dt-column-order:after, +table.dataTable thead > tr > td.dt-ordering-asc span.dt-column-order:before, +table.dataTable thead > tr > td.dt-ordering-desc span.dt-column-order:after { + opacity: 0.6; +} +table.dataTable thead > tr > th.sorting_desc_disabled span.dt-column-order:after, table.dataTable thead > tr > th.sorting_asc_disabled span.dt-column-order:before, +table.dataTable thead > tr > td.sorting_desc_disabled span.dt-column-order:after, +table.dataTable thead > tr > td.sorting_asc_disabled span.dt-column-order:before { + display: none; +} +table.dataTable thead > tr > th:active, +table.dataTable thead > tr > td:active { + outline: none; +} + +div.dt-scroll-body > table.dataTable > thead > tr > th, +div.dt-scroll-body > table.dataTable > thead > tr > td { + overflow: hidden; +} + +:root.dark table.dataTable thead > tr > th.dt-orderable-asc:hover, :root.dark table.dataTable thead > tr > th.dt-orderable-desc:hover, +:root.dark table.dataTable thead > tr > td.dt-orderable-asc:hover, +:root.dark table.dataTable thead > tr > td.dt-orderable-desc:hover, +:root[data-bs-theme=dark] table.dataTable thead > tr > th.dt-orderable-asc:hover, +:root[data-bs-theme=dark] table.dataTable thead > tr > th.dt-orderable-desc:hover, +:root[data-bs-theme=dark] table.dataTable thead > tr > td.dt-orderable-asc:hover, +:root[data-bs-theme=dark] table.dataTable thead > tr > td.dt-orderable-desc:hover { + outline: 2px solid rgba(255, 255, 255, 0.05); +} + +div.dt-processing { + position: absolute; + top: 50%; + left: 50%; + width: 200px; + margin-left: -100px; + margin-top: -22px; + text-align: center; + padding: 2px; + z-index: 10; +} +div.dt-processing > div:last-child { + position: relative; + width: 80px; + height: 15px; + margin: 1em auto; +} +div.dt-processing > div:last-child > div { + position: absolute; + top: 0; + width: 13px; + height: 13px; + border-radius: 50%; + background: rgb(13, 110, 253); + background: rgb(var(--dt-row-selected)); + animation-timing-function: cubic-bezier(0, 1, 1, 0); +} +div.dt-processing > div:last-child > div:nth-child(1) { + left: 8px; + animation: datatables-loader-1 0.6s infinite; +} +div.dt-processing > div:last-child > div:nth-child(2) { + left: 8px; + animation: datatables-loader-2 0.6s infinite; +} +div.dt-processing > div:last-child > div:nth-child(3) { + left: 32px; + animation: datatables-loader-2 0.6s infinite; +} +div.dt-processing > div:last-child > div:nth-child(4) { + left: 56px; + animation: datatables-loader-3 0.6s infinite; +} + +@keyframes datatables-loader-1 { + 0% { + transform: scale(0); + } + 100% { + transform: scale(1); + } +} +@keyframes datatables-loader-3 { + 0% { + transform: scale(1); + } + 100% { + transform: scale(0); + } +} +@keyframes datatables-loader-2 { + 0% { + transform: translate(0, 0); + } + 100% { + transform: translate(24px, 0); + } +} +table.dataTable.nowrap th, table.dataTable.nowrap td { + white-space: nowrap; +} +table.dataTable th, +table.dataTable td { + box-sizing: border-box; +} +table.dataTable th.dt-left, +table.dataTable td.dt-left { + text-align: left; +} +table.dataTable th.dt-center, +table.dataTable td.dt-center { + text-align: center; +} +table.dataTable th.dt-right, +table.dataTable td.dt-right { + text-align: right; +} +table.dataTable th.dt-justify, +table.dataTable td.dt-justify { + text-align: justify; +} +table.dataTable th.dt-nowrap, +table.dataTable td.dt-nowrap { + white-space: nowrap; +} +table.dataTable th.dt-empty, +table.dataTable td.dt-empty { + text-align: center; + vertical-align: top; +} +table.dataTable th.dt-type-numeric, table.dataTable th.dt-type-date, +table.dataTable td.dt-type-numeric, +table.dataTable td.dt-type-date { + text-align: right; +} +table.dataTable thead th, +table.dataTable thead td, +table.dataTable tfoot th, +table.dataTable tfoot td { + text-align: left; +} +table.dataTable thead th.dt-head-left, +table.dataTable thead td.dt-head-left, +table.dataTable tfoot th.dt-head-left, +table.dataTable tfoot td.dt-head-left { + text-align: left; +} +table.dataTable thead th.dt-head-center, +table.dataTable thead td.dt-head-center, +table.dataTable tfoot th.dt-head-center, +table.dataTable tfoot td.dt-head-center { + text-align: center; +} +table.dataTable thead th.dt-head-right, +table.dataTable thead td.dt-head-right, +table.dataTable tfoot th.dt-head-right, +table.dataTable tfoot td.dt-head-right { + text-align: right; +} +table.dataTable thead th.dt-head-justify, +table.dataTable thead td.dt-head-justify, +table.dataTable tfoot th.dt-head-justify, +table.dataTable tfoot td.dt-head-justify { + text-align: justify; +} +table.dataTable thead th.dt-head-nowrap, +table.dataTable thead td.dt-head-nowrap, +table.dataTable tfoot th.dt-head-nowrap, +table.dataTable tfoot td.dt-head-nowrap { + white-space: nowrap; +} +table.dataTable tbody th.dt-body-left, +table.dataTable tbody td.dt-body-left { + text-align: left; +} +table.dataTable tbody th.dt-body-center, +table.dataTable tbody td.dt-body-center { + text-align: center; +} +table.dataTable tbody th.dt-body-right, +table.dataTable tbody td.dt-body-right { + text-align: right; +} +table.dataTable tbody th.dt-body-justify, +table.dataTable tbody td.dt-body-justify { + text-align: justify; +} +table.dataTable tbody th.dt-body-nowrap, +table.dataTable tbody td.dt-body-nowrap { + white-space: nowrap; +} + +/*! Bootstrap 5 integration for DataTables + * + * ©2020 SpryMedia Ltd, all rights reserved. + * License: MIT datatables.net/license/mit + */ +table.table.dataTable { + clear: both; + margin-bottom: 0; + max-width: none; + border-spacing: 0; +} +table.table.dataTable.table-striped > tbody > tr:nth-of-type(2n+1) > * { + box-shadow: none; +} +table.table.dataTable > :not(caption) > * > * { + background-color: var(--bs-table-bg); +} +table.table.dataTable > tbody > tr { + background-color: transparent; +} +table.table.dataTable > tbody > tr.selected > * { + box-shadow: inset 0 0 0 9999px rgb(13, 110, 253); + box-shadow: inset 0 0 0 9999px rgb(var(--dt-row-selected)); + color: rgb(255, 255, 255); + color: rgb(var(--dt-row-selected-text)); +} +table.table.dataTable > tbody > tr.selected a { + color: rgb(9, 10, 11); + color: rgb(var(--dt-row-selected-link)); +} +table.table.dataTable.table-striped > tbody > tr:nth-of-type(2n+1) > * { + box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-stripe), 0.05); +} +table.table.dataTable.table-striped > tbody > tr:nth-of-type(2n+1).selected > * { + box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.95); + box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.95); +} +table.table.dataTable.table-hover > tbody > tr:hover > * { + box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-hover), 0.075); +} +table.table.dataTable.table-hover > tbody > tr.selected:hover > * { + box-shadow: inset 0 0 0 9999px rgba(13, 110, 253, 0.975); + box-shadow: inset 0 0 0 9999px rgba(var(--dt-row-selected), 0.975); +} + +div.dt-container div.dt-layout-start > *:not(:last-child) { + margin-right: 1em; +} +div.dt-container div.dt-layout-end > *:not(:first-child) { + margin-left: 1em; +} +div.dt-container div.dt-layout-full { + width: 100%; +} +div.dt-container div.dt-layout-full > *:only-child { + margin-left: auto; + margin-right: auto; +} +div.dt-container div.dt-layout-table > div { + display: block !important; +} + +@media screen and (max-width: 767px) { + div.dt-container div.dt-layout-start > *:not(:last-child) { + margin-right: 0; + } + div.dt-container div.dt-layout-end > *:not(:first-child) { + margin-left: 0; + } +} +div.dt-container div.dt-length label { + font-weight: normal; + text-align: left; + white-space: nowrap; +} +div.dt-container div.dt-length select { + width: auto; + display: inline-block; + margin-right: 0.5em; +} +div.dt-container div.dt-search { + text-align: right; +} +div.dt-container div.dt-search label { + font-weight: normal; + white-space: nowrap; + text-align: left; +} +div.dt-container div.dt-search input { + margin-left: 0.5em; + display: inline-block; + width: auto; +} +div.dt-container div.dt-paging { + margin: 0; +} +div.dt-container div.dt-paging ul.pagination { + margin: 2px 0; + flex-wrap: wrap; +} +div.dt-container div.dt-row { + position: relative; +} + +div.dt-scroll-head table.dataTable { + margin-bottom: 0 !important; +} + +div.dt-scroll-body { + border-bottom-color: var(--bs-border-color); + border-bottom-width: var(--bs-border-width); + border-bottom-style: solid; +} +div.dt-scroll-body > table { + border-top: none; + margin-top: 0 !important; + margin-bottom: 0 !important; +} +div.dt-scroll-body > table > tbody > tr:first-child { + border-top-width: 0; +} +div.dt-scroll-body > table > thead > tr { + border-width: 0 !important; +} +div.dt-scroll-body > table > tbody > tr:last-child > * { + border-bottom: none; +} + +div.dt-scroll-foot > .dt-scroll-footInner { + box-sizing: content-box; +} +div.dt-scroll-foot > .dt-scroll-footInner > table { + margin-top: 0 !important; + border-top: none; +} +div.dt-scroll-foot > .dt-scroll-footInner > table > tfoot > tr:first-child { + border-top-width: 0 !important; +} + +@media screen and (max-width: 767px) { + div.dt-container div.dt-length, + div.dt-container div.dt-search, + div.dt-container div.dt-info, + div.dt-container div.dt-paging { + text-align: center; + } + div.dt-container .row { + --bs-gutter-y: 0.5rem; + } + div.dt-container div.dt-paging ul.pagination { + justify-content: center !important; + } +} +table.dataTable.table-sm > thead > tr th.dt-orderable-asc, table.dataTable.table-sm > thead > tr th.dt-orderable-desc, table.dataTable.table-sm > thead > tr th.dt-ordering-asc, table.dataTable.table-sm > thead > tr th.dt-ordering-desc, +table.dataTable.table-sm > thead > tr td.dt-orderable-asc, +table.dataTable.table-sm > thead > tr td.dt-orderable-desc, +table.dataTable.table-sm > thead > tr td.dt-ordering-asc, +table.dataTable.table-sm > thead > tr td.dt-ordering-desc { + padding-right: 20px; +} +table.dataTable.table-sm > thead > tr th.dt-orderable-asc span.dt-column-order, table.dataTable.table-sm > thead > tr th.dt-orderable-desc span.dt-column-order, table.dataTable.table-sm > thead > tr th.dt-ordering-asc span.dt-column-order, table.dataTable.table-sm > thead > tr th.dt-ordering-desc span.dt-column-order, +table.dataTable.table-sm > thead > tr td.dt-orderable-asc span.dt-column-order, +table.dataTable.table-sm > thead > tr td.dt-orderable-desc span.dt-column-order, +table.dataTable.table-sm > thead > tr td.dt-ordering-asc span.dt-column-order, +table.dataTable.table-sm > thead > tr td.dt-ordering-desc span.dt-column-order { + right: 5px; +} + +div.dt-scroll-head table.table-bordered { + border-bottom-width: 0; +} + +div.table-responsive > div.dt-container > div.row { + margin: 0; +} +div.table-responsive > div.dt-container > div.row > div[class^=col-]:first-child { + padding-left: 0; +} +div.table-responsive > div.dt-container > div.row > div[class^=col-]:last-child { + padding-right: 0; +} + +:root[data-bs-theme=dark] { + --dt-row-hover: 255, 255, 255; + --dt-row-stripe: 255, 255, 255; + --dt-column-ordering: 255, 255, 255; +} + + +div.dt-autofill-handle{position:absolute;height:10px;width:10px;z-index:10;box-sizing:border-box;background:#0d6efd;cursor:pointer}div.dtk-focus-alt div.dt-autofill-handle{background:#ff8b33}div.dt-autofill-select{position:absolute;z-index:1001;background-color:#0d6efd;background-image:repeating-linear-gradient(45deg, transparent, transparent 5px, rgba(255, 255, 255, 0.5) 5px, rgba(255, 255, 255, 0.5) 10px)}div.dt-autofill-select.top,div.dt-autofill-select.bottom{height:3px;margin-top:-1px}div.dt-autofill-select.left,div.dt-autofill-select.right{width:3px;margin-left:-1px}div.dt-autofill-list{position:fixed;top:50%;left:50%;width:500px;margin-left:-250px;background-color:white;border-radius:.75em;box-shadow:0 12px 30px rgba(0, 0, 0, 0.6);z-index:104;box-sizing:border-box;padding:2em}div.dt-autofill-list div.dtaf-popover-close{position:absolute;top:6px;right:6px;width:22px;height:22px;text-align:center;border-radius:3px;cursor:pointer;z-index:12}div.dt-autofill-list>div.dt-autofill-list-items>button{display:block;width:100%;margin:1em 0;padding:1em;border-radius:.5em;border:1px solid rgba(0, 0, 0, 0.175);background-color:#f6f6f6;text-align:left;cursor:pointer}div.dt-autofill-list>div.dt-autofill-list-items>button:hover{background-color:#ebebeb}div.dt-autofill-list>div.dt-autofill-list-items>button:first-child{margin-top:0}div.dt-autofill-list>div.dt-autofill-list-items>button:last-child{margin-bottom:0}div.dt-autofill-list>div.dt-autofill-list-items>button input[type=number]{display:inline-block;box-sizing:border-box;padding:6px;width:70px;margin:-2px 0}div.dt-autofill-list>div.dt-autofill-list-items>button span{float:right}div.dtaf-popover-closeable{padding-top:2.5em}div.dt-autofill-background{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0, 0, 0, 0.7);background:radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%);z-index:103}html.dark div.dt-autofill-handle{background:rgb(110, 168, 254)}html.dark div.dt-autofill-select{position:absolute;z-index:1001;background-color:rgb(110, 168, 254);background-image:repeating-linear-gradient(45deg, transparent, transparent 5px, rgba(0, 0, 0, 0.5) 5px, rgba(0, 0, 0, 0.5) 10px)}html.dark div.dt-autofill-list{background-color:var(--dt-html-background);border:1px solid rgba(255, 255, 255, 0.15)}html.dark div.dt-autofill-list button{color:inherit;border:1px solid rgba(255, 255, 255, 0.175);background-color:rgb(47, 52, 56)}html.dark div.dt-autofill-list button:hover{background-color:rgb(64, 69, 73)}@media screen and (max-width: 767px){div.dt-autofill-handle{height:16px;width:16px}div.dt-autofill-list{width:90%;left:74.5%}}div.dt-autofill-list div.dt-autofill-question input[type=number]{padding:6px;width:60px;margin:-2px 0}div.row.dt-row>div.col-sm-12{position:relative} + + +@keyframes dtb-spinner { + 100% { + transform: rotate(360deg); + } +} +@-o-keyframes dtb-spinner { + 100% { + -o-transform: rotate(360deg); + transform: rotate(360deg); + } +} +@-ms-keyframes dtb-spinner { + 100% { + -ms-transform: rotate(360deg); + transform: rotate(360deg); + } +} +@-webkit-keyframes dtb-spinner { + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} +@-moz-keyframes dtb-spinner { + 100% { + -moz-transform: rotate(360deg); + transform: rotate(360deg); + } +} +div.dataTables_wrapper { + position: relative; +} + +div.dt-buttons { + position: initial; +} +div.dt-buttons .dt-button { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +div.dt-button-info { + position: fixed; + top: 50%; + left: 50%; + width: 400px; + margin-top: -100px; + margin-left: -200px; + background-color: white; + border-radius: 0.75em; + box-shadow: 3px 4px 10px 1px rgba(0, 0, 0, 0.8); + text-align: center; + z-index: 2003; + overflow: hidden; +} +div.dt-button-info h2 { + padding: 2rem 2rem 1rem 2rem; + margin: 0; + font-weight: normal; +} +div.dt-button-info > div { + padding: 1em 2em 2em 2em; +} + +div.dtb-popover-close { + position: absolute; + top: 6px; + right: 6px; + width: 22px; + height: 22px; + text-align: center; + border-radius: 3px; + cursor: pointer; + z-index: 2003; +} + +button.dtb-hide-drop { + display: none !important; +} + +div.dt-button-collection-title { + text-align: center; + padding: 0.3em 0.5em 0.5em; + margin-left: 0.5em; + margin-right: 0.5em; + font-size: 0.9em; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +div.dt-button-collection-title:empty { + display: none; +} + +span.dt-button-spacer { + display: inline-block; + margin: 0.5em; + white-space: nowrap; +} +span.dt-button-spacer.bar { + border-left: 1px solid rgba(0, 0, 0, 0.3); + vertical-align: middle; + padding-left: 0.5em; +} +span.dt-button-spacer.bar:empty { + height: 1em; + width: 1px; + padding-left: 0; +} + +div.dt-button-collection .dt-button-active { + padding-right: 3em; +} +div.dt-button-collection .dt-button-active:after { + position: absolute; + top: 50%; + margin-top: -10px; + right: 1em; + display: inline-block; + content: "✓"; + color: inherit; +} +div.dt-button-collection .dt-button-active.dt-button-split { + padding-right: 0; +} +div.dt-button-collection .dt-button-active.dt-button-split:after { + display: none; +} +div.dt-button-collection .dt-button-active.dt-button-split > *:first-child { + padding-right: 3em; +} +div.dt-button-collection .dt-button-active.dt-button-split > *:first-child:after { + position: absolute; + top: 50%; + margin-top: -10px; + right: 1em; + display: inline-block; + content: "✓"; + color: inherit; +} +div.dt-button-collection .dt-button-active-a a { + padding-right: 3em; +} +div.dt-button-collection .dt-button-active-a a:after { + position: absolute; + right: 1em; + display: inline-block; + content: "✓"; + color: inherit; +} +div.dt-button-collection span.dt-button-spacer { + width: 100%; + font-size: 0.9em; + text-align: center; + margin: 0.5em 0; +} +div.dt-button-collection span.dt-button-spacer:empty { + height: 0; + width: 100%; +} +div.dt-button-collection span.dt-button-spacer.bar { + border-left: none; + border-bottom: 1px solid rgba(0, 0, 0, 0.1); + padding-left: 0; +} + +@media print { + table.dataTable tr > * { + box-shadow: none !important; + } +} +html.dark div.dt-button-info { + background-color: var(--dt-html-background); + border: 1px solid rgba(255, 255, 255, 0.15); +} + +div.dt-buttons div.btn-group { + position: initial; +} +div.dt-buttons div.dropdown-menu { + margin-top: 4px; + width: 200px; +} +div.dt-buttons div.dropdown-menu .dt-button { + position: relative; +} +div.dt-buttons div.dropdown-menu div.dt-button-split { + display: flex; + flex-direction: row; + flex-wrap: wrap; + justify-content: flex-start; + align-content: flex-start; + align-items: stretch; +} +div.dt-buttons div.dropdown-menu div.dt-button-split a:first-child { + min-width: auto; + flex: 1 0 50px; + padding-right: 0; +} +div.dt-buttons div.dropdown-menu div.dt-button-split button:last-child { + min-width: 33px; + flex: 0; + background: transparent; + border: none; + line-height: 1rem; + color: var(--bs-dropdown-link-color); + padding: var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x); + overflow: visible; +} +div.dt-buttons div.dropdown-menu div.dt-button-split button:last-child:hover { + color: var(--bs-dropdown-link-hover-color); + background-color: var(--bs-dropdown-link-hover-bg); +} +div.dt-buttons div.dropdown-menu div.dt-button-split button:last-child:after { + position: relative; + left: -3px; +} +div.dt-buttons div.dropdown-menu.fixed { + position: fixed; + display: block; + top: 50%; + left: 50%; + margin-left: -75px; + border-radius: 5px; + background-color: white; + padding: 0.5em; +} +div.dt-buttons div.dropdown-menu.fixed.two-column { + margin-left: -200px; +} +div.dt-buttons div.dropdown-menu.fixed.three-column { + margin-left: -225px; +} +div.dt-buttons div.dropdown-menu.fixed.four-column { + margin-left: -300px; +} +div.dt-buttons div.dropdown-menu.fixed.columns { + margin-left: -409px; +} +@media screen and (max-width: 1024px) { + div.dt-buttons div.dropdown-menu.fixed.columns { + margin-left: -308px; + } +} +@media screen and (max-width: 640px) { + div.dt-buttons div.dropdown-menu.fixed.columns { + margin-left: -203px; + } +} +@media screen and (max-width: 460px) { + div.dt-buttons div.dropdown-menu.fixed.columns { + margin-left: -100px; + } +} +div.dt-buttons div.dropdown-menu.fixed > :last-child { + max-height: 100vh; + overflow: auto; +} +div.dt-buttons div.dropdown-menu.two-column > :last-child, div.dt-buttons div.dropdown-menu.three-column > :last-child, div.dt-buttons div.dropdown-menu.four-column > :last-child { + display: block !important; + -webkit-column-gap: 8px; + -moz-column-gap: 8px; + -ms-column-gap: 8px; + -o-column-gap: 8px; + column-gap: 8px; +} +div.dt-buttons div.dropdown-menu.two-column > :last-child > *, div.dt-buttons div.dropdown-menu.three-column > :last-child > *, div.dt-buttons div.dropdown-menu.four-column > :last-child > * { + -webkit-column-break-inside: avoid; + break-inside: avoid; +} +div.dt-buttons div.dropdown-menu.two-column { + width: 400px; +} +div.dt-buttons div.dropdown-menu.two-column > :last-child { + padding-bottom: 1px; + column-count: 2; +} +div.dt-buttons div.dropdown-menu.three-column { + width: 450px; +} +div.dt-buttons div.dropdown-menu.three-column > :last-child { + padding-bottom: 1px; + column-count: 3; +} +div.dt-buttons div.dropdown-menu.four-column { + width: 600px; +} +div.dt-buttons div.dropdown-menu.four-column > :last-child { + padding-bottom: 1px; + column-count: 4; +} +div.dt-buttons div.dropdown-menu .dt-button { + border-radius: 0; +} +div.dt-buttons div.dropdown-menu.columns { + width: auto; +} +div.dt-buttons div.dropdown-menu.columns > :last-child { + display: flex; + flex-wrap: wrap; + justify-content: flex-start; + align-items: center; + gap: 6px; + width: 818px; + padding-bottom: 1px; +} +div.dt-buttons div.dropdown-menu.columns > :last-child .dt-button { + min-width: 200px; + flex: 0 1; + margin: 0; +} +div.dt-buttons div.dropdown-menu.columns.dtb-b3 > :last-child, div.dt-buttons div.dropdown-menu.columns.dtb-b2 > :last-child, div.dt-buttons div.dropdown-menu.columns.dtb-b1 > :last-child { + justify-content: space-between; +} +div.dt-buttons div.dropdown-menu.columns.dtb-b3 .dt-button { + flex: 1 1 32%; +} +div.dt-buttons div.dropdown-menu.columns.dtb-b2 .dt-button { + flex: 1 1 48%; +} +div.dt-buttons div.dropdown-menu.columns.dtb-b1 .dt-button { + flex: 1 1 100%; +} +@media screen and (max-width: 1024px) { + div.dt-buttons div.dropdown-menu.columns > :last-child { + width: 612px; + } +} +@media screen and (max-width: 640px) { + div.dt-buttons div.dropdown-menu.columns > :last-child { + width: 406px; + } + div.dt-buttons div.dropdown-menu.columns.dtb-b3 .dt-button { + flex: 0 1 32%; + } +} +@media screen and (max-width: 460px) { + div.dt-buttons div.dropdown-menu.columns > :last-child { + width: 200px; + } +} +div.dt-buttons span.dt-button-spacer.empty { + margin: 1px; +} +div.dt-buttons span.dt-button-spacer.bar:empty { + height: inherit; +} +div.dt-buttons .btn.processing { + color: rgba(0, 0, 0, 0.2); +} +div.dt-buttons .btn.processing:after { + position: absolute; + top: 50%; + left: 50%; + width: 16px; + height: 16px; + margin: -8px 0 0 -8px; + box-sizing: border-box; + display: block; + content: " "; + border: 2px solid rgb(40, 40, 40); + border-radius: 50%; + border-left-color: transparent; + border-right-color: transparent; + animation: dtb-spinner 1500ms infinite linear; + -o-animation: dtb-spinner 1500ms infinite linear; + -ms-animation: dtb-spinner 1500ms infinite linear; + -webkit-animation: dtb-spinner 1500ms infinite linear; + -moz-animation: dtb-spinner 1500ms infinite linear; +} + +div.dt-button-background { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 999; +} + +@media screen and (max-width: 767px) { + div.dt-buttons { + float: none; + width: 100%; + text-align: center; + margin-bottom: 0.5em; + } + div.dt-buttons a.btn { + float: none; + } +} +:root[data-bs-theme=dark] div.dropdown-menu.dt-button-collection.fixed { + background-color: rgb(33, 37, 41); + border: 1px solid rgba(255, 255, 255, 0.15); + border-radius: 8px; +} + + +body.dtcr-dragging { + overflow-x: hidden; +} + +table.dtcr-cloned.dataTable { + position: absolute !important; + background-color: rgba(255, 255, 255, 0.7); + z-index: 202; + border-radius: 4px; +} + +table.dataTable tbody tr td.dtcr-moving { + background-color: rgba(127, 127, 127, 0.15); +} +table.dataTable tbody tr td.dtcr-moving-first { + border-left: 1px solid #0d6efd; +} +table.dataTable tbody tr td.dtcr-moving-last { + border-right: 1px solid #0d6efd; +} + +html.dark table.dtcr-cloned.dataTable { + background-color: rgba(33, 33, 33, 0.9); +} + + +div.dt-datetime { + position: absolute; + background-color: white; + z-index: 2050; + border: 1px solid #ccc; + box-shadow: 0 5px 15px -5px rgba(0, 0, 0, 0.5); + padding: 6px 20px; + width: 275px; + border-radius: 5px; +} +div.dt-datetime.inline { + position: relative; + box-shadow: none; +} +div.dt-datetime div.dt-datetime-title { + text-align: center; + padding: 5px 0px 3px; +} +div.dt-datetime div.dt-datetime-buttons { + text-align: center; +} +div.dt-datetime div.dt-datetime-buttons a { + display: inline-block; + padding: 0 0.5em 0.5em 0.5em; + margin: 0; + font-size: 0.9em; +} +div.dt-datetime div.dt-datetime-buttons a:hover { + text-decoration: underline; +} +div.dt-datetime table { + border-spacing: 0; + margin: 12px 0; + width: 100%; +} +div.dt-datetime table.dt-datetime-table-nospace { + margin-top: -12px; +} +div.dt-datetime table th { + font-size: 0.8em; + color: #777; + font-weight: normal; + width: 14.285714286%; + padding: 0 0 4px 0; + text-align: center; +} +div.dt-datetime table td { + font-size: 0.9em; + color: #444; + padding: 0; +} +div.dt-datetime table td.selectable { + text-align: center; + background: #f5f5f5; +} +div.dt-datetime table td.selectable.disabled { + color: #aaa; + background: white; +} +div.dt-datetime table td.selectable.disabled button:hover { + color: #aaa; + background: white; +} +div.dt-datetime table td.selectable.now { + background-color: #ddd; +} +div.dt-datetime table td.selectable.now button { + font-weight: bold; +} +div.dt-datetime table td.selectable.selected button { + background: #4E6CA3; + color: white; + border-radius: 2px; +} +div.dt-datetime table td.selectable button:hover { + background: #ff8000; + color: white; + border-radius: 2px; +} +div.dt-datetime table td.dt-datetime-week { + font-size: 0.7em; +} +div.dt-datetime table button { + width: 100%; + box-sizing: border-box; + border: none; + background: transparent; + font-size: inherit; + color: inherit; + text-align: center; + padding: 4px 0; + cursor: pointer; + margin: 0; +} +div.dt-datetime table button span { + display: inline-block; + min-width: 14px; + text-align: right; +} +div.dt-datetime table.weekNumber th { + width: 12.5%; +} +div.dt-datetime div.dt-datetime-calendar table { + margin-top: 0; +} +div.dt-datetime div.dt-datetime-label { + position: relative; + display: inline-block; + height: 30px; + padding: 5px 6px; + border: 1px solid transparent; + box-sizing: border-box; + cursor: pointer; +} +div.dt-datetime div.dt-datetime-label:hover { + border: 1px solid #ddd; + border-radius: 2px; + background-color: #f5f5f5; +} +div.dt-datetime div.dt-datetime-label select { + position: absolute; + top: 6px; + left: 0; + cursor: pointer; + opacity: 0; +} +div.dt-datetime.horizontal { + width: 550px; +} +div.dt-datetime.horizontal div.dt-datetime-date, +div.dt-datetime.horizontal div.dt-datetime-time { + width: 48%; +} +div.dt-datetime.horizontal div.dt-datetime-time { + margin-left: 4%; +} +div.dt-datetime div.dt-datetime-date { + position: relative; + float: left; + width: 100%; +} +div.dt-datetime div.dt-datetime-time { + position: relative; + float: left; + width: 100%; + text-align: center; +} +div.dt-datetime div.dt-datetime-time > span { + vertical-align: middle; +} +div.dt-datetime div.dt-datetime-time th { + text-align: left; +} +div.dt-datetime div.dt-datetime-time div.dt-datetime-timeblock { + display: inline-block; + vertical-align: middle; +} +div.dt-datetime div.dt-datetime-iconLeft, +div.dt-datetime div.dt-datetime-iconRight { + width: 30px; + height: 30px; + background-position: center; + background-repeat: no-repeat; + opacity: 0.3; + overflow: hidden; + box-sizing: border-box; + border: 1px solid transparent; +} +div.dt-datetime div.dt-datetime-iconLeft:hover, +div.dt-datetime div.dt-datetime-iconRight:hover { + border: 1px solid #ccc; + border-radius: 2px; + background-color: #f0f0f0; + opacity: 0.6; +} +div.dt-datetime div.dt-datetime-iconLeft button, +div.dt-datetime div.dt-datetime-iconRight button { + border: none; + background: transparent; + text-indent: 30px; + height: 100%; + width: 100%; + cursor: pointer; +} +div.dt-datetime div.dt-datetime-iconLeft { + position: absolute; + top: 5px; + left: 5px; +} +div.dt-datetime div.dt-datetime-iconLeft button { + position: relative; + z-index: 1; +} +div.dt-datetime div.dt-datetime-iconLeft:after { + position: absolute; + top: 7px; + left: 10px; + display: block; + content: ""; + border-top: 7px solid transparent; + border-right: 7px solid black; + border-bottom: 7px solid transparent; +} +div.dt-datetime div.dt-datetime-iconRight { + position: absolute; + top: 5px; + right: 5px; +} +div.dt-datetime div.dt-datetime-iconRight button { + position: relative; + z-index: 1; +} +div.dt-datetime div.dt-datetime-iconRight:after { + position: absolute; + top: 7px; + left: 12px; + display: block; + content: ""; + border-top: 7px solid transparent; + border-left: 7px solid black; + border-bottom: 7px solid transparent; +} + +div.dt-datetime-error { + clear: both; + padding: 0 1em; + max-width: 240px; + font-size: 11px; + line-height: 1.25em; + text-align: center; + color: #b11f1f; +} + +html.dark input.dt-datetime { + color-scheme: dark; +} +html.dark div.dt-datetime { + border: 1px solid #595b5e; + background-color: #212529; + box-shadow: 3px 4px 10px 1px rgba(0, 0, 0, 0.8); +} +html.dark div.dt-datetime table th { + color: #ccc; +} +html.dark div.dt-datetime table td { + color: #eee; +} +html.dark div.dt-datetime table td.selectable { + background: #373c41; +} +html.dark div.dt-datetime table td.selectable.disabled { + color: #aaa; + background: #171b1f; +} +html.dark div.dt-datetime table td.selectable.disabled button:hover { + color: #aaa; + background: #171b1f; +} +html.dark div.dt-datetime table td.selectable.now { + background: #4b5055; +} +html.dark div.dt-datetime table td.selectable.selected button { + background: #6ea8fe; + color: black; +} +html.dark div.dt-datetime table td.selectable button:hover { + background: #ff8000; + color: black; +} +html.dark div.dt-datetime div.dt-datetime-label:hover { + border: 1px solid transparent; + background-color: rgba(255, 255, 255, 0.1); +} +html.dark div.dt-datetime div.dt-datetime-iconLeft:hover, +html.dark div.dt-datetime div.dt-datetime-iconRight:hover, +html.dark div.dt-datetime div.dt-datetime-iconUp:hover, +html.dark div.dt-datetime div.dt-datetime-iconDown:hover { + border: 1px solid transparent; + background-color: rgba(255, 255, 255, 0.1); +} +html.dark div.dt-datetime div.dt-datetime-iconLeft:after { + border-right-color: white; +} +html.dark div.dt-datetime div.dt-datetime-iconRight:after { + border-left-color: white; +} +html.dark div.dt-datetime select { + color-scheme: dark; +} +html.dark div.dt-datetime-error { + color: #b11f1f; +} + +table.dataTable thead tr > .dtfc-fixed-start, +table.dataTable thead tr > .dtfc-fixed-end, +table.dataTable tfoot tr > .dtfc-fixed-start, +table.dataTable tfoot tr > .dtfc-fixed-end { + top: 0; + bottom: 0; + z-index: 3; + background-color: white; +} +table.dataTable tbody tr > .dtfc-fixed-start, +table.dataTable tbody tr > .dtfc-fixed-end { + z-index: 1; + background-color: white; +} +table.dataTable tr > .dtfc-fixed-left::after, +table.dataTable tr > .dtfc-fixed-right::after { + position: absolute; + top: 0; + bottom: 0; + width: 10px; + transition: box-shadow 0.3s; + content: ""; + pointer-events: none; +} +table.dataTable tr > .dtfc-fixed-left::after { + right: 0; + transform: translateX(100%); +} +table.dataTable tr > .dtfc-fixed-right::after { + left: 0; + transform: translateX(-80%); +} +table.dataTable.dtfc-scrolling-left tr > .dtfc-fixed-left::after { + box-shadow: inset 10px 0 8px -8px rgba(0, 0, 0, 0.2); +} +table.dataTable.dtfc-scrolling-right tr > .dtfc-fixed-right::after { + box-shadow: inset -10px 0 8px -8px rgba(0, 0, 0, 0.2); +} +table.dataTable.dtfc-scrolling-right tr > .dtfc-fixed-right + .dtfc-fixed-right::after { + box-shadow: none; +} + +div.dt-scroll, +div.dtfh-floatingparent { + position: relative; +} +div.dt-scroll div.dtfc-top-blocker, +div.dt-scroll div.dtfc-bottom-blocker, +div.dtfh-floatingparent div.dtfc-top-blocker, +div.dtfh-floatingparent div.dtfc-bottom-blocker { + position: absolute; + background-color: white; +} + +html.dark table.dataTable thead tr > .dtfc-fixed-start, +html.dark table.dataTable thead tr > .dtfc-fixed-end, +html.dark table.dataTable tfoot tr > .dtfc-fixed-start, +html.dark table.dataTable tfoot tr > .dtfc-fixed-end { + background-color: var(--dt-html-background); +} +html.dark table.dataTable tbody tr > .dtfc-fixed-start, +html.dark table.dataTable tbody tr > .dtfc-fixed-end { + background-color: var(--dt-html-background); +} +html.dark table.dataTable.dtfc-scrolling-left tbody > tr > .dtfc-fixed-left::after { + box-shadow: inset 10px 0 8px -8px rgba(0, 0, 0, 0.3); +} +html.dark table.dataTable.dtfc-scrolling-right tbody > tr > .dtfc-fixed-right::after { + box-shadow: inset -10px 0 8px -8px rgba(0, 0, 0, 0.3); +} +html.dark table.dataTable.dtfc-scrolling-right tbody > tr > .dtfc-fixed-right + .dtfc-fixed-right::after { + box-shadow: none; +} +html.dark div.dtfc-top-blocker, +html.dark div.dtfc-bottom-blocker { + background-color: var(--dt-html-background); +} + +div.dtfc-top-blocker, +div.dtfc-top-blocker { + border-bottom: 0px solid #ddd !important; +} + +table.dataTable { + border-collapse: separate; +} +table.dataTable.table-bordered { + border-left-width: 0; + border-right-width: 0; +} +table.dataTable.table-bordered th, +table.dataTable.table-bordered td { + border-right-width: 0; + border-top-width: 0; +} +table.dataTable.table-bordered th:last-child, +table.dataTable.table-bordered td:last-child { + border-right: 1px solid #dee2e6; +} +table.dataTable.table-bordered tr:last-child th, +table.dataTable.table-bordered tr:last-child td { + border-bottom-width: 0; +} + +table.dataTable thead tr > .dtfc-fixed-start, +table.dataTable thead tr > .dtfc-fixed-end, +table.dataTable tfoot tr > .dtfc-fixed-start, +table.dataTable tfoot tr > .dtfc-fixed-end { + background-color: var(--bs-table-bg); +} +table.dataTable tbody tr > .dtfc-fixed-start, +table.dataTable tbody tr > .dtfc-fixed-end { + background-color: var(--bs-table-bg); +} + +div.dtfc-top-blocker, +div.dtfc-bottom-blocker { + background-color: var(--bs-body-bg); +} + +div.dt-scroll-body { + border-left-color: var(--bs-table-color) !important; +} + +div.dt-scroll-headInner table.table-bordered tr th:first-child, +div.dt-scroll-footInner table.table-bordered tr th:first-child { + border-left-color: var(--bs-border-color) !important; +} + + +table.dataTable.fixedHeader-floating, +table.dataTable.fixedHeader-locked { + position: relative !important; + background-color: var(--bs-body-bg); + margin-top: 0 !important; + margin-bottom: 0 !important; +} + +div.dtfh-floatingparent-foot table { + border-top-color: var(--bs-border-color); + border-top-width: var(--bs-border-width); + border-top-style: solid; +} + +@media print { + table.fixedHeader-floating { + display: none; + } +} + + +table.dataTable tbody th.focus, +table.dataTable tbody td.focus { + outline: 2px solid #0d6efd; + outline-offset: -2px; +} +table.dataTable tbody tr.selected th.focus, +table.dataTable tbody tr.selected td.focus { + outline-color: #0143a3; +} + +div.dtk-focus-alt table.dataTable tbody th.focus, +div.dtk-focus-alt table.dataTable tbody td.focus { + outline: 2px solid #ff8b33; + outline-offset: -2px; +} + +html.dark table.dataTable tbody th.focus, +html.dark table.dataTable tbody td.focus { + outline-color: rgb(13, 110, 253); +} +html.dark table.dataTable tbody tr.selected th.focus, +html.dark table.dataTable tbody tr.selected td.focus { + outline-color: #0143a3; +} +html.dark div.dtk-focus-alt table.dataTable tbody th.focus, +html.dark div.dtk-focus-alt table.dataTable tbody td.focus { + outline-color: #ff8b33; +} + + +table.dataTable.dtr-inline.collapsed > tbody > tr > td.child, +table.dataTable.dtr-inline.collapsed > tbody > tr > th.child, +table.dataTable.dtr-inline.collapsed > tbody > tr > td.dataTables_empty { + cursor: default !important; +} +table.dataTable.dtr-inline.collapsed > tbody > tr > td.child:before, +table.dataTable.dtr-inline.collapsed > tbody > tr > th.child:before, +table.dataTable.dtr-inline.collapsed > tbody > tr > td.dataTables_empty:before { + display: none !important; +} +table.dataTable.dtr-inline.collapsed > tbody > tr > td.dtr-control, +table.dataTable.dtr-inline.collapsed > tbody > tr > th.dtr-control { + cursor: pointer; +} +table.dataTable.dtr-inline.collapsed > tbody > tr > td.dtr-control:before, +table.dataTable.dtr-inline.collapsed > tbody > tr > th.dtr-control:before { + margin-right: 0.5em; + display: inline-block; + box-sizing: border-box; + content: ""; + border-top: 5px solid transparent; + border-left: 10px solid rgba(0, 0, 0, 0.5); + border-bottom: 5px solid transparent; + border-right: 0px solid transparent; +} +table.dataTable.dtr-inline.collapsed > tbody > tr > td.dtr-control.arrow-right::before, +table.dataTable.dtr-inline.collapsed > tbody > tr > th.dtr-control.arrow-right::before { + border-top: 5px solid transparent; + border-left: 0px solid transparent; + border-bottom: 5px solid transparent; + border-right: 10px solid rgba(0, 0, 0, 0.5); +} +table.dataTable.dtr-inline.collapsed > tbody > tr.dtr-expanded > td.dtr-control:before, +table.dataTable.dtr-inline.collapsed > tbody > tr.dtr-expanded > th.dtr-control:before { + border-top: 10px solid rgba(0, 0, 0, 0.5); + border-left: 5px solid transparent; + border-bottom: 0px solid transparent; + border-right: 5px solid transparent; +} +table.dataTable.dtr-inline.collapsed.compact > tbody > tr > td.dtr-control, +table.dataTable.dtr-inline.collapsed.compact > tbody > tr > th.dtr-control { + padding-left: 0.333em; +} +table.dataTable.dtr-column > tbody > tr > td.dtr-control, +table.dataTable.dtr-column > tbody > tr > th.dtr-control, +table.dataTable.dtr-column > tbody > tr > td.control, +table.dataTable.dtr-column > tbody > tr > th.control { + cursor: pointer; +} +table.dataTable.dtr-column > tbody > tr > td.dtr-control:before, +table.dataTable.dtr-column > tbody > tr > th.dtr-control:before, +table.dataTable.dtr-column > tbody > tr > td.control:before, +table.dataTable.dtr-column > tbody > tr > th.control:before { + display: inline-block; + box-sizing: border-box; + content: ""; + border-top: 5px solid transparent; + border-left: 10px solid rgba(0, 0, 0, 0.5); + border-bottom: 5px solid transparent; + border-right: 0px solid transparent; +} +table.dataTable.dtr-column > tbody > tr > td.dtr-control.arrow-right::before, +table.dataTable.dtr-column > tbody > tr > th.dtr-control.arrow-right::before, +table.dataTable.dtr-column > tbody > tr > td.control.arrow-right::before, +table.dataTable.dtr-column > tbody > tr > th.control.arrow-right::before { + border-top: 5px solid transparent; + border-left: 0px solid transparent; + border-bottom: 5px solid transparent; + border-right: 10px solid rgba(0, 0, 0, 0.5); +} +table.dataTable.dtr-column > tbody > tr.dtr-expanded td.dtr-control:before, +table.dataTable.dtr-column > tbody > tr.dtr-expanded th.dtr-control:before, +table.dataTable.dtr-column > tbody > tr.dtr-expanded td.control:before, +table.dataTable.dtr-column > tbody > tr.dtr-expanded th.control:before { + border-top: 10px solid rgba(0, 0, 0, 0.5); + border-left: 5px solid transparent; + border-bottom: 0px solid transparent; + border-right: 5px solid transparent; +} +table.dataTable > tbody > tr.child { + padding: 0.5em 1em; +} +table.dataTable > tbody > tr.child:hover { + background: transparent !important; +} +table.dataTable > tbody > tr.child ul.dtr-details { + display: inline-block; + list-style-type: none; + margin: 0; + padding: 0; +} +table.dataTable > tbody > tr.child ul.dtr-details > li { + border-bottom: 1px solid #efefef; + padding: 0.5em 0; +} +table.dataTable > tbody > tr.child ul.dtr-details > li:first-child { + padding-top: 0; +} +table.dataTable > tbody > tr.child ul.dtr-details > li:last-child { + padding-bottom: 0; + border-bottom: none; +} +table.dataTable > tbody > tr.child span.dtr-title { + display: inline-block; + min-width: 75px; + font-weight: bold; +} + +div.dtr-modal { + position: fixed; + box-sizing: border-box; + top: 0; + left: 0; + height: 100%; + width: 100%; + z-index: 100; + padding: 10em 1em; +} +div.dtr-modal div.dtr-modal-display { + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; + width: 50%; + height: fit-content; + max-height: 75%; + overflow: auto; + margin: auto; + z-index: 102; + overflow: auto; + background-color: #f5f5f7; + border: 1px solid black; + border-radius: 0.5em; + box-shadow: 0 12px 30px rgba(0, 0, 0, 0.6); +} +div.dtr-modal div.dtr-modal-content { + position: relative; + padding: 2.5em; +} +div.dtr-modal div.dtr-modal-content h2 { + margin-top: 0; +} +div.dtr-modal div.dtr-modal-close { + position: absolute; + top: 6px; + right: 6px; + width: 22px; + height: 22px; + text-align: center; + border-radius: 3px; + cursor: pointer; + z-index: 12; +} +div.dtr-modal div.dtr-modal-background { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + z-index: 101; + background: rgba(0, 0, 0, 0.6); +} + +@media screen and (max-width: 767px) { + div.dtr-modal div.dtr-modal-display { + width: 95%; + } +} +html.dark table.dataTable > tbody > tr > td.dtr-control:before, +html[data-bs-theme=dark] table.dataTable > tbody > tr > td.dtr-control:before { + border-left-color: rgba(255, 255, 255, 0.5) !important; +} +html.dark table.dataTable > tbody > tr > td.dtr-control.arrow-right::before, +html[data-bs-theme=dark] table.dataTable > tbody > tr > td.dtr-control.arrow-right::before { + border-right-color: rgba(255, 255, 255, 0.5) !important; +} +html.dark table.dataTable > tbody > tr.dtr-expanded > td.dtr-control:before, +html.dark table.dataTable > tbody > tr.dtr-expanded > th.dtr-control:before, +html[data-bs-theme=dark] table.dataTable > tbody > tr.dtr-expanded > td.dtr-control:before, +html[data-bs-theme=dark] table.dataTable > tbody > tr.dtr-expanded > th.dtr-control:before { + border-top-color: rgba(255, 255, 255, 0.5) !important; + border-left-color: transparent !important; + border-right-color: transparent !important; +} +html.dark table.dataTable > tbody > tr.child ul.dtr-details > li, +html[data-bs-theme=dark] table.dataTable > tbody > tr.child ul.dtr-details > li { + border-bottom-color: rgb(64, 67, 70); +} +html.dark div.dtr-modal div.dtr-modal-display, +html[data-bs-theme=dark] div.dtr-modal div.dtr-modal-display { + background-color: rgb(33, 37, 41); + border: 1px solid rgba(255, 255, 255, 0.15); +} + +div.dtr-bs-modal table.table tr:first-child td { + border-top: none; +} + +table.dataTable.table-bordered th.dtr-control.dtr-hidden + *, +table.dataTable.table-bordered td.dtr-control.dtr-hidden + * { + border-left-width: 1px; +} + + +table.dataTable tr.dtrg-group th { + background-color: rgba(0, 0, 0, 0.1); + text-align: left; +} + +table.dataTable tr.dtrg-group.dtrg-level-0 th { + font-weight: bold; +} + +table.dataTable tr.dtrg-group.dtrg-level-1 th, +table.dataTable tr.dtrg-group.dtrg-level-2 th, +table.dataTable tr.dtrg-group.dtrg-level-3 th, +table.dataTable tr.dtrg-group.dtrg-level-4 th, +table.dataTable tr.dtrg-group.dtrg-level-5 th { + background-color: rgba(0, 0, 0, 0.05); + padding-top: 0.25em; + padding-bottom: 0.25em; + padding-left: 2em; + font-size: 0.9em; +} + +table.dataTable tr.dtrg-group.dtrg-level-2 th { + background-color: rgba(0, 0, 0, 0.01); + padding-left: 2.5em; +} + +table.dataTable tr.dtrg-group.dtrg-level-3 th { + background-color: rgba(0, 0, 0, 0.01); + padding-left: 3em; +} + +table.dataTable tr.dtrg-group.dtrg-level-4 th { + background-color: rgba(0, 0, 0, 0.01); + padding-left: 3.5em; +} + +table.dataTable tr.dtrg-group.dtrg-level-5 th { + background-color: rgba(0, 0, 0, 0.01); + padding-left: 4em; +} + +html.dark table.dataTable tr.dtrg-group th { + background-color: rgba(255, 255, 255, 0.1); +} +html.dark table.dataTable tr.dtrg-group.dtrg-level-1 th { + background-color: rgba(255, 255, 255, 0.05); +} +html.dark table.dataTable tr.dtrg-group.dtrg-level-2 th, +html.dark table.dataTable tr.dtrg-group.dtrg-level-3 th, +html.dark table.dataTable tr.dtrg-group.dtrg-level-4 th, +html.dark table.dataTable tr.dtrg-group.dtrg-level-5 th { + background-color: rgba(255, 255, 255, 0.01); +} + +table.dataTable.table-striped tr.dtrg-level-0 { + background-color: rgba(0, 0, 0, 0.1); +} +table.dataTable.table-striped tr.dtrg-level-1 { + background-color: rgba(0, 0, 0, 0.05); +} +table.dataTable.table-striped tr.dtrg-level-2, +table.dataTable.table-striped tr.dtrg-level-3, +table.dataTable.table-striped tr.dtrg-level-4, +table.dataTable.table-striped tr.dtrg-level-5 { + background-color: rgba(0, 0, 0, 0.01); +} +table.dataTable.table-striped tr.dtrg-level-1 tr.dtrg-level-2 th, +table.dataTable.table-striped tr.dtrg-level-3 th, +table.dataTable.table-striped tr.dtrg-level-4 th, +table.dataTable.table-striped tr.dtrg-level-5 th { + background-color: transparent; +} + + +div.dt-rowReorder-float-parent { + table-layout: fixed; + outline: 2px solid #0d6efd; + z-index: 2001; + position: absolute !important; + overflow: hidden; + border-radius: 3px; +} +div.dt-rowReorder-float-parent table.dt-rowReorder-float { + opacity: 0.9; + background-color: white; + margin: 0 !important; +} + +div.dt-rowReorder-float-parent.drop-not-allowed { + cursor: not-allowed; +} + +tr.dt-rowReorder-moving { + outline: 2px solid #888; + outline-offset: -2px; +} + +body.dt-rowReorder-noOverflow { + overflow-x: hidden; +} + +table.dataTable td.reorder { + text-align: center; + cursor: move; +} + +html.dark div.dt-rowReorder-float-parent { + outline-color: rgb(110, 168, 254); +} +html.dark div.dt-rowReorder-float-parent table.dt-rowReorder-float { + background-color: var(--dt-html-background); +} +html.dark tr.dt-rowReorder-moving { + outline-color: #aaa; +} + +html[data-bs-theme=dark] div.dt-rowReorder-float-parent { + outline-color: rgb(13, 110, 253); +} + + +div.dts { + display: block !important; +} +div.dts tbody th, +div.dts tbody td { + white-space: nowrap; +} +div.dts div.dts_loading { + z-index: 1; +} +div.dts div.dts_label { + position: absolute; + right: 20px; + background: rgba(0, 0, 0, 0.8); + color: white; + box-shadow: 3px 3px 10px rgba(0, 0, 0, 0.5); + text-align: right; + border-radius: 3px; + padding: 0.4em; + z-index: 2; + display: none; +} +div.dts div.dt-scroll-body, +div.dts div.dataTables_scrollBody { + background: repeating-linear-gradient(45deg, rgba(0, 0, 0, 0.025), rgba(0, 0, 0, 0.025) 10px, rgba(0, 0, 0, 0) 10px, rgba(0, 0, 0, 0) 20px); +} +div.dts div.dt-scroll-body table, +div.dts div.dataTables_scrollBody table { + background-color: white; + z-index: 2; +} +div.dts div.dt-length, +div.dts div.dt-paging, +div.dts div.dataTables_paginate, +div.dts div.dataTables_length { + display: none; +} + +html.dark div.dts div.dts_label { + background: rgba(255, 255, 255, 0.8); + color: black; +} +html.dark div.dts div.dt-scroll-body, +html.dark div.dts div.dataTables_scrollBody { + background: repeating-linear-gradient(45deg, rgba(255, 255, 255, 0.025), rgba(255, 255, 255, 0.025) 10px, rgba(255, 255, 255, 0) 10px, rgba(255, 255, 255, 0) 20px); +} +html.dark div.dts div.dt-scroll-body table, +html.dark div.dts div.dataTables_scrollBody table { + background-color: var(--dt-html-background); + z-index: 2; +} + +div.DTS div.dataTables_scrollBody table { + background-color: white; +} + +html[data-bs-theme=dark] div.DTS div.dataTables_scrollBody table { + background-color: var(--bs-body-bg); +} + + +div.dt-button-collection { + overflow: visible !important; + z-index: 2002 !important; +} +div.dt-button-collection div.dtsb-searchBuilder { + box-sizing: border-box; + padding-left: 1em !important; + padding-right: 1em !important; +} + +div.dt-button-collection.dtb-collection-closeable div.dtsb-titleRow { + padding-right: 40px; +} + +.dtsb-greyscale { + border: 1px solid #cecece !important; +} + +div.dtsb-logicContainer .dtsb-greyscale { + border: none !important; +} + +div.dtsb-searchBuilder { + justify-content: space-evenly; + cursor: default; + margin-bottom: 1em; + text-align: left; + width: 100%; +} +div.dtsb-searchBuilder button.dtsb-button, +div.dtsb-searchBuilder select { + font-size: 1em; +} +div.dtsb-searchBuilder div.dtsb-titleRow { + justify-content: space-evenly; + margin-bottom: 0.5em; +} +div.dtsb-searchBuilder div.dtsb-titleRow div.dtsb-title { + display: inline-block; + padding-top: 14px; +} +div.dtsb-searchBuilder div.dtsb-titleRow div.dtsb-title:empty { + display: inline; +} +div.dtsb-searchBuilder div.dtsb-titleRow button.dtsb-clearAll { + float: right; + margin-bottom: 0.8em; +} +div.dtsb-searchBuilder div.dtsb-vertical .dtsb-value, div.dtsb-searchBuilder div.dtsb-vertical .dtsb-data, div.dtsb-searchBuilder div.dtsb-vertical .dtsb-condition { + display: block; +} +div.dtsb-searchBuilder div.dtsb-group { + position: relative; + clear: both; + margin-bottom: 0.8em; +} +div.dtsb-searchBuilder div.dtsb-group button.dtsb-search { + float: right; +} +div.dtsb-searchBuilder div.dtsb-group button.dtsb-clearGroup { + margin: 2px; + text-align: center; + padding: 0; +} +div.dtsb-searchBuilder div.dtsb-group div.dtsb-logicContainer { + -webkit-transform: rotate(90deg); + -moz-transform: rotate(90deg); + -o-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); + position: absolute; + margin-top: 0.8em; + margin-right: 0.8em; +} +div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria { + margin-bottom: 0.8em; + display: flex; + justify-content: start; + flex-flow: row wrap; +} +div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria select.dtsb-dropDown, +div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria input.dtsb-input { + padding: 0.4em; + margin-right: 0.8em; + min-width: 5em; + max-width: 20em; + color: inherit; + font-size: 1em; +} +div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria select.dtsb-dropDown option.dtsb-notItalic, +div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria input.dtsb-input option.dtsb-notItalic { + font-style: normal; +} +div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria select.dtsb-italic { + font-style: italic; +} +div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria div.dtsb-inputCont { + flex: 1; + white-space: nowrap; +} +div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria div.dtsb-inputCont span.dtsb-joiner { + margin-right: 0.8em; +} +div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria div.dtsb-inputCont input.dtsb-value { + width: 33%; +} +div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria div.dtsb-inputCont select, +div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria div.dtsb-inputCont input { + height: 100%; + box-sizing: border-box; +} +div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria div.dtsb-buttonContainer { + margin-left: auto; + display: inline-block; +} +div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria div.dtsb-buttonContainer button.dtsb-delete, div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria div.dtsb-buttonContainer button.dtsb-right, div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria div.dtsb-buttonContainer button.dtsb-left { + margin-right: 0.8em; +} +div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria div.dtsb-buttonContainer button.dtsb-delete:last-child, div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria div.dtsb-buttonContainer button.dtsb-right:last-child, div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria div.dtsb-buttonContainer button.dtsb-left:last-child { + margin-right: 0; +} +@media screen and (max-width: 550px) { + div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria { + display: flex; + flex-flow: none; + flex-direction: column; + justify-content: start; + padding-right: calc(35px + 0.8em); + margin-bottom: 0px; + } + div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria:not(:first-child), div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria:not(:nth-child(2)), div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria:not(:last-child) { + padding-top: 0.8em; + } + div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria:first-child, div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria:nth-child(2), div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria:last-child { + padding-top: 0em; + } + div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria select.dtsb-dropDown, + div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria input.dtsb-input { + max-width: none; + width: 100%; + margin-bottom: 0.8em; + margin-right: 0.8em; + } + div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria div.dtsb-inputCont { + margin-right: 0.8em; + } + div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria div.dtsb-buttonContainer { + position: absolute; + width: 35px; + display: flex; + flex-wrap: wrap-reverse; + right: 0; + } + div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria div.dtsb-buttonContainer button { + margin-right: 0px !important; + } +} + +div.dtsb-searchBuilder div.dtsb-titleRow { + height: 40px; +} +div.dtsb-searchBuilder div.dtsb-titleRow div.dtsb-title { + padding-top: 10px; +} +div.dtsb-searchBuilder div.dtsb-group button.dtsb-clearGroup { + margin-right: 8px; +} +div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria .form-select { + width: auto; + display: inline-block; + padding-right: 30px !important; +} +div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria select.dtsb-condition { + border-color: #28a745; +} +div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria select.dtsb-data { + border-color: #dc3545; +} +div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria select.dtsb-value, div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria input.dtsb-value { + border-color: #007bff; +} +div.dtsb-searchBuilder div.dtsb-group div.dtsb-criteria .form-control { + display: inline-block; + font-size: 1em; +} +div.dtsb-searchBuilder div.dtsb-group div.dtsb-logicContainer { + border-radius: 4px; + display: flex; + flex-direction: row; + flex-wrap: wrap; + justify-content: flex-start; + align-content: flex-start; + align-items: flex-start; + margin-top: 10px; + overflow: hidden; +} +div.dtsb-searchBuilder div.dtsb-group div.dtsb-logicContainer button.dtsb-logic { + border: none; + border-radius: 0px; + flex-grow: 1; + flex-shrink: 0; + flex-basis: 3em; + margin: 0px; + padding: 0.375rem 0.7rem; +} +div.dtsb-searchBuilder div.dtsb-group div.dtsb-logicContainer button.dtsb-clearGroup { + border: none; + border-radius: 0px; + width: 2em; + margin: 0px; +} + +div.dt-button-collection div.dtsb-searchBuilder { + padding-left: 10px; + padding-right: 10px; +} + + +div.dtsp-topRow { + display: flex; + flex-direction: row; + flex-wrap: nowrap; + border: 2px solid rgba(0, 0, 0, 0); + border-radius: 3px; + justify-content: space-around; + align-content: flex-start; + align-items: flex-start; +} +div.dtsp-topRow input.dtsp-search { + text-overflow: ellipsis; + min-width: 50px; + flex-basis: 90px; + max-width: none; +} +div.dtsp-topRow input.dtsp-search::placeholder { + color: inherit; +} +div.dtsp-topRow div.dtsp-subRow1 { + display: flex; + flex-direction: row; + flex-wrap: nowrap; + flex: 1 1 auto; +} +div.dtsp-topRow div.dtsp-subRow1 div.dtsp-searchCont { + position: relative; + width: 100%; +} +div.dtsp-topRow div.dtsp-subRow1 input { + padding-right: 2em; + width: 100% !important; + box-sizing: border-box; + font-size: 1em; +} +div.dtsp-topRow div.dtsp-subRow1 input[disabled=disabled] { + background-color: transparent; + border: none; + cursor: initial; + box-shadow: none; + padding-bottom: 0; + padding-top: 0; + min-height: 1em; + height: fit-content; + box-sizing: content-box; +} +div.dtsp-topRow div.dtsp-subRow1 input[disabled=disabled]::placeholder { + color: initial; + opacity: 1; +} +div.dtsp-topRow div.dtsp-subRow1 button.dtsp-searchIcon { + position: absolute; + top: 0; + right: 0; + bottom: 0; +} +div.dtsp-topRow div.dtsp-subRow1 button.dtsp-searchIcon span { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA8AAAAPCAYAAAA71pVKAAABbmlDQ1BpY2MAACiRdZE7SwNBFIU/EyWikRRaiFhsoWKhEBREO42FTZAQFYza7G5eQhKX3QQJtoKNhWAh2vgq/AfaCrYKgqAIIhb+Al+NhPVOEkiQZJbZ+3FmzmXmDHjCGTPrtAYhm8vb0bmQthxb0Xzv+PHRxRSabjrWTCQSpun4eaRF1YdR1av5voajM55wTGhpF54wLTsvPC0c3sxbineFe8y0Hhc+ER6x5YDCt0o3KvymOFXhL8X2YnQWPKqnlqpjo47NtJ0VHhYeyGYKZvU86ib+RG5pQWqfzH4coswRQsOgwDoZ8oxKzUlmjX3Bsm+eDfGY8rcoYosjRVq8I6IWpGtCalL0hHwZiir3/3k6yfGxSnd/CNpeXfdzEHz7UNpz3d9T1y2dgfcFrnM1/4bkNPkt+l5NGziGwDZc3tQ04wCudqD32dJtvSx5ZXqSSfi4gK4YdN9Dx2olq+o650+wuCVPdAeHRzAk+wNrfw8JaBFXEnV+AAAACXBIWXMAAA9hAAAPYQGoP6dpAAABMUlEQVQoU6XRr0vDQRjH8akoM4iIjqGoOIZ5oIjB5XWxajaYDGLSIhhNYjcPRDSJwbQNw+L+BNGgYYo/5pT5/shz8vDlBgMPXux7z3N3z+25VOofYyCyd4ZYCavI4gXPsRp9LqiDdrEMH+8wv8Vh8gBfWclFPOEUN3hAHjlMoRa7wTzBS5xgKLFglPkZLjDic6HyDsEMNvGR2Nxifoci3tEI+X770JU0XmPXIlax+LTPh83fFox1X6kxyzdjm9UcdXi9S+Vti6svfyNULhNR9TVsYNhW6Ff9KKCNR7/Zv6eeaQ+6+qcdpu9BqGlp1HFgud+FYdzzUcUExu0Q/cdzHGEFetIlXKPjK/sbqYoOftMiS+j9jzEJPd1Wt+5+kdR/9EM9ucIC5jCbyPc01Q32kfsBppYz3hYFcCwAAAAASUVORK5CYII=") !important; + background-repeat: no-repeat; + background-position: center; + background-size: 12px; +} +div.dtsp-topRow div.dtsp-subRow2 { + white-space: nowrap; + flex: 0 0 auto; +} +div.dtsp-topRow button > span { + display: inline-block; + height: 100%; + width: 100%; +} +div.dtsp-topRow button.dtsp-nameButton span { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACMAAAAjCAYAAAAe2bNZAAABcGlDQ1BpY2MAACiRdZHNSwJBGMYftTDS8FCHkA57sOigIAXRMQzyYh3UIKvL7rirwe66zK6IdA26dBA6RF36OvQf1DXoWhAERRAR9B/0dQnZ3nEFJXSG2ffHs/O8zDwD+DM6M+yBJGCYDs+mU9JaYV0KviNMM4QoEjKzreXcUh59x88jfKI+JESv/vt6jlBRtRngGyKeYxZ3iBeIMzXHErxHPMbKcpH4hDjO6YDEt0JXPH4TXPL4SzDPZxcBv+gplbpY6WJW5gbxNHHM0KusfR5xk7BqruaoRmlNwEYWaaQgQUEVW9DhIEHVpMx6+5It3woq5GH0tVAHJ0cJZfLGSa1SV5WqRrpKU0dd5P4/T1ubnfG6h1PA4Kvrfk4CwX2g2XDd31PXbZ4BgRfg2uz4K5TT/DfpjY4WOwYiO8DlTUdTDoCrXWD82ZK53JICtPyaBnxcACMFYPQeGN7wsmr/x/kTkN+mJ7oDDo+AKdof2fwDCBRoDkL8UccAAAAJcEhZcwAAD2EAAA9hAag/p2kAAAK2SURBVFgJ7ZY9j41BFICvryCExrJBQ6HyEYVEIREaUZDQIRoR2ViJKCioxV+gkVXYTVZEQiEUhG2EQnxUCh0FKolY4ut5XnM2cyfva3Pt5m7EPcmzZ2bemTNnzjkzd1utnvQi0IvAfxiBy5z5FoxO89kPY+8mbMjtzs47RXs5/WVpbAG6bWExt5PuIibvhVkwmC+ck3eK9ln6/fAddFojYzBVuYSBpcnIEvRaqOw2RcaN18FPuJH0JvRUxbT3wWf4ltiKPgfVidWlbGZgPozDFfgAC+EA/K2EI4cwcAJ+gPaeQ+VQU2SOMMGcPgPl/m/V2p50rrbRsRgt9Iv5h6xtpP22Bz7Ce1C+gFFxfKzOmShcU+Qmyh2w3w8rIJfddHTck66EukL/xPhj+JM8rHNmFys0Pg4v0up3aFNlwR9NYyodd3OL/C64zpsymcTFcf6ElM4YzjAWKYrJkaq8kE/yUYNP4BoYvS1QRo+hNtF5xfkTUjoTheukSFFMjlTFm6PjceOca/SMpKfeCR1L6Uzk/y2WIkVhNFJlJAZhP+hYns7b9D3IPuhY5mYrIv8OrQJvR5NYyNaW4jsU8pSGNySiVx4o5tXq3JkoXE/mg5R/M8dGJCJpKhaDcjBRdbI/Rm8g69c122om33BHmj2CHoV5qa9jUXBraJ+G1fAVjIBO1klc87ro1K4JZ/K35SWW3TwcyDd6TecqnAEd8cGq2+w84xvBm1n3vS0izKkkwh5XNC/GmFPqqAtPF89AOScKuemaNzoTV1SD5dtSbmLf1/RV+tC0WTgcj6R7HEtrVGWaqu/lYDZ/2pvxQ/kIyw/gFByHC9AHw910hv1aUUumyd8yy0QfhmEkfiNod0Xusct68J1qc8Tdux0Z97Q+hsDb+AYGYEbF/4Guw2Q/qDPqZG/zXgT+3Qj8AtKnfWhFwmuAAAAAAElFTkSuQmCC") !important; + background-repeat: no-repeat; + background-position: center; + background-size: 23px; + vertical-align: bottom; +} +div.dtsp-topRow button.dtsp-countButton span { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABcGlDQ1BpY2MAACiRdZHNSwJBGMYftTDS8FCHkA57sOigIAXRMQzyYh3UIKvL7rirwe66zK6IdA26dBA6RF36OvQf1DXoWhAERRAR9B/0dQnZ3nEFJXSG2ffHs/O8zDwD+DM6M+yBJGCYDs+mU9JaYV0KviNMM4QoEjKzreXcUh59x88jfKI+JESv/vt6jlBRtRngGyKeYxZ3iBeIMzXHErxHPMbKcpH4hDjO6YDEt0JXPH4TXPL4SzDPZxcBv+gplbpY6WJW5gbxNHHM0KusfR5xk7BqruaoRmlNwEYWaaQgQUEVW9DhIEHVpMx6+5It3woq5GH0tVAHJ0cJZfLGSa1SV5WqRrpKU0dd5P4/T1ubnfG6h1PA4Kvrfk4CwX2g2XDd31PXbZ4BgRfg2uz4K5TT/DfpjY4WOwYiO8DlTUdTDoCrXWD82ZK53JICtPyaBnxcACMFYPQeGN7wsmr/x/kTkN+mJ7oDDo+AKdof2fwDCBRoDkL8UccAAAAJcEhZcwAAD2EAAA9hAag/p2kAAAG5SURBVEgN3VU9LwVBFF0fiYhofUSlEQkKhU7z/oBCQkIiGr9BgUbhVzy9BAnhFyjV/AYFiU5ICM7ZN+c5Zud5dm3lJmfmzrkz9+7cu3c3y/6jjOBSF8CxXS7FmTkbwqIJjDpJvTcmsJ4K3KPZUpyZsx0sxoB9J6mnAkyC7wGuuCFIipNtEcpcWExgXpOBc78vgj6N+QO4NVsjwdFM59tUIDxDrHMBOeIQ34C5ZDregXuAQm4YcI68nN9B3wr2PcwPAIPkN2EqtJH6b+QZm1ajjTx7BqwAr26Lb+C2Kvpbt0Mb2HAJ7NrGFGfmXO3DeA4UshDfQAVmH0gaUFg852TTTDvlxwBlCtxy9zXyBhQFaq0wMmIdRebrfgosA3zb2hKnqG0oqchp4QbuR8X0TjzABhbdOT8jnQ/atcgqpnfwOA7yqZyTU587ZkIGdesLTt2EkynOnbreMUUKMI/dA4B/QVOcO13CQh+5wWCgDwo/75u59odB/wjmfhbgvACcAOyZPHihMWAoIwxyCLgf1oxfgjzVbgBXSTzIN+f0pg6s5DkcesLMRpsBrgE2XO3CN64JFP7JtUeKHX4CKtRRXFZ+7dEAAAAASUVORK5CYII=") !important; + background-repeat: no-repeat; + background-position: center; + background-size: 18px; + vertical-align: bottom; +} +div.dtsp-topRow button.dtsp-collapseButton span.dtsp-caret { + position: relative; + top: 9px; + display: inline-block; +} +div.dtsp-topRow button.dtsp-collapseButton.dtsp-rotated { + transform: rotate(180deg); +} + +div.dtsp-searchPane table thead th, +div.dtsp-searchPane table thead td { + width: 100% !important; +} + +div.dt-button-collection { + z-index: 2002; +} + +div.dt-button-collection.dtb-collection-closeable div.dtsp-titleRow { + padding-right: 25px; +} + +div.dtsp-columns-1 { + max-width: 100%; + min-width: 100%; + margin: 0px !important; +} + +div.dtsp-columns-2 { + max-width: 49%; + min-width: 49%; + margin: 0px !important; +} + +div.dtsp-columns-3 { + max-width: 32%; + min-width: 32%; + margin: 0px !important; +} + +div.dtsp-columns-4 { + max-width: 24%; + min-width: 24%; + margin: 0px !important; +} + +div.dtsp-columns-5 { + max-width: 19%; + min-width: 19%; + margin: 0px !important; +} + +div.dtsp-columns-6 { + max-width: 16%; + min-width: 16%; + margin: 0px !important; +} + +div.dtsp-columns-7 { + max-width: 14%; + min-width: 14%; + margin: 0px !important; +} + +div.dtsp-columns-8 { + max-width: 12%; + min-width: 12%; + margin: 0px !important; +} + +div.dtsp-columns-9 { + max-width: 10.5%; + min-width: 10.5%; + margin: 0px !important; +} + +div.dtsp-narrow { + flex-direction: column !important; +} +div.dtsp-narrow div.dtsp-subRow1, +div.dtsp-narrow div.dtsp-subRow2 { + width: 100%; +} +div.dtsp-narrow div.dtsp-subRow2 button { + margin: 0 !important; + width: 25% !important; +} + +div.dt-button-collection div.dtsp-panesContainer { + padding-left: 1em; + padding-right: 1em; + margin-bottom: 0; +} + +div.dtsp-panesContainer { + margin-bottom: 1em; +} + +div.dtsp-searchPane div.dt-container, +div.dtsp-searchPane div.dataTables_wrapper { + width: 100%; +} +div.dtsp-searchPane div.dt-container div.dataTables_layout_cell, +div.dtsp-searchPane div.dataTables_wrapper div.dataTables_layout_cell { + padding: 0; +} +div.dtsp-searchPane div.dt-container div.dt-layout-row:not(.dt-layout-table), +div.dtsp-searchPane div.dataTables_wrapper div.dt-layout-row:not(.dt-layout-table) { + margin: 0; +} +div.dtsp-searchPane div.dt-container div.dt-scroll-head, +div.dtsp-searchPane div.dt-container div.dataTables_scrollHead, +div.dtsp-searchPane div.dataTables_wrapper div.dt-scroll-head, +div.dtsp-searchPane div.dataTables_wrapper div.dataTables_scrollHead { + display: none !important; +} +div.dtsp-searchPane div.dt-container div.dt-scroll-body, +div.dtsp-searchPane div.dt-container div.dataTables_scrollBody, +div.dtsp-searchPane div.dataTables_wrapper div.dt-scroll-body, +div.dtsp-searchPane div.dataTables_wrapper div.dataTables_scrollBody { + background: white !important; + border: none; +} +div.dtsp-searchPane div.dt-container div.dt-scroll-body thead, +div.dtsp-searchPane div.dt-container div.dataTables_scrollBody thead, +div.dtsp-searchPane div.dataTables_wrapper div.dt-scroll-body thead, +div.dtsp-searchPane div.dataTables_wrapper div.dataTables_scrollBody thead { + display: none; +} +div.dtsp-searchPane div.dt-container div.dt-scroll-body table tr > th, +div.dtsp-searchPane div.dt-container div.dt-scroll-body table tr > td, +div.dtsp-searchPane div.dt-container div.dataTables_scrollBody table tr > th, +div.dtsp-searchPane div.dt-container div.dataTables_scrollBody table tr > td, +div.dtsp-searchPane div.dataTables_wrapper div.dt-scroll-body table tr > th, +div.dtsp-searchPane div.dataTables_wrapper div.dt-scroll-body table tr > td, +div.dtsp-searchPane div.dataTables_wrapper div.dataTables_scrollBody table tr > th, +div.dtsp-searchPane div.dataTables_wrapper div.dataTables_scrollBody table tr > td { + padding: 5px 10px; +} +div.dtsp-searchPane div.dt-container div.dt-scroll-body td.dtsp-nameColumn, +div.dtsp-searchPane div.dt-container div.dataTables_scrollBody td.dtsp-nameColumn, +div.dtsp-searchPane div.dataTables_wrapper div.dt-scroll-body td.dtsp-nameColumn, +div.dtsp-searchPane div.dataTables_wrapper div.dataTables_scrollBody td.dtsp-nameColumn { + width: 100% !important; +} +div.dtsp-searchPane div.dt-container div.dt-scroll-body div.dtsp-nameCont, +div.dtsp-searchPane div.dt-container div.dataTables_scrollBody div.dtsp-nameCont, +div.dtsp-searchPane div.dataTables_wrapper div.dt-scroll-body div.dtsp-nameCont, +div.dtsp-searchPane div.dataTables_wrapper div.dataTables_scrollBody div.dtsp-nameCont { + width: 100%; + display: flex; + flex-direction: row; + justify-content: flex-start; + align-content: flex-start; + align-items: flex-start; +} +div.dtsp-searchPane div.dt-container div.dt-scroll-body div.dtsp-nameCont span.dtsp-name, +div.dtsp-searchPane div.dt-container div.dt-scroll-body div.dtsp-nameCont span.dtsp-pill, +div.dtsp-searchPane div.dt-container div.dataTables_scrollBody div.dtsp-nameCont span.dtsp-name, +div.dtsp-searchPane div.dt-container div.dataTables_scrollBody div.dtsp-nameCont span.dtsp-pill, +div.dtsp-searchPane div.dataTables_wrapper div.dt-scroll-body div.dtsp-nameCont span.dtsp-name, +div.dtsp-searchPane div.dataTables_wrapper div.dt-scroll-body div.dtsp-nameCont span.dtsp-pill, +div.dtsp-searchPane div.dataTables_wrapper div.dataTables_scrollBody div.dtsp-nameCont span.dtsp-name, +div.dtsp-searchPane div.dataTables_wrapper div.dataTables_scrollBody div.dtsp-nameCont span.dtsp-pill { + cursor: default; +} +div.dtsp-searchPane div.dt-container div.dt-scroll-body div.dtsp-nameCont span.dtsp-name, +div.dtsp-searchPane div.dt-container div.dataTables_scrollBody div.dtsp-nameCont span.dtsp-name, +div.dtsp-searchPane div.dataTables_wrapper div.dt-scroll-body div.dtsp-nameCont span.dtsp-name, +div.dtsp-searchPane div.dataTables_wrapper div.dataTables_scrollBody div.dtsp-nameCont span.dtsp-name { + text-overflow: ellipsis; + overflow: hidden; + display: inline-block; + vertical-align: middle; + white-space: nowrap; + flex-grow: 1; + text-align: left; +} +div.dtsp-searchPane div.dt-container div.dt-scroll-body div.dtsp-nameCont span.dtsp-pill, +div.dtsp-searchPane div.dt-container div.dataTables_scrollBody div.dtsp-nameCont span.dtsp-pill, +div.dtsp-searchPane div.dataTables_wrapper div.dt-scroll-body div.dtsp-nameCont span.dtsp-pill, +div.dtsp-searchPane div.dataTables_wrapper div.dataTables_scrollBody div.dtsp-nameCont span.dtsp-pill { + display: inline-block; + background-color: #cfcfcf; + text-align: center; + border-radius: 10px; + width: auto; + min-width: 30px; + color: black; + font-size: 0.9em; + padding: 0 4px; +} +div.dtsp-searchPane div.dt-container div.dt-scroll-body div.dtsp-nameCont span.dtsp-pill:empty, +div.dtsp-searchPane div.dt-container div.dataTables_scrollBody div.dtsp-nameCont span.dtsp-pill:empty, +div.dtsp-searchPane div.dataTables_wrapper div.dt-scroll-body div.dtsp-nameCont span.dtsp-pill:empty, +div.dtsp-searchPane div.dataTables_wrapper div.dataTables_scrollBody div.dtsp-nameCont span.dtsp-pill:empty { + display: none; +} + +div.dtsp-panesContainer { + clear: both; + padding-left: 0; + padding-right: 0; + text-align: center; +} +div.dtsp-panesContainer div.dtsp-searchPanes { + display: flex; + flex-direction: row; + flex-wrap: wrap; + justify-content: space-between; + align-content: flex-start; + align-items: stretch; + clear: both; + text-align: left; +} +div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane { + flex-grow: 1; + flex-shrink: 0; + font-size: 0.9em; + margin-top: 15px !important; +} +div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dt-container, +div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dataTables_wrapper { + flex: 1; + box-sizing: border-box; +} +div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dt-container div.dt-search, +div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dt-container div.dataTables_filter, +div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dataTables_wrapper div.dt-search, +div.dtsp-panesContainer div.dtsp-searchPanes div.dtsp-searchPane div.dataTables_wrapper div.dataTables_filter { + display: none; +} +div.dtsp-panesContainer div.dtsp-title { + float: left; + padding: 10px 0; +} +div.dtsp-panesContainer button.dtsp-clearAll, +div.dtsp-panesContainer button.dtsp-collapseAll, +div.dtsp-panesContainer button.dtsp-showAll { + float: right; +} + +div.dtsp-hidden { + display: none !important; +} + +html.dark div.dtsp-topRow div.dtsp-subRow1 div.dtsp-searchCont input[disabled=disabled]::placeholder, +html[data-bs-theme=dark] div.dtsp-topRow div.dtsp-subRow1 div.dtsp-searchCont input[disabled=disabled]::placeholder { + color: white; +} + +div.dtsp-panesContainer button.btn-subtle { + background-color: #f8f9fa; + border: 1px solid #ced4da; +} +div.dtsp-panesContainer button.btn-subtle.disabled { + opacity: 0.5; +} +div.dtsp-panesContainer button.btn-subtle:hover { + background-color: #cbd3da; +} +div.dtsp-panesContainer button.dtsp-clearAll, +div.dtsp-panesContainer button.dtsp-showAll { + margin-left: 3px; +} +div.dtsp-panesContainer div.dtsp-searchPane div.dtsp-topRow { + margin: 0.5em 0; +} +div.dtsp-panesContainer div.dtsp-searchPane div.dtsp-topRow div.dtsp-subRow2 { + margin-left: 0.5em; +} +div.dtsp-panesContainer div.dtsp-searchPane div.dtsp-topRow button { + width: 35px; + line-height: 20px; +} +div.dtsp-panesContainer div.dtsp-searchPane div.dtsp-topRow button.dtsp-searchIcon, div.dtsp-panesContainer div.dtsp-searchPane div.dtsp-topRow button.dtsp-nameButton, div.dtsp-panesContainer div.dtsp-searchPane div.dtsp-topRow button.dtsp-countButton { + padding: 0; +} +div.dtsp-panesContainer div.dtsp-searchPane div.dtsp-topRow div.dtsp-subRow1 button { + border-right: none; + margin-right: 1px; +} +div.dtsp-panesContainer div.dtsp-searchPane div.dtsp-topRow div.dtsp-subRow1 input { + padding-right: 3em; +} +div.dtsp-panesContainer div.dtsp-searchPane div.dtsp-topRow span.dtsp-caret { + top: 3px; +} +div.dtsp-panesContainer div.dtsp-searchPane div.dtsp-topRow button.dtsp-rotated { + transform: none; +} +div.dtsp-panesContainer div.dtsp-searchPane div.dtsp-topRow button.dtsp-rotated span { + transform: rotate(180deg); + top: -2px; +} +div.dtsp-panesContainer div.dtsp-searchPane div.dtsp-topRow.dtsp-bordered:hover button.disabled { + cursor: pointer !important; + pointer-events: none; +} +div.dtsp-panesContainer div.dtsp-searchPane div.dtsp-topRow.dtsp-bordered:hover input.dtsp-paneInputButton { + pointer-events: none; +} +div.dtsp-panesContainer div.dtsp-searchPane div.dt-container, +div.dtsp-panesContainer div.dtsp-searchPane div.dataTables_wrapper { + border: 2px #f0f0f0 solid; + border-radius: 4px; +} +div.dtsp-panesContainer div.dtsp-searchPane div.dt-container:hover, +div.dtsp-panesContainer div.dtsp-searchPane div.dataTables_wrapper:hover { + border: 2px solid #cfcfcf !important; +} +div.dtsp-panesContainer div.dtsp-searchPane div.dt-container div.dtsp-nameCont span.badge, +div.dtsp-panesContainer div.dtsp-searchPane div.dataTables_wrapper div.dtsp-nameCont span.badge { + min-width: 30px; + line-height: 1.25em; + margin-top: 3.5px; +} +div.dtsp-panesContainer div.dtsp-searchPane div.dt-container > div.row.mt-2, +div.dtsp-panesContainer div.dtsp-searchPane div.dataTables_wrapper > div.row.mt-2 { + margin: 0 !important; +} +div.dtsp-panesContainer div.dtsp-searchPane div.dt-container > div.row.mt-2 > *, +div.dtsp-panesContainer div.dtsp-searchPane div.dataTables_wrapper > div.row.mt-2 > * { + padding: 0; +} +div.dtsp-panesContainer button.disabled { + cursor: not-allowed; +} + +div.dt-button-collection div.dtsp-panesContainer { + padding: 9px 1rem; +} + +html[data-bs-theme=dark] div.dtsp-topRow button.dtsp-searchIcon span { + filter: invert(1); +} +html[data-bs-theme=dark] div.dtsp-topRow button.dtsp-nameButton span { + filter: invert(1); +} +html[data-bs-theme=dark] div.dtsp-topRow button.dtsp-countButton span { + filter: invert(1); +} +html[data-bs-theme=dark] div.dtsp-topRow input.dtsp-paneInputButton, +html[data-bs-theme=dark] div.dtsp-topRow button { + color: inherit; +} +html[data-bs-theme=dark] div.dtsp-panesContainer button.btn-subtle { + background-color: rgb(33, 37, 41); + border: var(--bs-border-width) solid var(--bs-border-color); +} +html[data-bs-theme=dark] div.dtsp-panesContainer button.btn-subtle:hover { + background-color: rgba(255, 255, 255, 0.1); +} +html[data-bs-theme=dark] div.dtsp-panesContainer button.dtsp-clearAll, +html[data-bs-theme=dark] div.dtsp-panesContainer button.dtsp-collapseAll, +html[data-bs-theme=dark] div.dtsp-panesContainer button.dtsp-showAll { + color: inherit; +} +html[data-bs-theme=dark] div.dtsp-panesContainer button.dtsp-clearAll:hover, +html[data-bs-theme=dark] div.dtsp-panesContainer button.dtsp-collapseAll:hover, +html[data-bs-theme=dark] div.dtsp-panesContainer button.dtsp-showAll:hover { + background-color: rgb(64, 69, 73); +} +html[data-bs-theme=dark] div.dtsp-panesContainer button.dtsp-disabledButton { + color: rgb(124, 124, 124); +} +html[data-bs-theme=dark] div.dtsp-panesContainer div.dtsp-searchPane div.dt-container, +html[data-bs-theme=dark] div.dtsp-panesContainer div.dtsp-searchPane div.dataTables_wrapper { + border: 1px solid rgba(255, 255, 255, 0.2); +} +html[data-bs-theme=dark] div.dtsp-panesContainer div.dtsp-searchPane div.dt-container:hover, +html[data-bs-theme=dark] div.dtsp-panesContainer div.dtsp-searchPane div.dataTables_wrapper:hover { + border: 1px solid rgba(255, 255, 255, 0.3) !important; +} +html[data-bs-theme=dark] div.dtsp-panesContainer div.dtsp-searchPane div.dt-container div.dt-scroll-body, +html[data-bs-theme=dark] div.dtsp-panesContainer div.dtsp-searchPane div.dt-container div.dataTables_scrollBody, +html[data-bs-theme=dark] div.dtsp-panesContainer div.dtsp-searchPane div.dataTables_wrapper div.dt-scroll-body, +html[data-bs-theme=dark] div.dtsp-panesContainer div.dtsp-searchPane div.dataTables_wrapper div.dataTables_scrollBody { + background: var(--bs-table-bg) !important; +} +html[data-bs-theme=dark] div.dtsp-panesContainer div.dtsp-searchPane div.dt-container div.dt-scroll-body div.dtsp-nameCont span.dtsp-pill, +html[data-bs-theme=dark] div.dtsp-panesContainer div.dtsp-searchPane div.dt-container div.dataTables_scrollBody div.dtsp-nameCont span.dtsp-pill, +html[data-bs-theme=dark] div.dtsp-panesContainer div.dtsp-searchPane div.dataTables_wrapper div.dt-scroll-body div.dtsp-nameCont span.dtsp-pill, +html[data-bs-theme=dark] div.dtsp-panesContainer div.dtsp-searchPane div.dataTables_wrapper div.dataTables_scrollBody div.dtsp-nameCont span.dtsp-pill { + background-color: rgb(33, 37, 41); + color: inherit; +} + + +table.dataTable > tbody > tr > .selected { + background-color: rgb(13, 110, 253); + color: white; +} +table.dataTable > tbody > tr > .dt-select { + text-align: center; + vertical-align: middle; +} +table.dataTable > thead > tr > .dt-select { + text-align: center; +} +table.dataTable input.dt-select-checkbox { + appearance: none; + position: relative; + display: inline-block; + width: 12px; + height: 12px; + border: 1px solid; + border-radius: 3px; + vertical-align: middle; + margin-top: 1px; + color: inherit; + font-size: 20px; + line-height: 1em; +} +table.dataTable input.dt-select-checkbox:checked:after { + display: block; + content: "✓"; + margin-top: -8px; +} +table.dataTable input.dt-select-checkbox:indeterminate:after { + display: block; + position: absolute; + content: " "; + top: 3px; + left: 3px; + height: 4px; + width: 4px; + background-color: black; + border-radius: 2px; +} +table.dataTable > tbody > tr.selected input.dt-select-checkbox:checked { + border: 1px solid; +} +table.dataTable > tbody > tr > td.select-checkbox, +table.dataTable > tbody > tr > th.select-checkbox { + position: relative; +} +table.dataTable > tbody > tr > td.select-checkbox:before, +table.dataTable > tbody > tr > th.select-checkbox:before { + display: block; + position: absolute; + top: 50%; + left: 50%; + width: 12px; + height: 12px; + box-sizing: border-box; + content: " "; + margin-top: -6px; + margin-left: -6px; + border: 1px solid; + border-radius: 3px; +} +table.dataTable > tbody > tr.selected > td.select-checkbox:before, +table.dataTable > tbody > tr.selected > th.select-checkbox:before { + border: 1px solid; + content: "✓"; + font-size: 20px; + line-height: 4px; + text-align: center; +} +table.dataTable.compact > tbody > tr > td.select-checkbox:before, +table.dataTable.compact > tbody > tr > th.select-checkbox:before { + margin-top: -12px; +} +table.dataTable.compact > tbody > tr.selected > td.select-checkbox:after, +table.dataTable.compact > tbody > tr.selected > th.select-checkbox:after { + margin-top: -16px; +} + +div.dt-container span.select-info, +div.dt-container span.select-item { + margin-left: 0.5em; +} + +html.dark table.dataTable input.dt-select-checkbox:indeterminate:after, +html[data-bs-theme=dark] table.dataTable input.dt-select-checkbox:indeterminate:after { + background-color: white; +} + +@media screen and (max-width: 640px) { + div.dt-container span.select-info, + div.dt-container span.select-item { + margin-left: 0; + display: block; + } +} +table.dataTable.table-sm tbody td.select-checkbox::before { + margin-top: -9px; +} + + +div.dtsr-confirmation, +div.dtsr-creation { + position: fixed; + top: 20%; + left: 50%; + width: 500px; + margin-left: -250px; + background-color: white; + border-radius: 0.75em; + box-shadow: 0 12px 30px rgba(0, 0, 0, 0.6); + z-index: 2003; + box-sizing: border-box; + padding: 2em; +} +div.dtsr-confirmation div.dtsr-creation-text, +div.dtsr-confirmation div.dtsr-confirmation-title-row, +div.dtsr-creation div.dtsr-creation-text, +div.dtsr-creation div.dtsr-confirmation-title-row { + text-align: left; +} +div.dtsr-confirmation div.dtsr-creation-text h2, +div.dtsr-confirmation div.dtsr-confirmation-title-row h2, +div.dtsr-creation div.dtsr-creation-text h2, +div.dtsr-creation div.dtsr-confirmation-title-row h2 { + padding-left: 0; + border-bottom: 0px; + margin-top: 0px; + padding-top: 0px; + margin-bottom: 1rem; +} +div.dtsr-confirmation div.dtsr-confirmation-text, +div.dtsr-creation div.dtsr-confirmation-text { + text-align: center; +} +div.dtsr-confirmation div.dtsr-modal-foot, +div.dtsr-confirmation div.dtsr-confirmation-buttons, +div.dtsr-creation div.dtsr-modal-foot, +div.dtsr-creation div.dtsr-confirmation-buttons { + text-align: right; + margin-top: 1em; +} +div.dtsr-confirmation div.dtsr-modal-foot button, +div.dtsr-confirmation div.dtsr-confirmation-buttons button, +div.dtsr-creation div.dtsr-modal-foot button, +div.dtsr-creation div.dtsr-confirmation-buttons button { + margin: 0px; +} +div.dtsr-confirmation div.dtsr-creation-text, +div.dtsr-creation div.dtsr-creation-text { + text-align: left; + padding: 0px; + border: none; +} +div.dtsr-confirmation div.dtsr-creation-text span, +div.dtsr-creation div.dtsr-creation-text span { + font-size: 20px; +} +div.dtsr-confirmation div.dtsr-creation-form div.dtsr-left, div.dtsr-confirmation div.dtsr-creation-form div.dtsr-right, +div.dtsr-creation div.dtsr-creation-form div.dtsr-left, +div.dtsr-creation div.dtsr-creation-form div.dtsr-right { + display: inline-block; + width: 50%; +} +div.dtsr-confirmation div.dtsr-creation-form div.dtsr-left, +div.dtsr-creation div.dtsr-creation-form div.dtsr-left { + text-align: right; +} +div.dtsr-confirmation div.dtsr-creation-form div.dtsr-right, div.dtsr-confirmation div.dtsr-creation-form div.dtsr-name-row, +div.dtsr-creation div.dtsr-creation-form div.dtsr-right, +div.dtsr-creation div.dtsr-creation-form div.dtsr-name-row { + text-align: left; +} +div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row, +div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row { + display: flex; + margin: 0.5em 0; +} +div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row:first-child, +div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row:first-child { + margin-top: 1em; + margin-bottom: 1em; +} +div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row:last-child, +div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row:last-child { + margin-bottom: 0; +} +div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row label, +div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row label { + width: 25%; + padding-right: 1em; + text-align: right; + padding-top: 2px; +} +div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row div.dtsr-input, +div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row div.dtsr-input { + width: 75%; +} +div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row div.dtsr-input div.dtsr-check-label, +div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row div.dtsr-input div.dtsr-check-label { + margin-bottom: 0.5em; +} +div.dtsr-confirmation div.dtsr-creation-form div.dtsr-form-row div.dtsr-input div.dtsr-check-label input, +div.dtsr-creation div.dtsr-creation-form div.dtsr-form-row div.dtsr-input div.dtsr-check-label input { + margin-right: 0.5em; +} +div.dtsr-confirmation div.dtsr-confirmation-text, +div.dtsr-creation div.dtsr-confirmation-text { + text-align: left; +} +div.dtsr-confirmation div.dtsr-confirmation-text label.dtsr-name-label, +div.dtsr-creation div.dtsr-confirmation-text label.dtsr-name-label { + width: auto; + display: inline-block; + text-align: right; + padding-right: 15px; +} +div.dtsr-confirmation div.dtsr-confirmation-text input.dtsr-name-input, +div.dtsr-creation div.dtsr-confirmation-text input.dtsr-name-input { + width: 66.6%; + display: inline-block; +} +div.dtsr-confirmation div.dtsr-modal-foot, +div.dtsr-creation div.dtsr-modal-foot { + text-align: right; + padding-top: 10px; +} +div.dtsr-confirmation span.dtsr-modal-error, +div.dtsr-creation span.dtsr-modal-error { + color: red; + font-size: 0.9em; +} + +div.dtsr-creation { + top: 10%; +} + +div.dtsr-check-row { + padding-top: 0px; +} + +div.dtsr-popover-close { + position: absolute; + top: 10px; + right: 10px; + width: 22px; + height: 22px; + text-align: center; + border-radius: 3px; + cursor: pointer; + z-index: 12; +} + +div.dtsr-background { + z-index: 2002; + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + background: rgba(0, 0, 0, 0.7); + background: radial-gradient(ellipse farthest-corner at center, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0.7) 100%); +} + +div.dt-button-collection h3 { + text-align: center; + margin-top: 4px; + margin-bottom: 8px; + font-size: 1.5em; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} +div.dt-button-collection span.dtsr-emptyStates { + border-radius: 5px; + display: inline-block; + line-height: 1.6em; + white-space: nowrap; + text-align: center; + vertical-align: middle; + width: 100%; + padding-bottom: 7px; + padding-top: 3px; +} + +html.dark div.dtsr-confirmation, +html.dark div.dtsr-creation, +html[data-bs-theme=dark] div.dtsr-confirmation, +html[data-bs-theme=dark] div.dtsr-creation { + background-color: rgb(33, 37, 41); + border: 1px solid rgba(255, 255, 255, 0.15); +} +html.dark div.dtsr-confirmation button, +html.dark div.dtsr-creation button, +html[data-bs-theme=dark] div.dtsr-confirmation button, +html[data-bs-theme=dark] div.dtsr-creation button { + color: inherit; + border: 1px solid rgba(255, 255, 255, 0.175); + background-color: rgb(47, 52, 56); +} +html.dark div.dtsr-confirmation button:hover, +html.dark div.dtsr-creation button:hover, +html[data-bs-theme=dark] div.dtsr-confirmation button:hover, +html[data-bs-theme=dark] div.dtsr-creation button:hover { + background-color: rgb(64, 69, 73); +} + +span.dtsr-check-label { + padding-left: 3px; +} + +input.dtsr-input { + margin-left: 3px; + display: inline-block; + width: auto; +} + +div.dtsr-creation-form div.dtsr-check-row { + height: 25px; +} +div.dtsr-creation-form div.dtsr-form-row label.dtsr-name-label { + width: 33.3%; + display: inline-block; + text-align: left !important; + padding-right: 15px; + padding-left: 15px; +} +div.dtsr-creation-form div.dtsr-form-row input.dtsr-name-input { + width: 66.6%; + display: inline-block; +} + +div.dtsr-confirmation-text { + margin-top: 1.5em; +} + + diff --git a/apps/nps/0.29.21/web/static/css/fontawesome.min.css b/apps/nps/0.29.21/web/static/css/fontawesome.min.css new file mode 100644 index 0000000..d51b6a7 --- /dev/null +++ b/apps/nps/0.29.21/web/static/css/fontawesome.min.css @@ -0,0 +1,5 @@ +/*! + * Font Awesome Free 5.11.2 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + */ +.fa,.fab,.fad,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s linear infinite;animation:fa-spin 2s linear infinite}.fa-pulse{-webkit-animation:fa-spin 1s steps(8) infinite;animation:fa-spin 1s steps(8) infinite}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-acquisitions-incorporated:before{content:"\f6af"}.fa-ad:before{content:"\f641"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adobe:before{content:"\f778"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-air-freshener:before{content:"\f5d0"}.fa-airbnb:before{content:"\f834"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-alipay:before{content:"\f642"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angry:before{content:"\f556"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-ankh:before{content:"\f644"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-alt:before{content:"\f5d1"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-archway:before{content:"\f557"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-artstation:before{content:"\f77a"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asterisk:before{content:"\f069"}.fa-asymmetrik:before{content:"\f372"}.fa-at:before{content:"\f1fa"}.fa-atlas:before{content:"\f558"}.fa-atlassian:before{content:"\f77b"}.fa-atom:before{content:"\f5d2"}.fa-audible:before{content:"\f373"}.fa-audio-description:before{content:"\f29e"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-award:before{content:"\f559"}.fa-aws:before{content:"\f375"}.fa-baby:before{content:"\f77c"}.fa-baby-carriage:before{content:"\f77d"}.fa-backspace:before{content:"\f55a"}.fa-backward:before{content:"\f04a"}.fa-bacon:before{content:"\f7e5"}.fa-balance-scale:before{content:"\f24e"}.fa-balance-scale-left:before{content:"\f515"}.fa-balance-scale-right:before{content:"\f516"}.fa-ban:before{content:"\f05e"}.fa-band-aid:before{content:"\f462"}.fa-bandcamp:before{content:"\f2d5"}.fa-barcode:before{content:"\f02a"}.fa-bars:before{content:"\f0c9"}.fa-baseball-ball:before{content:"\f433"}.fa-basketball-ball:before{content:"\f434"}.fa-bath:before{content:"\f2cd"}.fa-battery-empty:before{content:"\f244"}.fa-battery-full:before{content:"\f240"}.fa-battery-half:before{content:"\f242"}.fa-battery-quarter:before{content:"\f243"}.fa-battery-three-quarters:before{content:"\f241"}.fa-battle-net:before{content:"\f835"}.fa-bed:before{content:"\f236"}.fa-beer:before{content:"\f0fc"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bell:before{content:"\f0f3"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bible:before{content:"\f647"}.fa-bicycle:before{content:"\f206"}.fa-biking:before{content:"\f84a"}.fa-bimobject:before{content:"\f378"}.fa-binoculars:before{content:"\f1e5"}.fa-biohazard:before{content:"\f780"}.fa-birthday-cake:before{content:"\f1fd"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blender:before{content:"\f517"}.fa-blender-phone:before{content:"\f6b6"}.fa-blind:before{content:"\f29d"}.fa-blog:before{content:"\f781"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bold:before{content:"\f032"}.fa-bolt:before{content:"\f0e7"}.fa-bomb:before{content:"\f1e2"}.fa-bone:before{content:"\f5d7"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-book-dead:before{content:"\f6b7"}.fa-book-medical:before{content:"\f7e6"}.fa-book-open:before{content:"\f518"}.fa-book-reader:before{content:"\f5da"}.fa-bookmark:before{content:"\f02e"}.fa-bootstrap:before{content:"\f836"}.fa-border-all:before{content:"\f84c"}.fa-border-none:before{content:"\f850"}.fa-border-style:before{content:"\f853"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-box-open:before{content:"\f49e"}.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-bread-slice:before{content:"\f7ec"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broadcast-tower:before{content:"\f519"}.fa-broom:before{content:"\f51a"}.fa-brush:before{content:"\f55d"}.fa-btc:before{content:"\f15a"}.fa-buffer:before{content:"\f837"}.fa-bug:before{content:"\f188"}.fa-building:before{content:"\f1ad"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burn:before{content:"\f46a"}.fa-buromobelexperte:before{content:"\f37f"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before{content:"\f55e"}.fa-business-time:before{content:"\f64a"}.fa-buy-n-large:before{content:"\f8a6"}.fa-buysellads:before{content:"\f20d"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-alt:before{content:"\f073"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-day:before{content:"\f783"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-times:before{content:"\f273"}.fa-calendar-week:before{content:"\f784"}.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-campground:before{content:"\f6bb"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-candy-cane:before{content:"\f786"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-car:before{content:"\f1b9"}.fa-car-alt:before{content:"\f5de"}.fa-car-battery:before{content:"\f5df"}.fa-car-crash:before{content:"\f5e1"}.fa-car-side:before{content:"\f5e4"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-square-down:before{content:"\f150"}.fa-caret-square-left:before{content:"\f191"}.fa-caret-square-right:before{content:"\f152"}.fa-caret-square-up:before{content:"\f151"}.fa-caret-up:before{content:"\f0d8"}.fa-carrot:before{content:"\f787"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-plus:before{content:"\f217"}.fa-cash-register:before{content:"\f788"}.fa-cat:before{content:"\f6be"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-centos:before{content:"\f789"}.fa-certificate:before{content:"\f0a3"}.fa-chair:before{content:"\f6c0"}.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before{content:"\f51c"}.fa-charging-station:before{content:"\f5e7"}.fa-chart-area:before{content:"\f1fe"}.fa-chart-bar:before{content:"\f080"}.fa-chart-line:before{content:"\f201"}.fa-chart-pie:before{content:"\f200"}.fa-check:before{content:"\f00c"}.fa-check-circle:before{content:"\f058"}.fa-check-double:before{content:"\f560"}.fa-check-square:before{content:"\f14a"}.fa-cheese:before{content:"\f7ef"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-chrome:before{content:"\f268"}.fa-chromecast:before{content:"\f838"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-circle-notch:before{content:"\f1ce"}.fa-city:before{content:"\f64f"}.fa-clinic-medical:before{content:"\f7f2"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clock:before{content:"\f017"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-download-alt:before{content:"\f381"}.fa-cloud-meatball:before{content:"\f73b"}.fa-cloud-moon:before{content:"\f6c3"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-cloud-rain:before{content:"\f73d"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-cloud-sun:before{content:"\f6c4"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-cloud-upload-alt:before{content:"\f382"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cocktail:before{content:"\f561"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-coffee:before{content:"\f0f4"}.fa-cog:before{content:"\f013"}.fa-cogs:before{content:"\f085"}.fa-coins:before{content:"\f51e"}.fa-columns:before{content:"\f0db"}.fa-comment:before{content:"\f075"}.fa-comment-alt:before{content:"\f27a"}.fa-comment-dollar:before{content:"\f651"}.fa-comment-dots:before{content:"\f4ad"}.fa-comment-medical:before{content:"\f7f5"}.fa-comment-slash:before{content:"\f4b3"}.fa-comments:before{content:"\f086"}.fa-comments-dollar:before{content:"\f653"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compress:before{content:"\f066"}.fa-compress-arrows-alt:before{content:"\f78c"}.fa-concierge-bell:before{content:"\f562"}.fa-confluence:before{content:"\f78d"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-cotton-bureau:before{content:"\f89e"}.fa-couch:before{content:"\f4b8"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-credit-card:before{content:"\f09d"}.fa-critical-role:before{content:"\f6c9"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before{content:"\f565"}.fa-cross:before{content:"\f654"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-crutch:before{content:"\f7f7"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cut:before{content:"\f0c4"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-dashcube:before{content:"\f210"}.fa-database:before{content:"\f1c0"}.fa-deaf:before{content:"\f2a4"}.fa-delicious:before{content:"\f1a5"}.fa-democrat:before{content:"\f747"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-desktop:before{content:"\f108"}.fa-dev:before{content:"\f6cc"}.fa-deviantart:before{content:"\f1bd"}.fa-dharmachakra:before{content:"\f655"}.fa-dhl:before{content:"\f790"}.fa-diagnoses:before{content:"\f470"}.fa-diaspora:before{content:"\f791"}.fa-dice:before{content:"\f522"}.fa-dice-d20:before{content:"\f6cf"}.fa-dice-d6:before{content:"\f6d1"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-digital-tachograph:before{content:"\f566"}.fa-directions:before{content:"\f5eb"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-divide:before{content:"\f529"}.fa-dizzy:before{content:"\f567"}.fa-dna:before{content:"\f471"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-dog:before{content:"\f6d3"}.fa-dollar-sign:before{content:"\f155"}.fa-dolly:before{content:"\f472"}.fa-dolly-flatbed:before{content:"\f474"}.fa-donate:before{content:"\f4b9"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dot-circle:before{content:"\f192"}.fa-dove:before{content:"\f4ba"}.fa-download:before{content:"\f019"}.fa-draft2digital:before{content:"\f396"}.fa-drafting-compass:before{content:"\f568"}.fa-dragon:before{content:"\f6d5"}.fa-draw-polygon:before{content:"\f5ee"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-drupal:before{content:"\f1a9"}.fa-dumbbell:before{content:"\f44b"}.fa-dumpster:before{content:"\f793"}.fa-dumpster-fire:before{content:"\f794"}.fa-dungeon:before{content:"\f6d9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edit:before{content:"\f044"}.fa-egg:before{content:"\f7fb"}.fa-eject:before{content:"\f052"}.fa-elementor:before{content:"\f430"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-text:before{content:"\f658"}.fa-envelope-square:before{content:"\f199"}.fa-envira:before{content:"\f299"}.fa-equals:before{content:"\f52c"}.fa-eraser:before{content:"\f12d"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-ethernet:before{content:"\f796"}.fa-etsy:before{content:"\f2d7"}.fa-euro-sign:before{content:"\f153"}.fa-evernote:before{content:"\f839"}.fa-exchange-alt:before{content:"\f362"}.fa-exclamation:before{content:"\f12a"}.fa-exclamation-circle:before{content:"\f06a"}.fa-exclamation-triangle:before{content:"\f071"}.fa-expand:before{content:"\f065"}.fa-expand-arrows-alt:before{content:"\f31e"}.fa-expeditedssl:before{content:"\f23e"}.fa-external-link-alt:before{content:"\f35d"}.fa-external-link-square-alt:before{content:"\f360"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper:before{content:"\f1fb"}.fa-eye-slash:before{content:"\f070"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fan:before{content:"\f863"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-fast-backward:before{content:"\f049"}.fa-fast-forward:before{content:"\f050"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before{content:"\f56b"}.fa-fedex:before{content:"\f797"}.fa-fedora:before{content:"\f798"}.fa-female:before{content:"\f182"}.fa-fighter-jet:before{content:"\f0fb"}.fa-figma:before{content:"\f799"}.fa-file:before{content:"\f15b"}.fa-file-alt:before{content:"\f15c"}.fa-file-archive:before{content:"\f1c6"}.fa-file-audio:before{content:"\f1c7"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-csv:before{content:"\f6dd"}.fa-file-download:before{content:"\f56d"}.fa-file-excel:before{content:"\f1c3"}.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-medical:before{content:"\f477"}.fa-file-medical-alt:before{content:"\f478"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-signature:before{content:"\f573"}.fa-file-upload:before{content:"\f574"}.fa-file-video:before{content:"\f1c8"}.fa-file-word:before{content:"\f1c2"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-alt:before{content:"\f7e4"}.fa-fire-extinguisher:before{content:"\f134"}.fa-firefox:before{content:"\f269"}.fa-first-aid:before{content:"\f479"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-fish:before{content:"\f578"}.fa-fist-raised:before{content:"\f6de"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flag-usa:before{content:"\f74d"}.fa-flask:before{content:"\f0c3"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-flushed:before{content:"\f579"}.fa-fly:before{content:"\f417"}.fa-folder:before{content:"\f07b"}.fa-folder-minus:before{content:"\f65d"}.fa-folder-open:before{content:"\f07c"}.fa-folder-plus:before{content:"\f65e"}.fa-font:before{content:"\f031"}.fa-font-awesome:before{content:"\f2b4"}.fa-font-awesome-alt:before{content:"\f35c"}.fa-font-awesome-flag:before{content:"\f425"}.fa-font-awesome-logo-full:before{content:"\f4e6"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-football-ball:before{content:"\f44e"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-forward:before{content:"\f04e"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-frog:before{content:"\f52e"}.fa-frown:before{content:"\f119"}.fa-frown-open:before{content:"\f57a"}.fa-fulcrum:before{content:"\f50b"}.fa-funnel-dollar:before{content:"\f662"}.fa-futbol:before{content:"\f1e3"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-gavel:before{content:"\f0e3"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-ghost:before{content:"\f6e2"}.fa-gift:before{content:"\f06b"}.fa-gifts:before{content:"\f79c"}.fa-git:before{content:"\f1d3"}.fa-git-alt:before{content:"\f841"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glass-cheers:before{content:"\f79f"}.fa-glass-martini:before{content:"\f000"}.fa-glass-martini-alt:before{content:"\f57b"}.fa-glass-whiskey:before{content:"\f7a0"}.fa-glasses:before{content:"\f530"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-globe:before{content:"\f0ac"}.fa-globe-africa:before{content:"\f57c"}.fa-globe-americas:before{content:"\f57d"}.fa-globe-asia:before{content:"\f57e"}.fa-globe-europe:before{content:"\f7a2"}.fa-gofore:before{content:"\f3a7"}.fa-golf-ball:before{content:"\f450"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-gopuram:before{content:"\f664"}.fa-graduation-cap:before{content:"\f19d"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-greater-than:before{content:"\f531"}.fa-greater-than-equal:before{content:"\f532"}.fa-grimace:before{content:"\f57f"}.fa-grin:before{content:"\f580"}.fa-grin-alt:before{content:"\f581"}.fa-grin-beam:before{content:"\f582"}.fa-grin-beam-sweat:before{content:"\f583"}.fa-grin-hearts:before{content:"\f584"}.fa-grin-squint:before{content:"\f585"}.fa-grin-squint-tears:before{content:"\f586"}.fa-grin-stars:before{content:"\f587"}.fa-grin-tears:before{content:"\f588"}.fa-grin-tongue:before{content:"\f589"}.fa-grin-tongue-squint:before{content:"\f58a"}.fa-grin-tongue-wink:before{content:"\f58b"}.fa-grin-wink:before{content:"\f58c"}.fa-grip-horizontal:before{content:"\f58d"}.fa-grip-lines:before{content:"\f7a4"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-grip-vertical:before{content:"\f58e"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-guitar:before{content:"\f7a6"}.fa-gulp:before{content:"\f3ae"}.fa-h-square:before{content:"\f0fd"}.fa-hacker-news:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hackerrank:before{content:"\f5f7"}.fa-hamburger:before{content:"\f805"}.fa-hammer:before{content:"\f6e3"}.fa-hamsa:before{content:"\f665"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-middle-finger:before{content:"\f806"}.fa-hand-paper:before{content:"\f256"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-rock:before{content:"\f255"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-spock:before{content:"\f259"}.fa-hands:before{content:"\f4c2"}.fa-hands-helping:before{content:"\f4c4"}.fa-handshake:before{content:"\f2b5"}.fa-hanukiah:before{content:"\f6e6"}.fa-hard-hat:before{content:"\f807"}.fa-hashtag:before{content:"\f292"}.fa-hat-cowboy:before{content:"\f8c0"}.fa-hat-cowboy-side:before{content:"\f8c1"}.fa-hat-wizard:before{content:"\f6e8"}.fa-haykal:before{content:"\f666"}.fa-hdd:before{content:"\f0a0"}.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heart-broken:before{content:"\f7a9"}.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-highlighter:before{content:"\f591"}.fa-hiking:before{content:"\f6ec"}.fa-hippo:before{content:"\f6ed"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-history:before{content:"\f1da"}.fa-hockey-puck:before{content:"\f453"}.fa-holly-berry:before{content:"\f7aa"}.fa-home:before{content:"\f015"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-horse:before{content:"\f6f0"}.fa-horse-head:before{content:"\f7ab"}.fa-hospital:before{content:"\f0f8"}.fa-hospital-alt:before{content:"\f47d"}.fa-hospital-symbol:before{content:"\f47e"}.fa-hot-tub:before{content:"\f593"}.fa-hotdog:before{content:"\f80f"}.fa-hotel:before{content:"\f594"}.fa-hotjar:before{content:"\f3b1"}.fa-hourglass:before{content:"\f254"}.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-start:before{content:"\f251"}.fa-house-damage:before{content:"\f6f1"}.fa-houzz:before{content:"\f27c"}.fa-hryvnia:before{content:"\f6f2"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-i-cursor:before{content:"\f246"}.fa-ice-cream:before{content:"\f810"}.fa-icicles:before{content:"\f7ad"}.fa-icons:before{content:"\f86d"}.fa-id-badge:before{content:"\f2c1"}.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before{content:"\f47f"}.fa-igloo:before{content:"\f7ae"}.fa-image:before{content:"\f03e"}.fa-images:before{content:"\f302"}.fa-imdb:before{content:"\f2d8"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-instagram:before{content:"\f16d"}.fa-intercom:before{content:"\f7af"}.fa-internet-explorer:before{content:"\f26b"}.fa-invision:before{content:"\f7b0"}.fa-ioxhost:before{content:"\f208"}.fa-italic:before{content:"\f033"}.fa-itch-io:before{content:"\f83a"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi:before{content:"\f669"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-jira:before{content:"\f7b1"}.fa-joget:before{content:"\f3b7"}.fa-joint:before{content:"\f595"}.fa-joomla:before{content:"\f1aa"}.fa-journal-whills:before{content:"\f66a"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-kaaba:before{content:"\f66b"}.fa-kaggle:before{content:"\f5fa"}.fa-key:before{content:"\f084"}.fa-keybase:before{content:"\f4f5"}.fa-keyboard:before{content:"\f11c"}.fa-keycdn:before{content:"\f3ba"}.fa-khanda:before{content:"\f66d"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-kiss:before{content:"\f596"}.fa-kiss-beam:before{content:"\f597"}.fa-kiss-wink-heart:before{content:"\f598"}.fa-kiwi-bird:before{content:"\f535"}.fa-korvue:before{content:"\f42f"}.fa-landmark:before{content:"\f66f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laptop-medical:before{content:"\f812"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-laugh:before{content:"\f599"}.fa-laugh-beam:before{content:"\f59a"}.fa-laugh-squint:before{content:"\f59b"}.fa-laugh-wink:before{content:"\f59c"}.fa-layer-group:before{content:"\f5fd"}.fa-leaf:before{content:"\f06c"}.fa-leanpub:before{content:"\f212"}.fa-lemon:before{content:"\f094"}.fa-less:before{content:"\f41d"}.fa-less-than:before{content:"\f536"}.fa-less-than-equal:before{content:"\f537"}.fa-level-down-alt:before{content:"\f3be"}.fa-level-up-alt:before{content:"\f3bf"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-line:before{content:"\f3c0"}.fa-link:before{content:"\f0c1"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lira-sign:before{content:"\f195"}.fa-list:before{content:"\f03a"}.fa-list-alt:before{content:"\f022"}.fa-list-ol:before{content:"\f0cb"}.fa-list-ul:before{content:"\f0ca"}.fa-location-arrow:before{content:"\f124"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-long-arrow-alt-down:before{content:"\f309"}.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-long-arrow-alt-right:before{content:"\f30b"}.fa-long-arrow-alt-up:before{content:"\f30c"}.fa-low-vision:before{content:"\f2a8"}.fa-luggage-cart:before{content:"\f59d"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-magic:before{content:"\f0d0"}.fa-magnet:before{content:"\f076"}.fa-mail-bulk:before{content:"\f674"}.fa-mailchimp:before{content:"\f59e"}.fa-male:before{content:"\f183"}.fa-mandalorian:before{content:"\f50f"}.fa-map:before{content:"\f279"}.fa-map-marked:before{content:"\f59f"}.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-marker:before{content:"\f041"}.fa-map-marker-alt:before{content:"\f3c5"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-markdown:before{content:"\f60f"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mask:before{content:"\f6fa"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-mdb:before{content:"\f8ca"}.fa-medal:before{content:"\f5a2"}.fa-medapps:before{content:"\f3c6"}.fa-medium:before{content:"\f23a"}.fa-medium-m:before{content:"\f3c7"}.fa-medkit:before{content:"\f0fa"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-meh:before{content:"\f11a"}.fa-meh-blank:before{content:"\f5a4"}.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-memory:before{content:"\f538"}.fa-mendeley:before{content:"\f7b3"}.fa-menorah:before{content:"\f676"}.fa-mercury:before{content:"\f223"}.fa-meteor:before{content:"\f753"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before{content:"\f3c9"}.fa-microphone-alt-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microscope:before{content:"\f610"}.fa-microsoft:before{content:"\f3ca"}.fa-minus:before{content:"\f068"}.fa-minus-circle:before{content:"\f056"}.fa-minus-square:before{content:"\f146"}.fa-mitten:before{content:"\f7b5"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mizuni:before{content:"\f3cc"}.fa-mobile:before{content:"\f10b"}.fa-mobile-alt:before{content:"\f3cd"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-mosque:before{content:"\f678"}.fa-motorcycle:before{content:"\f21c"}.fa-mountain:before{content:"\f6fc"}.fa-mouse:before{content:"\f8cc"}.fa-mouse-pointer:before{content:"\f245"}.fa-mug-hot:before{content:"\f7b6"}.fa-music:before{content:"\f001"}.fa-napster:before{content:"\f3d2"}.fa-neos:before{content:"\f612"}.fa-network-wired:before{content:"\f6ff"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-nimblr:before{content:"\f5a8"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-not-equal:before{content:"\f53e"}.fa-notes-medical:before{content:"\f481"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-oil-can:before{content:"\f613"}.fa-old-republic:before{content:"\f510"}.fa-om:before{content:"\f679"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-orcid:before{content:"\f8d2"}.fa-osi:before{content:"\f41a"}.fa-otter:before{content:"\f700"}.fa-outdent:before{content:"\f03b"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-pager:before{content:"\f815"}.fa-paint-brush:before{content:"\f1fc"}.fa-paint-roller:before{content:"\f5aa"}.fa-palette:before{content:"\f53f"}.fa-palfed:before{content:"\f3d8"}.fa-pallet:before{content:"\f482"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-parking:before{content:"\f540"}.fa-passport:before{content:"\f5ab"}.fa-pastafarianism:before{content:"\f67b"}.fa-paste:before{content:"\f0ea"}.fa-patreon:before{content:"\f3d9"}.fa-pause:before{content:"\f04c"}.fa-pause-circle:before{content:"\f28b"}.fa-paw:before{content:"\f1b0"}.fa-paypal:before{content:"\f1ed"}.fa-peace:before{content:"\f67c"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-square:before{content:"\f14b"}.fa-pencil-alt:before{content:"\f303"}.fa-pencil-ruler:before{content:"\f5ae"}.fa-penny-arcade:before{content:"\f704"}.fa-people-carry:before{content:"\f4ce"}.fa-pepper-hot:before{content:"\f816"}.fa-percent:before{content:"\f295"}.fa-percentage:before{content:"\f541"}.fa-periscope:before{content:"\f3da"}.fa-person-booth:before{content:"\f756"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-phone:before{content:"\f095"}.fa-phone-alt:before{content:"\f879"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-square:before{content:"\f098"}.fa-phone-square-alt:before{content:"\f87b"}.fa-phone-volume:before{content:"\f2a0"}.fa-photo-video:before{content:"\f87c"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-pizza-slice:before{content:"\f818"}.fa-place-of-worship:before{content:"\f67f"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-departure:before{content:"\f5b0"}.fa-play:before{content:"\f04b"}.fa-play-circle:before{content:"\f144"}.fa-playstation:before{content:"\f3df"}.fa-plug:before{content:"\f1e6"}.fa-plus:before{content:"\f067"}.fa-plus-circle:before{content:"\f055"}.fa-plus-square:before{content:"\f0fe"}.fa-podcast:before{content:"\f2ce"}.fa-poll:before{content:"\f681"}.fa-poll-h:before{content:"\f682"}.fa-poo:before{content:"\f2fe"}.fa-poo-storm:before{content:"\f75a"}.fa-poop:before{content:"\f619"}.fa-portrait:before{content:"\f3e0"}.fa-pound-sign:before{content:"\f154"}.fa-power-off:before{content:"\f011"}.fa-pray:before{content:"\f683"}.fa-praying-hands:before{content:"\f684"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-procedures:before{content:"\f487"}.fa-product-hunt:before{content:"\f288"}.fa-project-diagram:before{content:"\f542"}.fa-pushed:before{content:"\f3e1"}.fa-puzzle-piece:before{content:"\f12e"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\f128"}.fa-question-circle:before{content:"\f059"}.fa-quidditch:before{content:"\f458"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-quran:before{content:"\f687"}.fa-r-project:before{content:"\f4f7"}.fa-radiation:before{content:"\f7b9"}.fa-radiation-alt:before{content:"\f7ba"}.fa-rainbow:before{content:"\f75b"}.fa-random:before{content:"\f074"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-reacteurope:before{content:"\f75d"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-receipt:before{content:"\f543"}.fa-record-vinyl:before{content:"\f8d9"}.fa-recycle:before{content:"\f1b8"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redhat:before{content:"\f7bc"}.fa-redo:before{content:"\f01e"}.fa-redo-alt:before{content:"\f2f9"}.fa-registered:before{content:"\f25d"}.fa-remove-format:before{content:"\f87d"}.fa-renren:before{content:"\f18b"}.fa-reply:before{content:"\f3e5"}.fa-reply-all:before{content:"\f122"}.fa-replyd:before{content:"\f3e6"}.fa-republican:before{content:"\f75e"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-restroom:before{content:"\f7bd"}.fa-retweet:before{content:"\f079"}.fa-rev:before{content:"\f5b2"}.fa-ribbon:before{content:"\f4d6"}.fa-ring:before{content:"\f70b"}.fa-road:before{content:"\f018"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-route:before{content:"\f4d7"}.fa-rss:before{content:"\f09e"}.fa-rss-square:before{content:"\f143"}.fa-ruble-sign:before{content:"\f158"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-running:before{content:"\f70c"}.fa-rupee-sign:before{content:"\f156"}.fa-sad-cry:before{content:"\f5b3"}.fa-sad-tear:before{content:"\f5b4"}.fa-safari:before{content:"\f267"}.fa-salesforce:before{content:"\f83b"}.fa-sass:before{content:"\f41e"}.fa-satellite:before{content:"\f7bf"}.fa-satellite-dish:before{content:"\f7c0"}.fa-save:before{content:"\f0c7"}.fa-schlix:before{content:"\f3ea"}.fa-school:before{content:"\f549"}.fa-screwdriver:before{content:"\f54a"}.fa-scribd:before{content:"\f28a"}.fa-scroll:before{content:"\f70e"}.fa-sd-card:before{content:"\f7c2"}.fa-search:before{content:"\f002"}.fa-search-dollar:before{content:"\f688"}.fa-search-location:before{content:"\f689"}.fa-search-minus:before{content:"\f010"}.fa-search-plus:before{content:"\f00e"}.fa-searchengin:before{content:"\f3eb"}.fa-seedling:before{content:"\f4d8"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-server:before{content:"\f233"}.fa-servicestack:before{content:"\f3ec"}.fa-shapes:before{content:"\f61f"}.fa-share:before{content:"\f064"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-share-square:before{content:"\f14d"}.fa-shekel-sign:before{content:"\f20b"}.fa-shield-alt:before{content:"\f3ed"}.fa-ship:before{content:"\f21a"}.fa-shipping-fast:before{content:"\f48b"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shoe-prints:before{content:"\f54b"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-shopping-cart:before{content:"\f07a"}.fa-shopware:before{content:"\f5b5"}.fa-shower:before{content:"\f2cc"}.fa-shuttle-van:before{content:"\f5b6"}.fa-sign:before{content:"\f4d9"}.fa-sign-in-alt:before{content:"\f2f6"}.fa-sign-language:before{content:"\f2a7"}.fa-sign-out-alt:before{content:"\f2f5"}.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-sim-card:before{content:"\f7c4"}.fa-simplybuilt:before{content:"\f215"}.fa-sistrix:before{content:"\f3ee"}.fa-sitemap:before{content:"\f0e8"}.fa-sith:before{content:"\f512"}.fa-skating:before{content:"\f7c5"}.fa-sketch:before{content:"\f7c6"}.fa-skiing:before{content:"\f7c9"}.fa-skiing-nordic:before{content:"\f7ca"}.fa-skull:before{content:"\f54c"}.fa-skull-crossbones:before{content:"\f714"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack:before{content:"\f198"}.fa-slack-hash:before{content:"\f3ef"}.fa-slash:before{content:"\f715"}.fa-sleigh:before{content:"\f7cc"}.fa-sliders-h:before{content:"\f1de"}.fa-slideshare:before{content:"\f1e7"}.fa-smile:before{content:"\f118"}.fa-smile-beam:before{content:"\f5b8"}.fa-smile-wink:before{content:"\f4da"}.fa-smog:before{content:"\f75f"}.fa-smoking:before{content:"\f48d"}.fa-smoking-ban:before{content:"\f54d"}.fa-sms:before{content:"\f7cd"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-snowboarding:before{content:"\f7ce"}.fa-snowflake:before{content:"\f2dc"}.fa-snowman:before{content:"\f7d0"}.fa-snowplow:before{content:"\f7d2"}.fa-socks:before{content:"\f696"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before{content:"\f0dc"}.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-down-alt:before{content:"\f884"}.fa-sort-amount-up:before{content:"\f161"}.fa-sort-amount-up-alt:before{content:"\f885"}.fa-sort-down:before{content:"\f0dd"}.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-sort-numeric-up:before{content:"\f163"}.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-sort-up:before{content:"\f0de"}.fa-soundcloud:before{content:"\f1be"}.fa-sourcetree:before{content:"\f7d3"}.fa-spa:before{content:"\f5bb"}.fa-space-shuttle:before{content:"\f197"}.fa-speakap:before{content:"\f3f3"}.fa-speaker-deck:before{content:"\f83c"}.fa-spell-check:before{content:"\f891"}.fa-spider:before{content:"\f717"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spotify:before{content:"\f1bc"}.fa-spray-can:before{content:"\f5bd"}.fa-square:before{content:"\f0c8"}.fa-square-full:before{content:"\f45c"}.fa-square-root-alt:before{content:"\f698"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stackpath:before{content:"\f842"}.fa-stamp:before{content:"\f5bf"}.fa-star:before{content:"\f005"}.fa-star-and-crescent:before{content:"\f699"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before{content:"\f5c0"}.fa-star-of-david:before{content:"\f69a"}.fa-star-of-life:before{content:"\f621"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-step-backward:before{content:"\f048"}.fa-step-forward:before{content:"\f051"}.fa-stethoscope:before{content:"\f0f1"}.fa-sticker-mule:before{content:"\f3f7"}.fa-sticky-note:before{content:"\f249"}.fa-stop:before{content:"\f04d"}.fa-stop-circle:before{content:"\f28d"}.fa-stopwatch:before{content:"\f2f2"}.fa-store:before{content:"\f54e"}.fa-store-alt:before{content:"\f54f"}.fa-strava:before{content:"\f428"}.fa-stream:before{content:"\f550"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-stroopwafel:before{content:"\f551"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-subscript:before{content:"\f12c"}.fa-subway:before{content:"\f239"}.fa-suitcase:before{content:"\f0f2"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-superpowers:before{content:"\f2dd"}.fa-superscript:before{content:"\f12b"}.fa-supple:before{content:"\f3f9"}.fa-surprise:before{content:"\f5c2"}.fa-suse:before{content:"\f7d6"}.fa-swatchbook:before{content:"\f5c3"}.fa-swift:before{content:"\f8e1"}.fa-swimmer:before{content:"\f5c4"}.fa-swimming-pool:before{content:"\f5c5"}.fa-symfony:before{content:"\f83d"}.fa-synagogue:before{content:"\f69b"}.fa-sync:before{content:"\f021"}.fa-sync-alt:before{content:"\f2f1"}.fa-syringe:before{content:"\f48e"}.fa-table:before{content:"\f0ce"}.fa-table-tennis:before{content:"\f45d"}.fa-tablet:before{content:"\f10a"}.fa-tablet-alt:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-tachometer-alt:before{content:"\f3fd"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tasks:before{content:"\f0ae"}.fa-taxi:before{content:"\f1ba"}.fa-teamspeak:before{content:"\f4f9"}.fa-teeth:before{content:"\f62e"}.fa-teeth-open:before{content:"\f62f"}.fa-telegram:before{content:"\f2c6"}.fa-telegram-plane:before{content:"\f3fe"}.fa-temperature-high:before{content:"\f769"}.fa-temperature-low:before{content:"\f76b"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-tenge:before{content:"\f7d7"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-th:before{content:"\f00a"}.fa-th-large:before{content:"\f009"}.fa-th-list:before{content:"\f00b"}.fa-the-red-yeti:before{content:"\f69d"}.fa-theater-masks:before{content:"\f630"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-thermometer:before{content:"\f491"}.fa-thermometer-empty:before{content:"\f2cb"}.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-think-peaks:before{content:"\f731"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbtack:before{content:"\f08d"}.fa-ticket-alt:before{content:"\f3ff"}.fa-times:before{content:"\f00d"}.fa-times-circle:before{content:"\f057"}.fa-tint:before{content:"\f043"}.fa-tint-slash:before{content:"\f5c7"}.fa-tired:before{content:"\f5c8"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toilet:before{content:"\f7d8"}.fa-toilet-paper:before{content:"\f71e"}.fa-toolbox:before{content:"\f552"}.fa-tools:before{content:"\f7d9"}.fa-tooth:before{content:"\f5c9"}.fa-torah:before{content:"\f6a0"}.fa-torii-gate:before{content:"\f6a1"}.fa-tractor:before{content:"\f722"}.fa-trade-federation:before{content:"\f513"}.fa-trademark:before{content:"\f25c"}.fa-traffic-light:before{content:"\f637"}.fa-train:before{content:"\f238"}.fa-tram:before{content:"\f7da"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-alt:before{content:"\f2ed"}.fa-trash-restore:before{content:"\f829"}.fa-trash-restore-alt:before{content:"\f82a"}.fa-tree:before{content:"\f1bb"}.fa-trello:before{content:"\f181"}.fa-tripadvisor:before{content:"\f262"}.fa-trophy:before{content:"\f091"}.fa-truck:before{content:"\f0d1"}.fa-truck-loading:before{content:"\f4de"}.fa-truck-monster:before{content:"\f63b"}.fa-truck-moving:before{content:"\f4df"}.fa-truck-pickup:before{content:"\f63c"}.fa-tshirt:before{content:"\f553"}.fa-tty:before{content:"\f1e4"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-tv:before{content:"\f26c"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-ubuntu:before{content:"\f7df"}.fa-uikit:before{content:"\f403"}.fa-umbraco:before{content:"\f8e8"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-underline:before{content:"\f0cd"}.fa-undo:before{content:"\f0e2"}.fa-undo-alt:before{content:"\f2ea"}.fa-uniregistry:before{content:"\f404"}.fa-universal-access:before{content:"\f29a"}.fa-university:before{content:"\f19c"}.fa-unlink:before{content:"\f127"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before{content:"\f13e"}.fa-untappd:before{content:"\f405"}.fa-upload:before{content:"\f093"}.fa-ups:before{content:"\f7e0"}.fa-usb:before{content:"\f287"}.fa-user:before{content:"\f007"}.fa-user-alt:before{content:"\f406"}.fa-user-alt-slash:before{content:"\f4fa"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-clock:before{content:"\f4fd"}.fa-user-cog:before{content:"\f4fe"}.fa-user-edit:before{content:"\f4ff"}.fa-user-friends:before{content:"\f500"}.fa-user-graduate:before{content:"\f501"}.fa-user-injured:before{content:"\f728"}.fa-user-lock:before{content:"\f502"}.fa-user-md:before{content:"\f0f0"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-nurse:before{content:"\f82f"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-cog:before{content:"\f509"}.fa-usps:before{content:"\f7e1"}.fa-ussunnah:before{content:"\f407"}.fa-utensil-spoon:before{content:"\f2e5"}.fa-utensils:before{content:"\f2e7"}.fa-vaadin:before{content:"\f408"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-vial:before{content:"\f492"}.fa-vials:before{content:"\f493"}.fa-viber:before{content:"\f409"}.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vihara:before{content:"\f6a7"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-voicemail:before{content:"\f897"}.fa-volleyball-ball:before{content:"\f45f"}.fa-volume-down:before{content:"\f027"}.fa-volume-mute:before{content:"\f6a9"}.fa-volume-off:before{content:"\f026"}.fa-volume-up:before{content:"\f028"}.fa-vote-yea:before{content:"\f772"}.fa-vr-cardboard:before{content:"\f729"}.fa-vuejs:before{content:"\f41f"}.fa-walking:before{content:"\f554"}.fa-wallet:before{content:"\f555"}.fa-warehouse:before{content:"\f494"}.fa-water:before{content:"\f773"}.fa-wave-square:before{content:"\f83e"}.fa-waze:before{content:"\f83f"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weight:before{content:"\f496"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-wheelchair:before{content:"\f193"}.fa-whmcs:before{content:"\f40d"}.fa-wifi:before{content:"\f1eb"}.fa-wikipedia-w:before{content:"\f266"}.fa-wind:before{content:"\f72e"}.fa-window-close:before{content:"\f410"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-windows:before{content:"\f17a"}.fa-wine-bottle:before{content:"\f72f"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before{content:"\f5ce"}.fa-wix:before{content:"\f5cf"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-won-sign:before{content:"\f159"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wpressr:before{content:"\f3e4"}.fa-wrench:before{content:"\f0ad"}.fa-x-ray:before{content:"\f497"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yammer:before{content:"\f840"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yarn:before{content:"\f7e3"}.fa-yelp:before{content:"\f1e9"}.fa-yen-sign:before{content:"\f157"}.fa-yin-yang:before{content:"\f6ad"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.fa-zhihu:before{content:"\f63f"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto} \ No newline at end of file diff --git a/apps/nps/0.29.21/web/static/css/regular.min.css b/apps/nps/0.29.21/web/static/css/regular.min.css new file mode 100644 index 0000000..d8b4d45 --- /dev/null +++ b/apps/nps/0.29.21/web/static/css/regular.min.css @@ -0,0 +1,5 @@ +/*! + * Font Awesome Free 5.11.2 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + */ +@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:400;font-display:auto;src:url(../webfonts/fa-regular-400.eot);src:url(../webfonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.woff) format("woff"),url(../webfonts/fa-regular-400.ttf) format("truetype"),url(../webfonts/fa-regular-400.svg#fontawesome) format("svg")}.far{font-family:"Font Awesome 5 Free";font-weight:400} \ No newline at end of file diff --git a/apps/nps/0.29.21/web/static/css/solid.min.css b/apps/nps/0.29.21/web/static/css/solid.min.css new file mode 100644 index 0000000..c2c8a46 --- /dev/null +++ b/apps/nps/0.29.21/web/static/css/solid.min.css @@ -0,0 +1,5 @@ +/*! + * Font Awesome Free 5.11.2 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + */ +@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:900;font-display:auto;src:url(../webfonts/fa-solid-900.eot);src:url(../webfonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.woff) format("woff"),url(../webfonts/fa-solid-900.ttf) format("truetype"),url(../webfonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.fas{font-family:"Font Awesome 5 Free";font-weight:900} \ No newline at end of file diff --git a/apps/nps/0.29.21/web/static/css/style.css b/apps/nps/0.29.21/web/static/css/style.css new file mode 100755 index 0000000..5b3b907 --- /dev/null +++ b/apps/nps/0.29.21/web/static/css/style.css @@ -0,0 +1,12489 @@ +/*@import url("https://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700");*/ +/*@import url("https://fonts.googleapis.com/css?family=Roboto:400,300,500,700");*/ +/* + * + * INSPINIA - Responsive Admin Theme + * version 2.9.3 + * +*/ +@font-face { + font-family: 'Glyphicons Halflings'; + src: url('../webfonts/glyphicons-halflings-regular.eot'); + src: url('../webfonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../webfonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../webfonts/glyphicons-halflings-regular.woff') format('woff'), url('../webfonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../webfonts/glyphicons-halflings-regular.svg') format('svg'); +} + +@font-face { + font-family: 'SourceCodePro'; + src: url('../webfonts/SourceCodePro.otf') format('opentype'); +} + +:root { + --text: #5e5e5e; + --color: #000000; + --bg: white; + --bg-mid: #f0f0f0; + --bg-title: #ffffff; + --base-color: #dcdde1; + --border-color: #e8e8e8; + --active-color: #858a99; + --scrollbar-hover-color: #535d6d; + --nav-text-color: #2c2c2c; + --nav-hover-color: #535d6d; + --icon-saturate: 0.8; + --icon-brightness: 0.8; +} + +html[theme="dark-mode"] { + --text: #dddddd; + --color: #ffffff; + --bg: #242424; + --bg-mid: #2c2c2c; + --bg-title: #393939; + --base-color: #333333; + --border-color: #4b4b4b; + --active-color: #18b090; + --scrollbar-hover-color: #1dd3ad; + --nav-text-color: #c6c6c6; + --nav-hover-color: #0C5848; + --icon-saturate: 1.0; + --icon-brightness: 1.0; +} + +html { + transition: color 300ms, background-color 300ms; +} + +.glyphicon { + position: relative; + top: 1px; + display: inline-block; + font-family: 'Glyphicons Halflings'; + font-style: normal; + font-weight: normal; + line-height: 1; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +input[type="datetime-local"] { + position: relative; + cursor: pointer; +} + +input[type="radio"] { + border-color: var(--border-color); +} + +input[type="radio"]:checked { + border-color: var(--border-color); + background-color: var(--active-color); +} + +input[type="radio"]:focus { + box-shadow: 0 0 0 0.2rem rgba(96, 112, 224, 0.25); +} + +input[type="datetime-local"]::-webkit-calendar-picker-indicator { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + width: 100%; + height: 100%; + opacity: 0; + filter: invert(1); +} + +.glyphicon-asterisk:before { + content: "\002a"; +} + +.glyphicon-plus:before { + content: "\002b"; +} + +.glyphicon-euro:before, +.glyphicon-eur:before { + content: "\20ac"; +} + +.glyphicon-minus:before { + content: "\2212"; +} + +.glyphicon-cloud:before { + content: "\2601"; +} + +.glyphicon-envelope:before { + content: "\2709"; +} + +.glyphicon-pencil:before { + content: "\270f"; +} + +.glyphicon-glass:before { + content: "\e001"; +} + +.glyphicon-music:before { + content: "\e002"; +} + +.glyphicon-search:before { + content: "\e003"; +} + +.glyphicon-heart:before { + content: "\e005"; +} + +.glyphicon-star:before { + content: "\e006"; +} + +.glyphicon-star-empty:before { + content: "\e007"; +} + +.glyphicon-user:before { + content: "\e008"; +} + +.glyphicon-film:before { + content: "\e009"; +} + +.glyphicon-th-large:before { + content: "\e010"; +} + +.glyphicon-th:before { + content: "\e011"; +} + +.glyphicon-th-list:before { + content: "\e012"; +} + +.glyphicon-ok:before { + content: "\e013"; +} + +.glyphicon-remove:before { + content: "\e014"; +} + +.glyphicon-zoom-in:before { + content: "\e015"; +} + +.glyphicon-zoom-out:before { + content: "\e016"; +} + +.glyphicon-off:before { + content: "\e017"; +} + +.glyphicon-signal:before { + content: "\e018"; +} + +.glyphicon-cog:before { + content: "\e019"; +} + +.glyphicon-trash:before { + content: "\e020"; +} + +.glyphicon-home:before { + content: "\e021"; +} + +.glyphicon-file:before { + content: "\e022"; +} + +.glyphicon-time:before { + content: "\e023"; +} + +.glyphicon-road:before { + content: "\e024"; +} + +.glyphicon-download-alt:before { + content: "\e025"; +} + +.glyphicon-download:before { + content: "\e026"; +} + +.glyphicon-upload:before { + content: "\e027"; +} + +.glyphicon-inbox:before { + content: "\e028"; +} + +.glyphicon-play-circle:before { + content: "\e029"; +} + +.glyphicon-repeat:before { + content: "\e030"; +} + +.glyphicon-refresh:before { + content: "\e031"; +} + +.glyphicon-list-alt:before { + content: "\e032"; +} + +.glyphicon-lock:before { + content: "\e033"; +} + +.glyphicon-flag:before { + content: "\e034"; +} + +.glyphicon-headphones:before { + content: "\e035"; +} + +.glyphicon-volume-off:before { + content: "\e036"; +} + +.glyphicon-volume-down:before { + content: "\e037"; +} + +.glyphicon-volume-up:before { + content: "\e038"; +} + +.glyphicon-qrcode:before { + content: "\e039"; +} + +.glyphicon-barcode:before { + content: "\e040"; +} + +.glyphicon-tag:before { + content: "\e041"; +} + +.glyphicon-tags:before { + content: "\e042"; +} + +.glyphicon-book:before { + content: "\e043"; +} + +.glyphicon-bookmark:before { + content: "\e044"; +} + +.glyphicon-print:before { + content: "\e045"; +} + +.glyphicon-camera:before { + content: "\e046"; +} + +.glyphicon-font:before { + content: "\e047"; +} + +.glyphicon-bold:before { + content: "\e048"; +} + +.glyphicon-italic:before { + content: "\e049"; +} + +.glyphicon-text-height:before { + content: "\e050"; +} + +.glyphicon-text-width:before { + content: "\e051"; +} + +.glyphicon-align-left:before { + content: "\e052"; +} + +.glyphicon-align-center:before { + content: "\e053"; +} + +.glyphicon-align-right:before { + content: "\e054"; +} + +.glyphicon-align-justify:before { + content: "\e055"; +} + +.glyphicon-list:before { + content: "\e056"; +} + +.glyphicon-indent-left:before { + content: "\e057"; +} + +.glyphicon-indent-right:before { + content: "\e058"; +} + +.glyphicon-facetime-video:before { + content: "\e059"; +} + +.glyphicon-picture:before { + content: "\e060"; +} + +.glyphicon-map-marker:before { + content: "\e062"; +} + +.glyphicon-adjust:before { + content: "\e063"; +} + +.glyphicon-tint:before { + content: "\e064"; +} + +.glyphicon-edit:before { + content: "\e065"; +} + +.glyphicon-share:before { + content: "\e066"; +} + +.glyphicon-check:before { + content: "\e067"; +} + +.glyphicon-move:before { + content: "\e068"; +} + +.glyphicon-step-backward:before { + content: "\e069"; +} + +.glyphicon-fast-backward:before { + content: "\e070"; +} + +.glyphicon-backward:before { + content: "\e071"; +} + +.glyphicon-play:before { + content: "\e072"; +} + +.glyphicon-pause:before { + content: "\e073"; +} + +.glyphicon-stop:before { + content: "\e074"; +} + +.glyphicon-forward:before { + content: "\e075"; +} + +.glyphicon-fast-forward:before { + content: "\e076"; +} + +.glyphicon-step-forward:before { + content: "\e077"; +} + +.glyphicon-eject:before { + content: "\e078"; +} + +.glyphicon-chevron-left:before { + content: "\e079"; +} + +.glyphicon-chevron-right:before { + content: "\e080"; +} + +.glyphicon-plus-sign:before { + content: "\e081"; +} + +.glyphicon-minus-sign:before { + content: "\e082"; +} + +.glyphicon-remove-sign:before { + content: "\e083"; +} + +.glyphicon-ok-sign:before { + content: "\e084"; +} + +.glyphicon-question-sign:before { + content: "\e085"; +} + +.glyphicon-info-sign:before { + content: "\e086"; +} + +.glyphicon-screenshot:before { + content: "\e087"; +} + +.glyphicon-remove-circle:before { + content: "\e088"; +} + +.glyphicon-ok-circle:before { + content: "\e089"; +} + +.glyphicon-ban-circle:before { + content: "\e090"; +} + +.glyphicon-arrow-left:before { + content: "\e091"; +} + +.glyphicon-arrow-right:before { + content: "\e092"; +} + +.glyphicon-arrow-up:before { + content: "\e093"; +} + +.glyphicon-arrow-down:before { + content: "\e094"; +} + +.glyphicon-share-alt:before { + content: "\e095"; +} + +.glyphicon-resize-full:before { + content: "\e096"; +} + +.glyphicon-resize-small:before { + content: "\e097"; +} + +.glyphicon-exclamation-sign:before { + content: "\e101"; +} + +.glyphicon-gift:before { + content: "\e102"; +} + +.glyphicon-leaf:before { + content: "\e103"; +} + +.glyphicon-fire:before { + content: "\e104"; +} + +.glyphicon-eye-open:before { + content: "\e105"; +} + +.glyphicon-eye-close:before { + content: "\e106"; +} + +.glyphicon-warning-sign:before { + content: "\e107"; +} + +.glyphicon-plane:before { + content: "\e108"; +} + +.glyphicon-calendar:before { + content: "\e109"; +} + +.glyphicon-random:before { + content: "\e110"; +} + +.glyphicon-comment:before { + content: "\e111"; +} + +.glyphicon-magnet:before { + content: "\e112"; +} + +.glyphicon-chevron-up:before { + content: "\e113"; +} + +.glyphicon-chevron-down:before { + content: "\e114"; +} + +.glyphicon-retweet:before { + content: "\e115"; +} + +.glyphicon-shopping-cart:before { + content: "\e116"; +} + +.glyphicon-folder-close:before { + content: "\e117"; +} + +.glyphicon-folder-open:before { + content: "\e118"; +} + +.glyphicon-resize-vertical:before { + content: "\e119"; +} + +.glyphicon-resize-horizontal:before { + content: "\e120"; +} + +.glyphicon-hdd:before { + content: "\e121"; +} + +.glyphicon-bullhorn:before { + content: "\e122"; +} + +.glyphicon-bell:before { + content: "\e123"; +} + +.glyphicon-certificate:before { + content: "\e124"; +} + +.glyphicon-thumbs-up:before { + content: "\e125"; +} + +.glyphicon-thumbs-down:before { + content: "\e126"; +} + +.glyphicon-hand-right:before { + content: "\e127"; +} + +.glyphicon-hand-left:before { + content: "\e128"; +} + +.glyphicon-hand-up:before { + content: "\e129"; +} + +.glyphicon-hand-down:before { + content: "\e130"; +} + +.glyphicon-circle-arrow-right:before { + content: "\e131"; +} + +.glyphicon-circle-arrow-left:before { + content: "\e132"; +} + +.glyphicon-circle-arrow-up:before { + content: "\e133"; +} + +.glyphicon-circle-arrow-down:before { + content: "\e134"; +} + +.glyphicon-globe:before { + content: "\e135"; +} + +.glyphicon-wrench:before { + content: "\e136"; +} + +.glyphicon-tasks:before { + content: "\e137"; +} + +.glyphicon-filter:before { + content: "\e138"; +} + +.glyphicon-briefcase:before { + content: "\e139"; +} + +.glyphicon-fullscreen:before { + content: "\e140"; +} + +.glyphicon-dashboard:before { + content: "\e141"; +} + +.glyphicon-paperclip:before { + content: "\e142"; +} + +.glyphicon-heart-empty:before { + content: "\e143"; +} + +.glyphicon-link:before { + content: "\e144"; +} + +.glyphicon-phone:before { + content: "\e145"; +} + +.glyphicon-pushpin:before { + content: "\e146"; +} + +.glyphicon-usd:before { + content: "\e148"; +} + +.glyphicon-gbp:before { + content: "\e149"; +} + +.glyphicon-sort:before { + content: "\e150"; +} + +.glyphicon-sort-by-alphabet:before { + content: "\e151"; +} + +.glyphicon-sort-by-alphabet-alt:before { + content: "\e152"; +} + +.glyphicon-sort-by-order:before { + content: "\e153"; +} + +.glyphicon-sort-by-order-alt:before { + content: "\e154"; +} + +.glyphicon-sort-by-attributes:before { + content: "\e155"; +} + +.glyphicon-sort-by-attributes-alt:before { + content: "\e156"; +} + +.glyphicon-unchecked:before { + content: "\e157"; +} + +.glyphicon-expand:before { + content: "\e158"; +} + +.glyphicon-collapse-down:before { + content: "\e159"; +} + +.glyphicon-collapse-up:before { + content: "\e160"; +} + +.glyphicon-log-in:before { + content: "\e161"; +} + +.glyphicon-flash:before { + content: "\e162"; +} + +.glyphicon-log-out:before { + content: "\e163"; +} + +.glyphicon-new-window:before { + content: "\e164"; +} + +.glyphicon-record:before { + content: "\e165"; +} + +.glyphicon-save:before { + content: "\e166"; +} + +.glyphicon-open:before { + content: "\e167"; +} + +.glyphicon-saved:before { + content: "\e168"; +} + +.glyphicon-import:before { + content: "\e169"; +} + +.glyphicon-export:before { + content: "\e170"; +} + +.glyphicon-send:before { + content: "\e171"; +} + +.glyphicon-floppy-disk:before { + content: "\e172"; +} + +.glyphicon-floppy-saved:before { + content: "\e173"; +} + +.glyphicon-floppy-remove:before { + content: "\e174"; +} + +.glyphicon-floppy-save:before { + content: "\e175"; +} + +.glyphicon-floppy-open:before { + content: "\e176"; +} + +.glyphicon-credit-card:before { + content: "\e177"; +} + +.glyphicon-transfer:before { + content: "\e178"; +} + +.glyphicon-cutlery:before { + content: "\e179"; +} + +.glyphicon-header:before { + content: "\e180"; +} + +.glyphicon-compressed:before { + content: "\e181"; +} + +.glyphicon-earphone:before { + content: "\e182"; +} + +.glyphicon-phone-alt:before { + content: "\e183"; +} + +.glyphicon-tower:before { + content: "\e184"; +} + +.glyphicon-stats:before { + content: "\e185"; +} + +.glyphicon-sd-video:before { + content: "\e186"; +} + +.glyphicon-hd-video:before { + content: "\e187"; +} + +.glyphicon-subtitles:before { + content: "\e188"; +} + +.glyphicon-sound-stereo:before { + content: "\e189"; +} + +.glyphicon-sound-dolby:before { + content: "\e190"; +} + +.glyphicon-sound-5-1:before { + content: "\e191"; +} + +.glyphicon-sound-6-1:before { + content: "\e192"; +} + +.glyphicon-sound-7-1:before { + content: "\e193"; +} + +.glyphicon-copyright-mark:before { + content: "\e194"; +} + +.glyphicon-registration-mark:before { + content: "\e195"; +} + +.glyphicon-cloud-download:before { + content: "\e197"; +} + +.glyphicon-cloud-upload:before { + content: "\e198"; +} + +.glyphicon-tree-conifer:before { + content: "\e199"; +} + +.glyphicon-tree-deciduous:before { + content: "\e200"; +} + +.glyphicon-cd:before { + content: "\e201"; +} + +.glyphicon-save-file:before { + content: "\e202"; +} + +.glyphicon-open-file:before { + content: "\e203"; +} + +.glyphicon-level-up:before { + content: "\e204"; +} + +.glyphicon-copy:before { + content: "\e205"; +} + +.glyphicon-paste:before { + content: "\e206"; +} + +.glyphicon-alert:before { + content: "\e209"; +} + +.glyphicon-equalizer:before { + content: "\e210"; +} + +.glyphicon-king:before { + content: "\e211"; +} + +.glyphicon-queen:before { + content: "\e212"; +} + +.glyphicon-pawn:before { + content: "\e213"; +} + +.glyphicon-bishop:before { + content: "\e214"; +} + +.glyphicon-knight:before { + content: "\e215"; +} + +.glyphicon-baby-formula:before { + content: "\e216"; +} + +.glyphicon-tent:before { + content: "\26fa"; +} + +.glyphicon-blackboard:before { + content: "\e218"; +} + +.glyphicon-bed:before { + content: "\e219"; +} + +.glyphicon-apple:before { + content: "\f8ff"; +} + +.glyphicon-erase:before { + content: "\e221"; +} + +.glyphicon-hourglass:before { + content: "\231b"; +} + +.glyphicon-lamp:before { + content: "\e223"; +} + +.glyphicon-duplicate:before { + content: "\e224"; +} + +.glyphicon-piggy-bank:before { + content: "\e225"; +} + +.glyphicon-scissors:before { + content: "\e226"; +} + +.glyphicon-bitcoin:before { + content: "\e227"; +} + +.glyphicon-btc:before { + content: "\e227"; +} + +.glyphicon-xbt:before { + content: "\e227"; +} + +.glyphicon-yen:before { + content: "\00a5"; +} + +.glyphicon-jpy:before { + content: "\00a5"; +} + +.glyphicon-ruble:before { + content: "\20bd"; +} + +.glyphicon-rub:before { + content: "\20bd"; +} + +.glyphicon-scale:before { + content: "\e230"; +} + +.glyphicon-ice-lolly:before { + content: "\e231"; +} + +.glyphicon-ice-lolly-tasted:before { + content: "\e232"; +} + +.glyphicon-education:before { + content: "\e233"; +} + +.glyphicon-option-horizontal:before { + content: "\e234"; +} + +.glyphicon-option-vertical:before { + content: "\e235"; +} + +.glyphicon-menu-hamburger:before { + content: "\e236"; +} + +.glyphicon-modal-window:before { + content: "\e237"; +} + +.glyphicon-oil:before { + content: "\e238"; +} + +.glyphicon-grain:before { + content: "\e239"; +} + +.glyphicon-sunglasses:before { + content: "\e240"; +} + +.glyphicon-text-size:before { + content: "\e241"; +} + +.glyphicon-text-color:before { + content: "\e242"; +} + +.glyphicon-text-background:before { + content: "\e243"; +} + +.glyphicon-object-align-top:before { + content: "\e244"; +} + +.glyphicon-object-align-bottom:before { + content: "\e245"; +} + +.glyphicon-object-align-horizontal:before { + content: "\e246"; +} + +.glyphicon-object-align-left:before { + content: "\e247"; +} + +.glyphicon-object-align-vertical:before { + content: "\e248"; +} + +.glyphicon-object-align-right:before { + content: "\e249"; +} + +.glyphicon-triangle-right:before { + content: "\e250"; +} + +.glyphicon-triangle-left:before { + content: "\e251"; +} + +.glyphicon-triangle-bottom:before { + content: "\e252"; +} + +.glyphicon-triangle-top:before { + content: "\e253"; +} + +.glyphicon-console:before { + content: "\e254"; +} + +.glyphicon-superscript:before { + content: "\e255"; +} + +.glyphicon-subscript:before { + content: "\e256"; +} + +.glyphicon-menu-left:before { + content: "\e257"; +} + +.glyphicon-menu-right:before { + content: "\e258"; +} + +.glyphicon-menu-down:before { + content: "\e259"; +} + +.glyphicon-menu-up:before { + content: "\e260"; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + font-weight: 100; +} + +::-webkit-scrollbar { + width: 8px; + height: 8px; +} + +::-webkit-scrollbar-track { + background: var(--border-color); +} + +::-webkit-scrollbar-thumb { + background: var(--active-color); + border-radius: 4px; +} + +::-webkit-scrollbar-thumb:hover { + background: var(--scrollbar-hover-color); +} + +.h1, +.h2, +.h3, +h1, +h2, +h3 { + margin-top: 20px; + margin-bottom: 10px; +} + +h1 { + font-size: 30px; +} + +h2 { + font-size: 24px; +} + +h3 { + font-size: 16px; +} + +h4 { + font-size: 14px; +} + +h5 { + font-size: 12px; +} + +h6 { + font-size: 10px; +} + +h3, +h4, +h5 { + margin-top: 5px; + font-weight: 600; +} + +.nav > li > a { + display: flex; + align-items: center; + color: var(--nav-text-color); + font-weight: 600; + padding: 14px 20px 14px 25px; + display: block; +} + +.nav > li > a .nav-label { + margin-left: 8px; +} + +.nav.metismenu > li { + display: block; + width: 100%; + position: relative; +} + +.nav.metismenu .dropdown-menu > li > a { + padding: 3px 20px; + display: block; +} + +.nav.navbar-right > li > a { + color: #999999; +} + +.nav > li.active > a, .nav > li.active > a:hover, .nav > li.active > a:focus { + color: #ffffff; + background-color: var(--active-color); + border-radius: 8px; +} + +.nav > li.active > a i { + color: #ffffff !important; +} + +.navbar-default .nav > li > a:hover, +.navbar-default .nav > li > a:focus { + background-color: var(--nav-hover-color); + color: white; + border-radius: 8px; + opacity: 0.9; +} + +.nav .open > a, +.nav .open > a:hover, +.nav .open > a:focus { + background: #fff; +} + +.nav.navbar-top-links > li > a:hover, +.nav.navbar-top-links > li > a:focus { + background-color: transparent; +} + +.nav > li > a i { + margin-right: 6px; + font-size: 16px; + filter: saturate(var(--icon-saturate)) brightness(var(--icon-brightness)); + transition: filter .2s; +} + +.nav > li > a .fa-home { + color: #50b050 !important; +} + +.nav > li > a .fa-cog { + color: #2098f0 !important; +} + +.nav > li > a .fa-chart-bar { + color: #ff9900 !important; +} + +.nav > li > a .fa-users { + color: #a028b0 !important; +} + +.nav > li > a .fa-server { + color: #608088 !important; +} + +.nav > li > a .fa-file { + color: #785848 !important; +} + +.nav > li > a .fa-clock { + color: #009888 !important; +} + +.nav > li > a .fa-lock { + color: #f04038 !important; +} + +.nav > li > a .fa-flag { + color: #e82060 !important; +} + +.nav > li > a .fa-download { + color: #4050b8 !important; +} + +.nav > li > a .fa-tachometer-alt { + color: #00c0d0 !important; +} + +.nav > li > a .fa-desktop { + color: #88c048 !important; +} + +.nav > li > a .fa-globe { + color: #4050b8 !important; +} + +.nav > li > a .fa-retweet { + color: #ff5820 !important; +} + +.nav > li > a .fa-random { + color: #a028b0 !important; +} + +.nav > li > a .fa-layer-group { + color: #785848 !important; +} + +.nav > li > a .fa-low-vision { + color: #608088 !important; +} + +.nav > li > a .fa-exchange-alt { + color: #ff9900 !important; +} + +.nav > li > a .fa-briefcase { + color: #009888 !important; +} + +.nav > li > a .fa-lightbulb { + color: #ffc008 !important; +} + +.navbar { + border: 0; +} + +.navbar-default { + background-color: transparent; + border-color: var(--base-color); +} + +.navbar-top-links li { + display: inline-block; + align-self: center; +} + +.body-small .navbar-top-links li:last-child { + margin-right: 0; +} + +.navbar-top-links li a { + padding: 20px 10px; + min-height: 50px; +} + +.dropdown-menu { + border: medium none; + border-radius: 3px; + box-shadow: 0 0 3px rgba(88, 96, 120, 0.7); + display: none; + float: left; + font-size: 12px; + left: 0; + list-style: none outside none; + padding: 0; + position: absolute; + text-shadow: none; + top: 100%; + z-index: 1000; +} + +.dropdown-menu > li > a { + border-radius: 3px; + color: inherit; + line-height: 25px; + margin: 4px; + text-align: left; + font-weight: normal; + display: block; + padding: 3px 20px; +} + +.dropdown-menu > li > a:focus, +.dropdown-menu > li > a:hover { + color: #282828; + text-decoration: none; + background-color: #f8f8f8; +} + +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:focus, +.dropdown-menu > .active > a:hover { + color: #fff; + text-decoration: none; + background-color: #18b090; + outline: 0; +} + +.dropdown-menu > li > a.font-bold { + font-weight: 600; +} + +.navbar-top-links .dropdown-menu li { + display: block; +} + +.navbar-top-links .dropdown-menu li:last-child { + margin-right: 0; +} + +.navbar-top-links .dropdown-menu li a { + padding: 3px 20px; + min-height: 0; +} + +.navbar-top-links .dropdown-menu li a div { + white-space: normal; +} + +.navbar-top-links .dropdown-messages, +.navbar-top-links .dropdown-tasks, +.navbar-top-links .dropdown-alerts { + width: 310px; + min-width: 0; +} + +.navbar-top-links .dropdown-messages { + margin-left: 5px; +} + +.navbar-top-links .dropdown-tasks { + margin-left: -59px; +} + +.navbar-top-links .dropdown-alerts { + margin-left: -123px; +} + +.navbar-top-links .dropdown-user { + right: 0; + left: auto; +} + +.dropdown-messages, +.dropdown-alerts { + padding: 10px 10px 10px 10px; +} + +.dropdown-messages li a, +.dropdown-alerts li a { + font-size: 12px; +} + +.dropdown-messages li em, +.dropdown-alerts li em { + font-size: 10px; +} + +.nav.navbar-top-links .dropdown-alerts a { + font-size: 12px; +} + +.nav-header { + padding: 20px 15px; + display: flex; + align-items: center; + justify-content: center; + flex-direction: row; + gap: 10px; + background-color: var(--base-color); +} + +/*.caret { + display: inline-block; + width: 0; + height: 0; + margin-left: 2px; + vertical-align: middle; + border-top: 4px dashed; + border-right: 4px solid transparent; + border-left: 4px solid transparent; +}*/ +.profile-element { + display: flex; + align-items: center; + gap: 10px; +} + +.profile-element .dropdown-toggle::after { + display: none; +} + +.profile-element span { + font-size: 14px; +} + +.profile-element .fa-user-cog, +.profile-element .fa-user { + font-size: 24px; +} + +.pace-done .nav-header { + transition: all 0.4s; +} + +ul.nav-second-level { + background: #f8f8ff; +} + +.nav > li.active { + background: var(--active-color); + border-radius: 8px; +} + +.nav.nav-second-level > li.active { + border: none; + background-color: #f8f8ff; +} + +.nav.nav-second-level > li.active > a { + color: var(--active-color); +} + +.nav.nav-second-level.collapse[style] { + height: auto !important; +} + +.nav-header a { + color: #ffffff; +} + +.nav-header .text-muted { + color: var(--text); +} + +.minimalize-styl-2 { + padding: 4px 12px; + margin: 14px 5px 5px 20px; + font-size: 14px; + float: left; +} + +.navbar-form-custom { + float: left; + height: 50px; + padding: 0; + width: 200px; + display: block; +} + +.navbar-form-custom .form-group { + margin-bottom: 0; +} + +.nav.navbar-top-links a { + font-size: 14px; +} + +.navbar-form-custom .form-control { + background: none repeat scroll 0 0 rgba(0, 0, 0, 0); + border: medium none; + font-size: 14px; + height: 60px; + margin: 0; + z-index: 2000; +} + +/*.nav.navbar-top-links .dropdown-toggle::after { + display: none; +} +*/ +.navbar.navbar-static-top { + padding: 0; + width: 100%; + align-items: inherit; +} + +.navbar-static-top .dropdown-menu { + right: 0; + left: auto; +} + +.count-info .label { + line-height: 12px; + padding: 2px 5px; + position: absolute; + right: 6px; + top: 12px; +} + +.arrow { + float: right; +} + +.fa.arrow:before { + content: "\f104"; +} + +.active > a > .fa.arrow:before { + content: "\f107"; +} + +.nav-second-level li, +.nav-third-level li { + border-bottom: none !important; +} + +.nav.nav-third-level > li.active { + border: none; +} + +.nav-second-level li a { + padding: 7px 10px 7px 10px; + padding-left: 52px; + color: var(--text); +} + +.nav-second-level li a:hover { + background-color: #cccccc; + color: #202020; +} + +.fixed-sidebar.mini-navbar .nav-second-level.collapsing li a, +.nav-second-level.collapsing li a { + min-width: 220px; +} + +.body-small .nav-second-level.collapsing li a, +.mini-navbar .nav-second-level.collapsing li a { + min-width: 140px; +} + +.nav-third-level li a, +.fixed-sidebar.mini-navbar .nav-second-level li .nav-third-level li a { + padding-left: 62px; +} + +.nav-second-level li:last-child { + padding-bottom: 10px; +} + +body:not(.fixed-sidebar):not(.canvas-menu).mini-navbar .nav li:hover > .nav-second-level, +.mini-navbar .nav li:focus > .nav-second-level { + display: block; + border-radius: 0 2px 2px 0; + min-width: 160px; + height: auto; +} + +body.mini-navbar .navbar-default .nav > li > .nav-second-level li a { + font-size: 12px; + border-radius: 3px; +} + +.fixed-nav .slimScrollDiv #side-menu { + padding-bottom: 60px; +} + +.mini-navbar .nav-second-level li a { + padding: 10px 10px 10px 15px; +} + +.mini-navbar .nav .nav-second-level { + position: absolute; + left: 70px; + top: 0; + background-color: var(--base-color); + padding: 10px 10px 10px 10px; + font-size: 12px; +} + +.canvas-menu.mini-navbar .nav-second-level { + background: #283848; +} + +.mini-navbar li.active .nav-second-level { + left: 65px; +} + +.navbar-default .special_link a { + background: #18b090; + color: white; +} + +.navbar-default .special_link a:hover { + background: #189880 !important; + color: white; +} + +.navbar-default .special_link a span.label { + background: #fff; + color: #18b090; +} + +.navbar-default .landing_link a { + background: #20c0a0; + color: white; +} + +.navbar-default .landing_link a:hover { + background: #18b090 !important; + color: white; +} + +.navbar-default .landing_link a span.label { + background: #fff; + color: #20c0a0; +} + +.logo-element { + text-align: center; + font-size: 18px; + font-weight: 600; + color: white; + display: none; + padding: 18px 0; +} + +.navbar-static-side { + transition: width 0s; + position: relative; +} + +.footer { + transition: margin 0s; +} + +@media (max-height: 600px) { + .footer { + margin-top: auto; + bottom: auto !important; + left: auto !important; + width: 100%; + position: relative; + z-index: -1; + } +} + +.pace-done .navbar-static-side, +.pace-done .nav-header, +.pace-done li.active, +.pace-done #page-wrapper, +.pace-done .footer { + -webkit-transition: all 0.4s; + -moz-transition: all 0.4s; + -o-transition: all 0.4s; + transition: all 0.4s; +} + +.navbar-fixed-top { + background: #ffffff; + transition-duration: 0.4s; + border-bottom: 1px solid transparent !important; + z-index: 2030; + position: fixed; + right: 0; + left: 0; + padding: 0; + top: 0; +} + +.navbar-fixed-top .navbar-form-custom .form-control { + height: 50px; +} + +.navbar-fixed-top, +.navbar-static-top { + background: var(--bg-mid); +} + +.fixed-nav #wrapper { + margin-top: 0; +} + +.nav-tabs > li.active > a, +.nav-tabs > li.active > a:hover, +.nav-tabs > li.active > a:focus { + -moz-border-bottom-colors: none; + -moz-border-left-colors: none; + -moz-border-right-colors: none; + -moz-border-top-colors: none; + background: none; + border-color: #e0e0e0 #e0e0e0 rgba(0, 0, 0, 0); + border-bottom: var(--bg-mid); + border-image: none; + border-style: solid; + border-width: 1px; + color: #585858; + cursor: default; +} + +.nav.nav-tabs li { + background: none; + border: none; +} + +body.fixed-nav #wrapper .navbar-static-side, +body.fixed-nav #wrapper #page-wrapper { + margin-top: 60px; +} + +body.top-navigation.fixed-nav #wrapper #page-wrapper { + margin-top: 0; +} + +body.fixed-nav.fixed-nav-basic .navbar-fixed-top { + left: 220px; +} + +body.fixed-nav.fixed-nav-basic.mini-navbar .navbar-fixed-top { + left: 70px; +} + +body.fixed-nav.fixed-nav-basic.fixed-sidebar.mini-navbar .navbar-fixed-top { + left: 0; +} + +body.fixed-nav.fixed-nav-basic #wrapper .navbar-static-side { + margin-top: 0; +} + +body.fixed-nav.fixed-nav-basic.body-small .navbar-fixed-top { + left: 0; +} + +body.fixed-nav.fixed-nav-basic.fixed-sidebar.mini-navbar.body-small .navbar-fixed-top { + left: 220px; +} + +.fixed-nav .minimalize-styl-2 { + margin: 10px 5px 5px 15px; +} + +.body-small .navbar-fixed-top { + margin-left: 0; +} + +body.mini-navbar .navbar-static-side { + width: 70px; +} + +body.mini-navbar .profile-element, +body.mini-navbar .nav-label, +body.mini-navbar .navbar-default .nav li a span { + display: none; +} + +body.canvas-menu .profile-element { + display: block; +} + +body:not(.fixed-sidebar):not(.canvas-menu).mini-navbar .nav-second-level { + display: none; +} + +body.mini-navbar .navbar-default .nav > li > a { + font-size: 16px; +} + +body.mini-navbar .logo-element { + display: block; +} + +body.canvas-menu .logo-element { + display: none; +} + +body.mini-navbar .nav-header { + padding: 0; + background-color: #18b090; +} + +body.canvas-menu .nav-header { + padding: 33px 25px; +} + +body.canvas-menu .sidebar-collapse li { + width: 100%; +} + +body.mini-navbar #page-wrapper { + width: calc(100% - 70px); +} + +body.canvas-menu.mini-navbar #page-wrapper, +body.canvas-menu.mini-navbar .footer { + margin: 0; + width: 100%; +} + +body.fixed-sidebar .navbar-static-side, +body.canvas-menu .navbar-static-side { + width: 220px; + z-index: 2001; + height: 100vh; + position: fixed; +} + +body.fixed-sidebar.mini-navbar .navbar-static-side { + width: 0; +} + +body.fixed-sidebar #page-wrapper { + margin: 0 0 0 220px; +} + +body.fixed-sidebar.body-small #page-wrapper { + margin: 0; +} + +body.fixed-sidebar.mini-navbar #page-wrapper { + margin: 0 0 0 0; + width: 100%; +} + +body.body-small.fixed-sidebar.mini-navbar #page-wrapper { + margin: 0 0 0 220px; +} + +body.body-small.fixed-sidebar.mini-navbar .navbar-static-side { + width: 220px; +} + +.fixed-sidebar.mini-navbar .nav li:focus > .nav-second-level, +.canvas-menu.mini-navbar .nav li:focus > .nav-second-level { + display: block; + height: auto; +} + +body.fixed-sidebar.mini-navbar .navbar-default .nav > li > .nav-second-level li a { + font-size: 12px; + border-radius: 3px; +} + +body.canvas-menu.mini-navbar .navbar-default .nav > li > .nav-second-level li a { + font-size: 13px; + border-radius: 3px; +} + +.fixed-sidebar.mini-navbar .nav-second-level li a, +.canvas-menu.mini-navbar .nav-second-level li a { + padding: 10px 10px 10px 15px; +} + +.fixed-sidebar.mini-navbar .nav-second-level, +.canvas-menu.mini-navbar .nav-second-level { + position: relative; + padding: 0; + font-size: 13px; +} + +.fixed-sidebar.mini-navbar li.active .nav-second-level, +.canvas-menu.mini-navbar li.active .nav-second-level { + left: 0; +} + +body.fixed-sidebar.mini-navbar .navbar-default .nav > li > a, +body.canvas-menu.mini-navbar .navbar-default .nav > li > a { + font-size: 13px; +} + +body.fixed-sidebar.mini-navbar .nav-label, +body.fixed-sidebar.mini-navbar .navbar-default .nav li a span, +body.canvas-menu.mini-navbar .nav-label, +body.canvas-menu.mini-navbar .navbar-default .nav li a span { + display: inline; +} + +body.canvas-menu.mini-navbar .navbar-default .nav li .profile-element a span { + display: block; +} + +.canvas-menu.mini-navbar .nav-second-level li a, +.fixed-sidebar.mini-navbar .nav-second-level li a { + padding: 7px 10px 7px 52px; +} + +.fixed-sidebar.mini-navbar .nav-second-level, +.canvas-menu.mini-navbar .nav-second-level { + left: 0; +} + +body.canvas-menu nav.navbar-static-side { + z-index: 2001; + background: var(--base-color); + height: 100%; + position: fixed; + display: none; +} + +body.canvas-menu.mini-navbar nav.navbar-static-side { + display: block; + width: 220px; +} + +.top-navigation #page-wrapper { + width: 100%; +} + +.top-navigation .navbar-nav .dropdown-menu > .active > a { + background: white; + color: #18b090; + font-weight: bold; +} + +.white-bg .navbar-fixed-top, +.white-bg .navbar-static-top { + background: #fff; +} + +.top-navigation .navbar { + margin-bottom: 0; +} + +.top-navigation .nav > li > a { + padding: 15px 20px; + color: var(--text); +} + +.top-navigation .nav > li a:hover, +.top-navigation .nav > li a:focus { + background: #fff; + color: #18b090; +} + +.top-navigation .navbar .nav > li.active { + background: #fff; + border: none; +} + +.top-navigation .nav > li.active > a { + color: #18b090; +} + +.top-navigation .navbar-right { + margin-right: 10px; +} + +.top-navigation .navbar-nav .dropdown-menu { + box-shadow: none; + border: 1px solid var(--border-color); +} + +.top-navigation .dropdown-menu > li > a { + margin: 0; + padding: 7px 20px; +} + +.navbar .dropdown-menu { + margin-top: 0; +} + +.top-navigation .navbar-brand { + background: #18b090; + color: #fff; + padding: 15px 25px; + font-size: 18px; + line-height: 20px; +} + +.top-navigation .navbar-top-links li:last-child { + margin-right: 0; +} + +.top-navigation.mini-navbar #page-wrapper, +.top-navigation.body-small.fixed-sidebar.mini-navbar #page-wrapper, +.mini-navbar .top-navigation #page-wrapper, +.body-small.fixed-sidebar.mini-navbar .top-navigation #page-wrapper, +.canvas-menu #page-wrapper { + margin: 0; + width: 100%; +} + +.top-navigation.fixed-nav #wrapper, +.fixed-nav #wrapper.top-navigation { + margin-top: 50px; +} + +.top-navigation .footer.fixed { + margin-left: 0 !important; +} + +.top-navigation .wrapper.wrapper-content { + padding: 40px; +} + +.top-navigation.body-small .wrapper.wrapper-content, +.body-small .top-navigation .wrapper.wrapper-content { + padding: 40px 0 40px 0; +} + +.navbar-toggler { + background-color: #18b090; + color: #fff; + padding: 6px 12px; + font-size: 14px; + margin: 8px; +} + +.top-navigation .navbar-nav .open .dropdown-menu > li > a, +.top-navigation .navbar-nav .open .dropdown-menu .dropdown-header { + padding: 10px 15px 10px 20px; +} + +@media (max-width: 768px) { + .top-navigation .navbar-header { + display: block; + float: none; + } +} + +.menu-visible-lg, +.menu-visible-md { + display: none !important; +} + +@media (min-width: 1200px) { + .menu-visible-lg { + display: block !important; + } +} + +@media (min-width: 992px) { + .menu-visible-md { + display: block !important; + } +} + +@media (max-width: 767px) { + .menu-visible-md { + display: block !important; + } + + .menu-visible-lg { + display: block !important; + } +} + +button:focus { + outline: 0 !important; +} + +.btn { + border-radius: 3px; + font-size: inherit; +} + +.btn:focus { + box-shadow: none; +} + +.btn-xs { + font-size: 0.7rem; + padding: 0.2rem 0.4rem; +} + +.btn-group-sm > .btn, +.btn-sm { + font-size: .8rem; +} + +.float-e-margins .btn { + margin-bottom: 5px; +} + +.btn-w-m { + min-width: 120px; +} + +.btn-primary.btn-outline { + color: #18b090 !important; +} + +.btn-success.btn-outline { + color: #2080c8 !important; +} + +.btn-info.btn-outline { + color: #20c8c8 !important; +} + +.btn-warning.btn-outline { + color: #f8b058 !important; +} + +.btn-danger.btn-outline { + color: #f05868 !important; +} + +.btn-primary.btn-outline:hover, +.btn-success.btn-outline:hover, +.btn-info.btn-outline:hover, +.btn-warning.btn-outline:hover, +.btn-danger.btn-outline:hover { + color: #fff !important; +} + +.btn.active, +.btn:active { + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} + +.btn-primary { + color: #fff; + background-color: #1878b8; + border-color: #1878b8; +} + +.btn-primary:hover, +.btn-primary:focus, +.btn-primary.focus { + background-color: #186898; + border-color: #186898; + color: #ffffff; +} + +.btn-primary.disabled, +.btn-primary:disabled { + color: #fff; + background-color: #18a888; + border-color: #18a888; +} + +.btn-primary:not(:disabled):not(.disabled):active, +.btn-primary:not(:disabled):not(.disabled).active, +.show > .btn-primary.dropdown-toggle { + color: #fff; + background-color: #105888; + border-color: #105888; +} + +.btn-primary:not(:disabled):not(.disabled):active:focus, +.btn-primary:not(:disabled):not(.disabled).active:focus, +.show > .btn-primary.dropdown-toggle:focus { + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} + +.btn-success { + color: #fff; + background-color: #2080c8; + border-color: #2080c8; +} + +.btn-success:hover, +.btn-success:focus, +.btn-success.focus { + color: #fff; + background-color: #1878b8; + border-color: #1878b8; +} + +.btn-success.disabled, +.btn-success:disabled { + color: #fff; + background-color: #1878b8; + border-color: #1878b8; +} + +.btn-success:not(:disabled):not(.disabled):active, +.btn-success:not(:disabled):not(.disabled).active, +.show > .btn-success.dropdown-toggle { + color: #fff; + background-color: #1878b8; + border-color: #1878b8; +} + +.btn-success:not(:disabled):not(.disabled):active:focus, +.btn-success:not(:disabled):not(.disabled).active:focus, +.show > .btn-success.dropdown-toggle:focus { + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} + +.btn-info { + color: #fff; + background-color: #20c8c8; + border-color: #20c8c8; +} + +.btn-info:hover, +.btn-info:focus, +.btn-info.focus { + color: #fff; + background-color: #20b8b8; + border-color: #20b8b8; +} + +.btn-info.disabled, +.btn-info:disabled { + color: #fff; + background-color: #20b8b8; + border-color: #20b8b8; +} + +.btn-info:not(:disabled):not(.disabled):active, +.btn-info:not(:disabled):not(.disabled).active, +.show > .btn-info.dropdown-toggle { + color: #fff; + background-color: #20b8b8; + border-color: #20b8b8; +} + +.btn-info:not(:disabled):not(.disabled):active:focus, +.btn-info:not(:disabled):not(.disabled).active:focus, +.show > .btn-info.dropdown-toggle:focus { + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} + +.btn-default { + color: inherit; + background: white; + border: 1px solid var(--border-color); +} + +.btn-default:hover, +.btn-default:focus, +.btn-default:active, +.btn-default.active, +.open .dropdown-toggle.btn-default, +.btn-default:active:focus, +.btn-default:active:hover, +.btn-default.active:hover, +.btn-default.active:focus { + color: inherit; + border: 1px solid #cccccc; +} + +.btn-default:active, +.btn-default.active, +.open .dropdown-toggle.btn-default { + box-shadow: 0 2px 5px rgba(0, 0, 0, 0.15) inset; +} + +.btn-default.disabled, +.btn-default.disabled:hover, +.btn-default.disabled:focus, +.btn-default.disabled:active, +.btn-default.disabled.active, +.btn-default[disabled], +.btn-default[disabled]:hover, +.btn-default[disabled]:focus, +.btn-default[disabled]:active, +.btn-default.active[disabled], +fieldset[disabled] .btn-default, +fieldset[disabled] .btn-default:hover, +fieldset[disabled] .btn-default:focus, +fieldset[disabled] .btn-default:active, +fieldset[disabled] .btn-default.active { + color: #cccccc; +} + +.btn-warning { + color: #ffffff; + background-color: #f8b058; + border-color: #f8b058; +} + +.btn-warning:hover, +.btn-warning:focus, +.btn-warning.focus { + color: #ffffff; + background-color: #f8a848; + border-color: #f8a848; +} + +.btn-warning.disabled, +.btn-warning:disabled { + color: #ffffff; + background-color: #f8a848; + border-color: #f8a848; +} + +.btn-warning:not(:disabled):not(.disabled):active, +.btn-warning:not(:disabled):not(.disabled).active, +.show > .btn-warning.dropdown-toggle { + color: #ffffff; + background-color: #f8a848; + border-color: #f8a848; +} + +.btn-warning:not(:disabled):not(.disabled):active:focus, +.btn-warning:not(:disabled):not(.disabled).active:focus, +.show > .btn-warning.dropdown-toggle:focus { + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} + +.btn-danger { + color: #fff !important; + background-color: #f05868; + border-color: #f05868; +} + +.btn-danger:hover, +.btn-danger:focus, +.btn-danger.focus { + color: #fff; + background-color: #f04858; + border-color: #f04858; +} + +.btn-danger.disabled, +.btn-danger:disabled { + color: #fff; + background-color: #f04858; + border-color: #f04858; +} + +.btn-danger:not(:disabled):not(.disabled):active, +.btn-danger:not(:disabled):not(.disabled).active, +.show > .btn-danger.dropdown-toggle { + color: #fff; + background-color: #f04858; + border-color: #f04858; +} + +.btn-danger:not(:disabled):not(.disabled):active:focus, +.btn-danger:not(:disabled):not(.disabled).active:focus, +.show > .btn-danger.dropdown-toggle:focus { + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); +} + +.btn-link { + color: inherit; +} + +.btn-link:hover, +.btn-link:focus, +.btn-link:active, +.btn-link.active, +.open .dropdown-toggle.btn-link { + color: #18b090; + text-decoration: none; +} + +.btn-link:active, +.btn-link.active, +.open .dropdown-toggle.btn-link { + background-image: none; + box-shadow: none; +} + +.btn-link.disabled, +.btn-link.disabled:hover, +.btn-link.disabled:focus, +.btn-link.disabled:active, +.btn-link.disabled.active, +.btn-link[disabled], +.btn-link[disabled]:hover, +.btn-link[disabled]:focus, +.btn-link[disabled]:active, +.btn-link.active[disabled], +fieldset[disabled] .btn-link, +fieldset[disabled] .btn-link:hover, +fieldset[disabled] .btn-link:focus, +fieldset[disabled] .btn-link:active, +fieldset[disabled] .btn-link.active { + color: #cccccc; +} + +.btn-white { + color: inherit; + background: white; + border: 1px solid var(--border-color); +} + +.btn-white:hover, +.btn-white:focus, +.btn-white:active, +.btn-white.active, +.open .dropdown-toggle.btn-white, +.btn-white:active:focus, +.btn-white:active:hover, +.btn-white.active:hover, +.btn-white.active:focus { + color: inherit; + border: 1px solid #cccccc; +} + +.btn-white:active, +.btn-white.active { + box-shadow: 0 2px 5px rgba(0, 0, 0, 0.15) inset; +} + +.btn-white:active, +.btn-white.active, +.open .dropdown-toggle.btn-white { + background-image: none; +} + +.btn-white.disabled, +.btn-white.disabled:hover, +.btn-white.disabled:focus, +.btn-white.disabled:active, +.btn-white.disabled.active, +.btn-white[disabled], +.btn-white[disabled]:hover, +.btn-white[disabled]:focus, +.btn-white[disabled]:active, +.btn-white.active[disabled], +fieldset[disabled] .btn-white, +fieldset[disabled] .btn-white:hover, +fieldset[disabled] .btn-white:focus, +fieldset[disabled] .btn-white:active, +fieldset[disabled] .btn-white.active { + color: #cccccc; +} + +.form-control, +.form-control:focus, +.has-error .form-control:focus, +.has-success .form-control:focus, +.has-warning .form-control:focus, +.navbar-collapse, +.navbar-form, +.navbar-form-custom .form-control:focus, +.navbar-form-custom .form-control:hover, +.open .btn.dropdown-toggle, +.panel, +.popover, +.progress, +.progress-bar { + border-color: var(--bg); + color: var(--text); + box-shadow: none; +} + +.btn-outline { + color: inherit; + background-color: transparent; + transition: all .5s; +} + +.btn-rounded { + border-radius: 50px; +} + +.btn-large-dim { + width: 90px; + height: 90px; + font-size: 42px; +} + +button.dim { + display: inline-block; + text-decoration: none; + text-transform: uppercase; + text-align: center; + padding-top: 6px; + margin-right: 10px; + position: relative; + cursor: pointer; + border-radius: 5px; + font-weight: 600; + margin-bottom: 20px !important; +} + +button.dim:active { + top: 3px; +} + +button.btn-primary.dim { + box-shadow: inset 0 0 0 #189880, 0 5px 0 0 #189880, 0 10px 5px #999999 !important; +} + +button.btn-primary.dim:active { + box-shadow: inset 0 0 0 #189880, 0 2px 0 0 #189880, 0 5px 3px #999999 !important; +} + +button.btn-default.dim { + box-shadow: inset 0 0 0 #b0b0b0, 0 5px 0 0 #b0b0b0, 0 10px 5px #999999 !important; +} + +button.btn-default.dim:active { + box-shadow: inset 0 0 0 #b0b0b0, 0 2px 0 0 #b0b0b0, 0 5px 3px #999999 !important; +} + +button.btn-warning.dim { + box-shadow: inset 0 0 0 #f8a040, 0 5px 0 0 #f8a040, 0 10px 5px #999999 !important; +} + +button.btn-warning.dim:active { + box-shadow: inset 0 0 0 #f8a040, 0 2px 0 0 #f8a040, 0 5px 3px #999999 !important; +} + +button.btn-info.dim { + box-shadow: inset 0 0 0 #20b0b0, 0 5px 0 0 #20b0b0, 0 10px 5px #999999 !important; +} + +button.btn-info.dim:active { + box-shadow: inset 0 0 0 #20b0b0, 0 2px 0 0 #20b0b0, 0 5px 3px #999999 !important; +} + +button.btn-success.dim { + box-shadow: inset 0 0 0 #1870a8, 0 5px 0 0 #1870a8, 0 10px 5px #999999 !important; +} + +button.btn-success.dim:active { + box-shadow: inset 0 0 0 #1870a8, 0 2px 0 0 #1870a8, 0 5px 3px #999999 !important; +} + +button.btn-danger.dim { + box-shadow: inset 0 0 0 #e83850, 0 5px 0 0 #e83850, 0 10px 5px #999999 !important; +} + +button.btn-danger.dim:active { + box-shadow: inset 0 0 0 #e83850, 0 2px 0 0 #e83850, 0 5px 3px #999999 !important; +} + +button.dim:before { + font-size: 50px; + line-height: 1em; + font-weight: normal; + color: #fff; + display: block; + padding-top: 10px; +} + +button.dim:active:before { + top: 7px; + font-size: 50px; +} + +.btn:focus { + outline: none !important; +} + +.label { + background-color: #d0d8e0; + color: #606060; + font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; + font-weight: 600; + padding: 3px 8px; + text-shadow: none; + border-radius: 0.25em; + line-height: 1; + white-space: nowrap; +} + +.nav .label, +.ibox .label { + font-size: 10px; +} + +.badge { + background-color: #d0d8e0; + color: #606060; + font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; + font-size: 11px; + font-weight: 600; + padding-bottom: 4px; + padding-left: 6px; + padding-right: 6px; + text-shadow: none; + white-space: nowrap; +} + +.label-primary, +.badge-primary { + background-color: #18b090; + color: #ffffff; +} + +.label-success, +.badge-success { + background-color: #2080c8; + color: #ffffff; +} + +.label-warning, +.badge-warning { + background-color: #f8b058; + color: #ffffff; +} + +.label-warning-light, +.badge-warning-light { + background-color: #f8b058; + color: #ffffff; +} + +.label-danger, +.badge-danger { + background-color: #f05868; + color: #ffffff; +} + +.label-info, +.badge-info { + background-color: #20c8c8; + color: #ffffff; +} + +.label-inverse, +.badge-inverse { + background-color: #282828; + color: #ffffff; +} + +.label-white, +.badge-white { + background-color: #ffffff; + color: #606060; +} + +.label-white, +.badge-disable { + background-color: #283038; + color: #8890a0; +} + +/* TOOGLE SWICH */ +.onoffswitch { + position: relative; + width: 64px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; +} + +.onoffswitch-checkbox { + display: none; +} + +.onoffswitch-label { + display: block; + overflow: hidden; + cursor: pointer; + border: 2px solid #18b090; + border-radius: 2px; +} + +.onoffswitch-inner { + width: 200%; + margin-left: -100%; + -moz-transition: margin 0.3s ease-in 0s; + -webkit-transition: margin 0.3s ease-in 0s; + -o-transition: margin 0.3s ease-in 0s; + transition: margin 0.3s ease-in 0s; +} + +.onoffswitch-inner:before, +.onoffswitch-inner:after { + float: left; + width: 50%; + height: 20px; + padding: 0; + line-height: 20px; + font-size: 12px; + color: white; + font-family: Trebuchet, Arial, sans-serif; + font-weight: bold; + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; +} + +.onoffswitch-inner:before { + content: "ON"; + padding-left: 10px; + background-color: #18b090; + color: #ffffff; +} + +.onoffswitch-inner:after { + content: "OFF"; + padding-right: 10px; + background-color: #ffffff; + color: #999999; + text-align: right; +} + +.onoffswitch-switch { + width: 20px; + margin: 0; + background: #ffffff; + border: 2px solid #18b090; + border-radius: 2px; + position: absolute; + top: 0; + bottom: 0; + right: 44px; + -moz-transition: all 0.3s ease-in 0s; + -webkit-transition: all 0.3s ease-in 0s; + -o-transition: all 0.3s ease-in 0s; + transition: all 0.3s ease-in 0s; +} + +.onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-inner { + margin-left: 0; +} + +.onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-switch { + right: 0; +} + +.onoffswitch-checkbox:disabled + .onoffswitch-label .onoffswitch-inner:before { + background-color: #909090; +} + +.onoffswitch-checkbox:disabled + .onoffswitch-label, +.onoffswitch-checkbox:disabled + .onoffswitch-label .onoffswitch-switch { + border-color: #909090; +} + +/* CHOSEN PLUGIN */ +.chosen-container-single .chosen-single { + background: #ffffff; + box-shadow: none; + -moz-box-sizing: border-box; + border-radius: 2px; + cursor: text; + height: auto !important; + margin: 0; + min-height: 30px; + overflow: hidden; + padding: 4px 12px; + position: relative; + width: 100%; +} + +.chosen-container-multi .chosen-choices li.search-choice { + background: var(--bg-mid); + border: 1px solid var(--border-color); + border-radius: 2px; + box-shadow: none; + color: var(--text); + cursor: default; + line-height: 13px; + margin: 3px 0 3px 5px; + padding: 3px 20px 3px 5px; + position: relative; +} + +/* Tags Input Plugin */ +.bootstrap-tagsinput { + border: 1px solid var(--border-color); + box-shadow: none; +} + +/* PAGINATIN */ +.pagination > .active > a, +.pagination > .active > span, +.pagination > .active > a:hover, +.pagination > .active > span:hover, +.pagination > .active > a:focus, +.pagination > .active > span:focus { + border-color: #e0e0e0; + cursor: default; + z-index: 2; +} + +.pagination > li > a, +.pagination > li > span { + background-color: #ffffff; + border: 1px solid #e0e0e0; + color: inherit; + float: left; + line-height: 1.42857; + margin-left: -1px; + padding: 4px 10px; + position: relative; + text-decoration: none; +} + +.page-item.active .page-link { + background-color: #18b090; + border-color: #18b090; +} + +.page-link:focus { + box-shadow: none; +} + +.page-link:hover { + color: var(--text); +} + +.pagination .footable-page.active a { + background-color: #18b090; + border-color: #18b090; + color: white; +} + +/* TOOLTIPS */ +.tooltip-inner { + background-color: #304050; +} + +.tooltip.top .tooltip-arrow { + border-top-color: #304050; +} + +.tooltip.right .tooltip-arrow { + border-right-color: #304050; +} + +.tooltip.bottom .tooltip-arrow { + border-bottom-color: #304050; +} + +.tooltip.left .tooltip-arrow { + border-left-color: #304050; +} + +/* EASY PIE CHART*/ +.easypiechart { + position: relative; + text-align: center; +} + +.easypiechart .h2 { + margin-left: 10px; + margin-top: 10px; + display: inline-block; +} + +.easypiechart canvas { + top: 0; + left: 0; +} + +.easypiechart .easypie-text { + line-height: 1; + position: absolute; + top: 33px; + width: 100%; + z-index: 1; +} + +.easypiechart img { + margin-top: -4px; +} + +.jqstooltip { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} + +/* FULLCALENDAR */ +.fc-state-default { + background-color: #ffffff; + background-image: none; + background-repeat: repeat-x; + box-shadow: none; + color: #333333; + text-shadow: none; +} + +.fc-state-default { + border: 1px solid; +} + +.fc-button { + color: inherit; + border: 1px solid var(--border-color); + cursor: pointer; + display: inline-block; + height: 1.9em; + line-height: 1.9em; + overflow: hidden; + padding: 0 0.6em; + position: relative; + white-space: nowrap; +} + +.fc-state-active { + background-color: #18b090; + border-color: #18b090; + color: #ffffff; +} + +.fc-header-title h2 { + font-size: 16px; + font-weight: 600; + color: inherit; +} + +.fc-content .fc-widget-header, +.fc-content .fc-widget-content { + border-color: var(--border-color); + font-weight: normal; +} + +.fc-border-separate tbody { + background-color: #f8f8f8; +} + +.fc-state-highlight { + background: none repeat scroll 0 0 #fff8e0; +} + +.external-event { + padding: 5px 10px; + border-radius: 2px; + cursor: pointer; + margin-bottom: 5px; +} + +.fc-ltr .fc-event-hori.fc-event-end, +.fc-rtl .fc-event-hori.fc-event-start { + border-radius: 2px; +} + +.fc-event, +.fc-agenda .fc-event-time, +.fc-event a { + padding: 4px 6px; + background-color: #18b090; + /* background color */ + border-color: #18b090; + /* border color */ +} + +.fc-event-time, +.fc-event-title { + color: #707070; + padding: 0 1px; +} + +.ui-calendar .fc-event-time, +.ui-calendar .fc-event-title { + color: #fff; +} + +.fc-event-container a.fc-event { + color: #fff; +} + +/* Chat */ +.chat-activity-list .chat-element { + border-bottom: 1px solid var(--border-color); +} + +.chat-element:first-child { + margin-top: 0; +} + +.chat-element { + padding-bottom: 15px; +} + +.chat-element, +.chat-element .media { + margin-top: 15px; +} + +.chat-element, +.media-body { + overflow: hidden; +} + +.chat-element .media-body { + display: block; + width: auto; +} + +.chat-element > .float-left { + margin-right: 10px; +} + +.chat-element img.rounded-circle, +.dropdown-messages-box img.rounded-circle { + width: 38px; + height: 38px; +} + +.chat-element .well { + border: 1px solid var(--border-color); + box-shadow: none; + margin-top: 10px; + margin-bottom: 5px; + padding: 10px 20px; + font-size: 11px; + line-height: 16px; +} + +.chat-element .actions { + margin-top: 10px; +} + +.chat-element .photos { + margin: 10px 0; +} + +.right.chat-element > .float-right { + margin-left: 10px; +} + +.chat-photo { + max-height: 180px; + border-radius: 4px; + overflow: hidden; + margin-right: 10px; + margin-bottom: 10px; +} + +.chat { + margin: 0; + padding: 0; + list-style: none; +} + +.chat li { + margin-bottom: 10px; + padding-bottom: 5px; + border-bottom: 1px dotted #b0a8a8; +} + +.chat li.left .chat-body { + margin-left: 60px; +} + +.chat li.right .chat-body { + margin-right: 60px; +} + +.chat li .chat-body p { + margin: 0; + color: #787878; +} + +.panel .slidedown .glyphicon, +.chat .glyphicon { + margin-right: 5px; +} + +.chat-panel .panel-body { + height: 350px; + overflow-y: scroll; +} + +/* LIST GROUP */ +a.list-group-item.active, +a.list-group-item.active:hover, +a.list-group-item.active:focus { + background-color: #18b090; + border-color: #18b090; + color: #ffffff; + z-index: 2; +} + +.list-group-item-heading { + margin-top: 10px; +} + +.list-group-item-text { + margin: 0 0 10px; + color: inherit; + font-size: 12px; + line-height: inherit; +} + +.no-padding .list-group-item { + border-left: none; + border-right: none; + border-bottom: none; +} + +.no-padding .list-group-item:first-child { + border-left: none; + border-right: none; + border-bottom: none; + border-top: none; +} + +.no-padding .list-group { + margin-bottom: 0; +} + +.list-group-item { + background-color: inherit; + border: 1px solid transparent; + display: block; + margin-bottom: -1px; + padding: 10px 15px; + position: relative; +} + +.elements-list .list-group-item { + border-left: none; + border-right: none; + padding: 0; +} + +.elements-list .list-group-item:first-child { + border-left: none; + border-right: none; + border-top: none !important; +} + +.elements-list .list-group { + margin-bottom: 0; +} + +.elements-list a { + color: inherit; +} + +.elements-list .list-group-item a.active, +.elements-list .list-group-item a:hover { + background: var(--bg-mid); + color: inherit; + border-color: var(--border-color); + border-radius: 0; +} + +.elements-list li.active { + transition: none; +} + +.elements-list .nav-link { + padding: 15px 25px; +} + +.element-detail-box { + padding: 25px; +} + +/* FLOT CHART */ +.flot-chart { + display: block; + height: 200px; +} + +.widget .flot-chart.dashboard-chart { + display: block; + height: 120px; + margin-top: 40px; +} + +.flot-chart.dashboard-chart { + display: block; + height: 180px; + margin-top: 40px; +} + +.flot-chart-content { + width: 100%; + height: 100%; +} + +.flot-chart-pie-content { + width: 200px; + height: 200px; + margin: auto; +} + +.jqstooltip { + position: absolute; + display: block; + left: 0; + top: 0; + visibility: hidden; + background: #283038; + background-color: rgba(40, 48, 56, 0.8); + color: white; + text-align: left; + white-space: nowrap; + z-index: 10000; + padding: 5px 5px 5px 5px; + min-height: 22px; + border-radius: 3px; +} + +.jqsfield { + color: white; + text-align: left; +} + +.fh-150 { + height: 150px; +} + +.fh-200 { + height: 200px; +} + +.h-150 { + min-height: 150px; +} + +.h-200 { + min-height: 200px; +} + +.h-300 { + min-height: 300px; +} + +.w-150 { + min-width: 150px; +} + +.w-200 { + min-width: 200px; +} + +.w-300 { + min-width: 300px; +} + +.legendLabel { + padding-left: 5px; +} + +.stat-list li:first-child { + margin-top: 0; +} + +.stat-list { + list-style: none; + padding: 0; + margin: 0; +} + +.stat-percent { + float: right; +} + +.stat-list li { + margin-top: 15px; + position: relative; +} + +/* DATATABLES */ +table.dataTable thead .sorting, +table.dataTable thead .sorting_asc:after, +table.dataTable thead .sorting_desc, +table.dataTable thead .sorting_asc_disabled, +table.dataTable thead .sorting_desc_disabled { + background: transparent; +} + +.dataTables_wrapper { + padding-bottom: 30px; +} + +.dataTables_length { + float: left; +} + +.dataTables_filter label { + margin-right: 5px; +} + +.html5buttons { + float: right; +} + +.html5buttons a { + border: 1px solid var(--border-color); + background: #fff; + color: var(--text); + box-shadow: none; + padding: 6px 8px; + font-size: 12px; +} + +.html5buttons a:hover, +.html5buttons a:focus:active { + background-color: #eee; + color: inherit; + border-color: var(--border-color); +} + +div.dt-button-info { + z-index: 100; +} + +@media (max-width: 768px) { + .html5buttons { + float: none; + margin-top: 10px; + } + + .dataTables_length { + float: none; + } +} + +/* CIRCLE */ +.img-circle { + border-radius: 50%; +} + +.btn-circle { + width: 30px; + height: 30px; + padding: 6px 0; + border-radius: 15px; + text-align: center; + font-size: 12px; + line-height: 1.428571429; +} + +.btn-circle.btn-lg { + width: 50px; + height: 50px; + padding: 10px 16px; + border-radius: 25px; + font-size: 18px; + line-height: 1.33; +} + +.btn-circle.btn-xl { + width: 70px; + height: 70px; + padding: 10px 16px; + border-radius: 35px; + font-size: 24px; + line-height: 1.33; +} + +.show-grid [class^="col-"] { + padding-top: 10px; + padding-bottom: 10px; + border: 1px solid #ddd; + background-color: #eee !important; +} + +.show-grid { + margin: 15px 0; +} + +/* ANIMATION */ +.css-animation-box h1 { + font-size: 44px; +} + +.animation-efect-links a { + padding: 4px 6px; + font-size: 12px; +} + +#animation_box { + background-color: #f8f8f8; + border-radius: 16px; + width: 80%; + margin: 0 auto; + padding-top: 80px; +} + +.animation-text-box { + position: absolute; + margin-top: 40px; + left: 50%; + margin-left: -100px; + width: 200px; +} + +.animation-text-info { + position: absolute; + margin-top: -60px; + left: 50%; + margin-left: -100px; + width: 200px; + font-size: 10px; +} + +.animation-text-box h2 { + font-size: 54px; + font-weight: 600; + margin-bottom: 5px; +} + +.animation-text-box p { + font-size: 12px; + text-transform: uppercase; +} + +/* PEACE */ +.pace { + -webkit-pointer-events: none; + pointer-events: none; + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; +} + +.pace-inactive { + display: none; +} + +.pace .pace-progress { + background: #18b090; + position: fixed; + z-index: 2040; + top: 0; + right: 100%; + width: 100%; + height: 2px; +} + +.pace-inactive { + display: none; +} + +/* WIDGETS */ +.widget { + border-radius: 5px; + padding: 15px 20px; + margin-bottom: 10px; + margin-top: 10px; +} + +.widget.style1 h2 { + font-size: 30px; +} + +.widget h2, +.widget h3 { + margin-top: 5px; + margin-bottom: 0; +} + +.widget-text-box { + padding: 20px; + border: 1px solid var(--border-color); + background: #ffffff; +} + +.widget-head-color-box { + border-radius: 5px 5px 0 0; + margin-top: 10px; +} + +.widget .flot-chart { + height: 100px; +} + +.vertical-align div { + display: inline-block; + vertical-align: middle; +} + +.vertical-align h2, +.vertical-align h3 { + margin: 0; +} + +.todo-list { + list-style: none outside none; + margin: 0; + padding: 0; + font-size: 14px; +} + +.todo-list.small-list { + font-size: 12px; +} + +.todo-list.small-list > li { + background: var(--bg-mid); + border-left: none; + border-right: none; + border-radius: 4px; + color: inherit; + margin-bottom: 2px; + padding: 6px 6px 6px 12px; +} + +.todo-list.small-list .btn-xs, +.todo-list.small-list .btn-group-xs > .btn { + border-radius: 5px; + font-size: 10px; + line-height: 1.5; + padding: 1px 2px 1px 5px; +} + +.todo-list > li { + background: var(--bg-mid); + border-left: 6px solid var(--border-color); + border-right: 6px solid var(--border-color); + border-radius: 4px; + color: inherit; + margin-bottom: 2px; + padding: 10px; +} + +.todo-list .handle { + cursor: move; + display: inline-block; + font-size: 16px; + margin: 0 5px; +} + +.todo-list > li .label { + font-size: 9px; + margin-left: 10px; +} + +.check-link { + font-size: 16px; +} + +.todo-completed { + text-decoration: line-through; +} + +.geo-statistic h1 { + font-size: 36px; + margin-bottom: 0; +} + +.glyphicon.fa { + font-family: "FontAwesome"; +} + +/* INPUTS */ +.inline { + display: inline-block !important; +} + +.input-s-sm { + width: 120px; +} + +.input-s { + width: 200px; +} + +.form-control { + font-size: 0.9rem; +} + +select.form-control:not([size]):not([multiple]) { + height: 2.05rem; +} + +.input-sm, +.form-control-sm { + height: 31px; +} + +.input-s-lg { + width: 250px; +} + +.i-checks { + padding-left: 0; +} + +.form-control, +.single-line { + background-color: var(--bg); + background-image: none; + border: 1px solid var(--border-color); + border-radius: 8px; + color: var(--color); + display: block; + padding: 6px 12px; + transition: border-color 0.15s ease-in-out 0s, box-shadow 0.15s ease-in-out 0s; + width: 100%; +} + +.form-control:focus, +.single-line:focus { + border-color: var(--border-color); + color: var(--color); + border-color: #606070; +} + +.has-success .form-control, +.has-success .form-control:focus { + border-color: #18b090; +} + +.has-warning .form-control, +.has-warning .form-control:focus { + border-color: #f8b058; +} + +.has-error .form-control, +.has-error .form-control:focus { + border-color: #f05868; +} + +.has-success .control-label { + color: #18b090; +} + +.has-warning .control-label { + color: #f8b058; +} + +.has-error .control-label { + color: #f05868; +} + +.input-group-addon { + background-color: #fff; + border: 1px solid var(--border-color); + border-radius: 1px; + color: inherit; + font-size: 14px; + font-weight: 400; + line-height: 1; + padding: 9px 12px 4px 12px; + text-align: center; +} + +.input-daterange .input-group-addon { + margin: 0; +} + +.input-group.date .input-group-addon { + border-right: 0; +} + +.spinner-buttons.input-group-btn .btn-xs { + line-height: 1.13; +} + +.spinner-buttons.input-group-btn { + width: 20%; +} + +.noUi-connect { + background: none repeat scroll 0 0 #18b090; + box-shadow: none; +} + +.slider_red .noUi-connect { + background: none repeat scroll 0 0 #f05868; + box-shadow: none; +} + +/* UI Sortable */ +.ui-sortable .ibox-title { + background-color: rgba(0, 0, 0, 0.8); + cursor: move; +} + +.ui-sortable-placeholder { + border: 1px dashed #cccccc !important; + visibility: visible !important; + background: var(--border-color); +} + +.ibox.ui-sortable-placeholder { + margin: 0 0 23px !important; +} + +/* SWITCHES */ +.onoffswitch { + position: relative; + width: 54px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; +} + +.onoffswitch-checkbox { + display: none; +} + +.onoffswitch-label { + display: block; + overflow: hidden; + cursor: pointer; + border: 2px solid #18b090; + border-radius: 3px; +} + +.onoffswitch-inner { + display: block; + width: 200%; + margin-left: -100%; + -moz-transition: margin 0.3s ease-in 0s; + -webkit-transition: margin 0.3s ease-in 0s; + -o-transition: margin 0.3s ease-in 0s; + transition: margin 0.3s ease-in 0s; +} + +.onoffswitch-inner:before, +.onoffswitch-inner:after { + display: block; + float: left; + width: 50%; + height: 16px; + padding: 0; + line-height: 16px; + font-size: 10px; + color: white; + font-family: Trebuchet, Arial, sans-serif; + font-weight: bold; + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; +} + +.onoffswitch-inner:before { + content: "ON"; + padding-left: 7px; + background-color: #18b090; + color: #ffffff; +} + +.onoffswitch-inner:after { + content: "OFF"; + padding-right: 7px; + background-color: #ffffff; + color: #909090; + text-align: right; +} + +.onoffswitch-switch { + display: block; + width: 18px; + margin: 0; + background: #ffffff; + border: 2px solid #18b090; + border-radius: 3px; + position: absolute; + top: 0; + bottom: 0; + right: 36px; + -moz-transition: all 0.3s ease-in 0s; + -webkit-transition: all 0.3s ease-in 0s; + -o-transition: all 0.3s ease-in 0s; + transition: all 0.3s ease-in 0s; +} + +.onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-inner { + margin-left: 0; +} + +.onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-switch { + right: 0; +} + +/* jqGrid */ +.ui-jqgrid { + -moz-box-sizing: content-box; +} + +.ui-jqgrid-btable { + border-collapse: separate; +} + +.ui-jqgrid-htable { + border-collapse: separate; +} + +.ui-jqgrid-titlebar { + height: 40px; + line-height: 15px; + color: var(--text); + background-color: #f8f8f8; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); +} + +.ui-jqgrid .ui-jqgrid-title { + float: left; + margin: 1.1em 1em 0.2em; +} + +.ui-jqgrid .ui-jqgrid-titlebar { + position: relative; + border-left: 0 solid; + border-right: 0 solid; + border-top: 0 solid; +} + +.ui-widget-header { + background: none; + background-image: none; + background-color: #f8f8f8; + text-transform: uppercase; + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.ui-jqgrid tr.ui-row-ltr td { + border-right-color: inherit; + border-right-style: solid; + border-right-width: 1px; + text-align: left; + border-color: #e0e0e0; + background-color: inherit; +} + +.ui-search-toolbar input[type="text"] { + font-size: 12px; + height: 15px; + border: 1px solid #cccccc; + border-radius: 0; +} + +.ui-state-default, +.ui-widget-content .ui-state-default, +.ui-widget-header .ui-state-default { + background: #f8f8f8; + border: 1px solid #e0e0e0; + line-height: 15px; + font-weight: bold; + color: var(--text); + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); +} + +.ui-widget-content { + box-sizing: content-box; +} + +.ui-icon-triangle-1-n { + background-position: 1px -16px; +} + +.ui-jqgrid tr.ui-search-toolbar th { + border-top-width: 0 !important; + border-top-color: inherit !important; + border-top-style: ridge !important; +} + +.ui-state-hover, +.ui-widget-content .ui-state-hover, +.ui-state-focus, +.ui-widget-content .ui-state-focus, +.ui-widget-header .ui-state-focus { + background: #f8f8f8; + border-collapse: separate; +} + +.ui-state-highlight, +.ui-widget-content .ui-state-highlight, +.ui-widget-header .ui-state-highlight { + background: #f0f8ff; +} + +.ui-state-active, +.ui-widget-content .ui-state-active, +.ui-widget-header .ui-state-active { + border: 1px solid #e0e0e0; + background: #ffffff; + font-weight: normal; + color: #202020; +} + +.ui-jqgrid .ui-pg-input { + font-size: inherit; + width: 50px; + border: 1px solid #cccccc; + height: 15px; +} + +.ui-jqgrid .ui-pg-selbox { + display: block; + font-size: 1em; + height: 25px; + line-height: 18px; + margin: 0; + width: auto; +} + +.ui-jqgrid .ui-pager-control { + position: relative; +} + +.ui-jqgrid .ui-jqgrid-pager { + height: 32px; + position: relative; +} + +.ui-pg-table .navtable .ui-corner-all { + border-radius: 0; +} + +.ui-jqgrid .ui-pg-button:hover { + padding: 1px; + border: 0; +} + +.ui-jqgrid .loading { + position: absolute; + top: 45%; + left: 45%; + width: auto; + height: auto; + z-index: 101; + padding: 6px; + margin: 5px; + text-align: center; + font-weight: bold; + display: none; + border-width: 2px !important; + font-size: 11px; +} + +.ui-jqgrid .form-control { + height: 10px; + width: auto; + display: inline; + padding: 10px 12px; +} + +.ui-jqgrid-pager { + height: 32px; +} + +.ui-corner-all, +.ui-corner-top, +.ui-corner-left, +.ui-corner-tl { + border-top-left-radius: 0; +} + +.ui-corner-all, +.ui-corner-top, +.ui-corner-right, +.ui-corner-tr { + border-top-right-radius: 0; +} + +.ui-corner-all, +.ui-corner-bottom, +.ui-corner-left, +.ui-corner-bl { + border-bottom-left-radius: 0; +} + +.ui-corner-all, +.ui-corner-bottom, +.ui-corner-right, +.ui-corner-br { + border-bottom-right-radius: 0; +} + +.ui-widget-content { + border: 1px solid #ddd; +} + +.ui-jqgrid .ui-jqgrid-titlebar { + padding: 0; +} + +.ui-jqgrid .ui-jqgrid-titlebar { + border-bottom: 1px solid #ddd; +} + +.ui-jqgrid tr.jqgrow td { + padding: 6px; +} + +.ui-jqdialog .ui-jqdialog-titlebar { + padding: 10px 10px; +} + +.ui-jqdialog .ui-jqdialog-title { + float: none !important; +} + +.ui-jqdialog > .ui-resizable-se { + position: absolute; +} + +/* Nestable list */ +.dd { + position: relative; + display: block; + margin: 0; + padding: 0; + list-style: none; + font-size: 13px; + line-height: 20px; +} + +.dd-list { + display: block; + position: relative; + margin: 0; + padding: 0; + list-style: none; +} + +.dd-list .dd-list { + padding-left: 30px; +} + +.dd-collapsed .dd-list { + display: none; +} + +.dd-item, +.dd-empty, +.dd-placeholder { + display: block; + position: relative; + margin: 0; + padding: 0; + min-height: 20px; + font-size: 13px; + line-height: 20px; +} + +.dd-handle { + display: block; + margin: 5px 0; + padding: 5px 10px; + color: #333; + text-decoration: none; + border: 1px solid var(--border-color); + background: #f8f8f8; + -webkit-border-radius: 3px; + border-radius: 3px; + box-sizing: border-box; + -moz-box-sizing: border-box; +} + +.dd-handle span { + font-weight: bold; +} + +.dd-handle:hover { + background: var(--bg-mid); + cursor: pointer; + font-weight: bold; +} + +.dd-item > button { + display: block; + position: relative; + cursor: pointer; + float: left; + width: 25px; + height: 20px; + margin: 5px 0; + padding: 0; + text-indent: 100%; + white-space: nowrap; + overflow: hidden; + border: 0; + background: transparent; + font-size: 12px; + line-height: 1; + text-align: center; + font-weight: bold; +} + +.dd-item > button:before { + content: '+'; + display: block; + position: absolute; + width: 100%; + text-align: center; + text-indent: 0; +} + +.dd-item > button[data-action="collapse"]:before { + content: '-'; +} + +#nestable2 .dd-item > button { + font-family: FontAwesome; + height: 34px; + width: 33px; + color: #c0c0c0; +} + +#nestable2 .dd-item > button:before { + content: "\f067"; +} + +#nestable2 .dd-item > button[data-action="collapse"]:before { + content: "\f068"; +} + +.dd-placeholder, +.dd-empty { + margin: 5px 0; + padding: 0; + min-height: 30px; + background: #f0f8ff; + border: 1px dashed #b8c0c0; + box-sizing: border-box; + -moz-box-sizing: border-box; +} + +.dd-empty { + border: 1px dashed #bbb; + min-height: 100px; + background-color: #e8e8e8; + background-image: -webkit-linear-gradient(45deg, #ffffff 25%, transparent 25%, transparent 75%, #ffffff 75%, #ffffff), -webkit-linear-gradient(45deg, #ffffff 25%, transparent 25%, transparent 75%, #ffffff 75%, #ffffff); + background-image: -moz-linear-gradient(45deg, #ffffff 25%, transparent 25%, transparent 75%, #ffffff 75%, #ffffff), -moz-linear-gradient(45deg, #ffffff 25%, transparent 25%, transparent 75%, #ffffff 75%, #ffffff); + background-image: linear-gradient(45deg, #ffffff 25%, transparent 25%, transparent 75%, #ffffff 75%, #ffffff), linear-gradient(45deg, #ffffff 25%, transparent 25%, transparent 75%, #ffffff 75%, #ffffff); + background-size: 60px 60px; + background-position: 0 0, 30px 30px; +} + +.dd-dragel { + position: absolute; + z-index: 9999; + pointer-events: none; +} + +.dd-dragel > .dd-item .dd-handle { + margin-top: 0; +} + +.dd-dragel .dd-handle { + -webkit-box-shadow: 2px 4px 6px 0 rgba(0, 0, 0, 0.1); + box-shadow: 2px 4px 6px 0 rgba(0, 0, 0, 0.1); +} + +/** +* Nestable Extras +*/ +.nestable-lists { + display: block; + clear: both; + padding: 30px 0; + width: 100%; + border: 0; + border-top: 2px solid #ddd; + border-bottom: 2px solid #ddd; +} + +#nestable-menu { + padding: 0; + margin: 10px 0 20px 0; +} + +#nestable-output, +#nestable2-output { + width: 100%; + font-size: 0.75em; + line-height: 1.333333em; + font-family: open sans, lucida grande, lucida sans unicode, helvetica, arial, sans-serif; + padding: 5px; + box-sizing: border-box; + -moz-box-sizing: border-box; +} + +#nestable2 .dd-handle { + color: inherit; + border: 1px dashed var(--border-color); + background: var(--bg-mid); + padding: 10px; +} + +#nestable2 span.label { + margin-right: 10px; +} + +#nestable-output, +#nestable2-output { + font-size: 12px; + padding: 25px; + box-sizing: border-box; + -moz-box-sizing: border-box; +} + +/* CodeMirror */ +.CodeMirror { + border: 1px solid #eee; + height: auto; +} + +.CodeMirror-scroll { + overflow-y: hidden; + overflow-x: auto; +} + +/* Google Maps */ +.google-map { + height: 300px; +} + +/* Validation */ +label.error { + color: #d05868; + display: inline-block; + margin-left: 5px; +} + +.form-control.error { + border: 1px dotted #d05868; +} + +/* ngGrid */ +.gridStyle { + border: 1px solid #cccccc; + width: 100%; + height: 400px; +} + +.gridStyle2 { + border: 1px solid #cccccc; + width: 500px; + height: 300px; +} + +.ngH eaderCell { + border-right: none; + border-bottom: 1px solid var(--border-color); +} + +.ngCell { + border-right: none; +} + +.ngTopPanel { + background: #f8f8f8; +} + +.ngRow.even { + background: #f8f8f8; +} + +.ngRow.selected { + background: #e8f0f0; +} + +.ngRow { + border-bottom: 1px solid var(--border-color); +} + +.ngCell { + background-color: transparent; +} + +.ngHeaderCell { + border-right: none; +} + +/* Toastr custom style */ +#toast-container > div { + -moz-box-shadow: 0 0 3px #999; + -webkit-box-shadow: 0 0 3px #999; + box-shadow: 0 0 3px #999; + opacity: .9; + -ms-filter: alpha(opacity=90); + filter: alpha(opacity=90); +} + +#toast-container > :hover { + -moz-box-shadow: 0 0 4px #999; + -webkit-box-shadow: 0 0 4px #999; + box-shadow: 0 0 4px #999; + opacity: 1; + -ms-filter: alpha(opacity=100); + filter: alpha(opacity=100); + cursor: pointer; +} + +.toast { + background-color: #18b090; + border-color: var(--border-color); +} + +.toast-success { + background-color: #18b090; +} + +.toast-error { + background-color: #f05868; +} + +.toast-info { + background-color: #20c8c8; +} + +.toast-warning { + background-color: #f8b058; +} + +.toast-top-full-width { + margin-top: 20px; +} + +.toast-bottom-full-width { + margin-bottom: 20px; +} + +.toast { + z-index: 3000; +} + +.toast.toast-bootstrap { + background-color: white; +} + +.toast.toast-bootstrap .toast-body { + background-color: #ffffff; + font-size: .775rem; +} + +/* Notifie */ +.cg-notify-message.inspinia-notify { + background: #fff; + padding: 0; + box-shadow: 0 0 1px rgba(0, 0, 0, 0.1), 0 2px 4px rgba(0, 0, 0, 0.2); + -webkit-box-shadow: 0 0 1px rgba(0, 0, 0, 0.1), 0 2px 4px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 0 1px rgba(0, 0, 0, 0.1), 0 2px 4px rgba(0, 0, 0, 0.2); + border: none; + margin-top: 30px; + color: inherit; +} + +.inspinia-notify.alert-warning { + border-left: 6px solid #f8b058; +} + +.inspinia-notify.alert-success { + border-left: 6px solid #2080c8; +} + +.inspinia-notify.alert-danger { + border-left: 6px solid #f05868; +} + +.inspinia-notify.alert-info { + border-left: 6px solid #18b090; +} + +/* Image cropper style */ +.img-container, +.img-preview { + overflow: hidden; + text-align: center; + width: 100%; +} + +.img-preview-sm { + height: 130px; + width: 200px; +} + +/* Forum styles */ +.forum-post-container .media { + margin: 10px 10px 10px 10px; + padding: 20px 10px 20px 10px; + border-bottom: 1px solid var(--bg-mid); +} + +.forum-avatar { + float: left; + margin-right: 20px; + text-align: center; + width: 110px; +} + +.forum-avatar .rounded-circle { + height: 48px; + width: 48px; +} + +.author-info { + color: var(--text); + font-size: 11px; + margin-top: 5px; + text-align: center; +} + +.forum-post-info { + padding: 9px 12px 6px 12px; + background: #f8f8f8; + border: 1px solid var(--bg-mid); +} + +.media-body > .media { + background: #f8f8f8; + border-radius: 3px; + border: 1px solid var(--bg-mid); +} + +.forum-post-container .media-body .photos { + margin: 10px 0; +} + +.forum-photo { + max-width: 140px; + border-radius: 3px; +} + +.media-body > .media .forum-avatar { + width: 70px; + margin-right: 10px; +} + +.media-body > .media .forum-avatar .rounded-circle { + height: 38px; + width: 38px; +} + +.mid-icon { + font-size: 66px; +} + +.forum-item { + margin: 10px 0; + padding: 10px 0 20px; + border-bottom: 1px solid var(--bg-mid); +} + +.views-number { + font-size: 24px; + line-height: 18px; + font-weight: 400; +} + +.forum-container, +.forum-post-container { + padding: 30px !important; +} + +.forum-item small { + color: #999; +} + +.forum-item .forum-sub-title { + color: #999; + margin-left: 50px; +} + +.forum-title { + margin: 15px 0 15px 0; +} + +.forum-info { + text-align: center; +} + +.forum-desc { + color: #999; +} + +.forum-icon { + float: left; + width: 30px; + margin-right: 20px; + text-align: center; +} + +a.forum-item-title { + color: inherit; + display: block; + font-size: 18px; + font-weight: 600; +} + +a.forum-item-title:hover { + color: inherit; +} + +.forum-icon .fa { + font-size: 30px; + margin-top: 8px; + color: #999999; +} + +.forum-item.active .fa { + color: #18b090; +} + +.forum-item.active a.forum-item-title { + color: #18b090; +} + +@media (max-width: 992px) { + .forum-info { + margin: 15px 0 10px 0; + /* Comment this is you want to show forum info in small devices */ + display: none; + } + + .forum-desc { + float: none !important; + } +} + +/* New Timeline style */ +.vertical-container { + /* this class is used to give a max-width to the element it is applied to, and center it horizontally when it reaches that max-width */ + width: 90%; + max-width: 1170px; + margin: 0 auto; +} + +.vertical-container::after { + /* clearfix */ + content: ''; + display: table; + clear: both; +} + +#vertical-timeline { + position: relative; + padding: 0; + margin-top: 2em; + margin-bottom: 2em; +} + +#vertical-timeline::before { + content: ''; + position: absolute; + top: 0; + left: 18px; + height: 100%; + width: 4px; + background: var(--bg-mid); +} + +.vertical-timeline-content .btn { + float: right; +} + +#vertical-timeline.light-timeline:before { + background: var(--border-color); +} + +.dark-timeline .vertical-timeline-content:before { + border-color: transparent #f8f8f8 transparent transparent; +} + +.dark-timeline.center-orientation .vertical-timeline-content:before { + border-color: transparent transparent transparent #f8f8f8; +} + +.dark-timeline .vertical-timeline-block:nth-child(2n) .vertical-timeline-content:before, +.dark-timeline.center-orientation .vertical-timeline-block:nth-child(2n) .vertical-timeline-content:before { + border-color: transparent #f8f8f8 transparent transparent; +} + +.dark-timeline .vertical-timeline-content, +.dark-timeline.center-orientation .vertical-timeline-content { + background: #f8f8f8; +} + +@media only screen and (min-width: 1170px) { + #vertical-timeline.center-orientation { + margin-top: 3em; + margin-bottom: 3em; + } + + #vertical-timeline.center-orientation:before { + left: 50%; + margin-left: -2px; + } +} + +@media only screen and (max-width: 1170px) { + .center-orientation.dark-timeline .vertical-timeline-content:before { + border-color: transparent #f8f8f8 transparent transparent; + } +} + +.vertical-timeline-block { + position: relative; + margin: 2em 0; +} + +.vertical-timeline-block:after { + content: ""; + display: table; + clear: both; +} + +.vertical-timeline-block:first-child { + margin-top: 0; +} + +.vertical-timeline-block:last-child { + margin-bottom: 0; +} + +@media only screen and (min-width: 1170px) { + .center-orientation .vertical-timeline-block { + margin: 4em 0; + } + + .center-orientation .vertical-timeline-block:first-child { + margin-top: 0; + } + + .center-orientation .vertical-timeline-block:last-child { + margin-bottom: 0; + } +} + +.vertical-timeline-icon { + position: absolute; + top: 0; + left: 0; + width: 40px; + height: 40px; + border-radius: 50%; + font-size: 16px; + border: 3px solid var(--bg-mid); + text-align: center; +} + +.vertical-timeline-icon i { + display: block; + width: 24px; + height: 24px; + position: relative; + left: 50%; + top: 50%; + margin-left: -12px; + margin-top: -9px; +} + +@media only screen and (min-width: 1170px) { + .center-orientation .vertical-timeline-icon { + width: 50px; + height: 50px; + left: 50%; + margin-left: -25px; + -webkit-transform: translateZ(0); + -webkit-backface-visibility: hidden; + font-size: 19px; + } + + .center-orientation .vertical-timeline-icon i { + margin-left: -12px; + margin-top: -10px; + } + + .center-orientation .cssanimations .vertical-timeline-icon.is-hidden { + visibility: hidden; + } +} + +.vertical-timeline-content { + position: relative; + margin-left: 60px; + background: white; + border-radius: 0.25em; + padding: 1em; +} + +.vertical-timeline-content:after { + content: ""; + display: table; + clear: both; +} + +.vertical-timeline-content h2 { + font-weight: 400; + margin-top: 4px; +} + +.vertical-timeline-content p { + margin: 1em 0; + line-height: 1.6; +} + +.vertical-timeline-content .vertical-date { + float: left; + font-weight: 500; +} + +.vertical-date small { + color: #18b090; + font-weight: 400; +} + +.vertical-timeline-content::before { + content: ''; + position: absolute; + top: 16px; + right: 100%; + height: 0; + width: 0; + border: 7px solid transparent; + border-right: 7px solid white; +} + +@media only screen and (min-width: 768px) { + .vertical-timeline-content h2 { + font-size: 18px; + } + + .vertical-timeline-content p { + font-size: 13px; + } +} + +@media only screen and (min-width: 1170px) { + .center-orientation .vertical-timeline-content { + margin-left: 0; + padding: 1.6em; + width: 45%; + } + + .center-orientation .vertical-timeline-content::before { + top: 24px; + left: 100%; + border-color: transparent; + border-left-color: white; + } + + .center-orientation .vertical-timeline-content .btn { + float: left; + } + + .center-orientation .vertical-timeline-content .vertical-date { + position: absolute; + width: 100%; + left: 122%; + top: 2px; + font-size: 14px; + } + + .center-orientation .vertical-timeline-block:nth-child(even) .vertical-timeline-content { + float: right; + } + + .center-orientation .vertical-timeline-block:nth-child(even) .vertical-timeline-content::before { + top: 24px; + left: auto; + right: 100%; + border-color: transparent; + border-right-color: white; + } + + .center-orientation .vertical-timeline-block:nth-child(even) .vertical-timeline-content .btn { + float: right; + } + + .center-orientation .vertical-timeline-block:nth-child(even) .vertical-timeline-content .vertical-date { + left: auto; + right: 122%; + text-align: right; + } + + .center-orientation .cssanimations .vertical-timeline-content.is-hidden { + visibility: hidden; + } +} + +/* Tabs */ +.tabs-container .panel-body { + background: #fff; + border: 1px solid var(--border-color); + border-radius: 2px; + padding: 20px; + position: relative; +} + +.tabs-container .nav-tabs > li.active > a, +.tabs-container .nav-tabs > li.active > a:hover, +.tabs-container .nav-tabs > li.active > a:focus { + border: 1px solid var(--border-color); + border-bottom-color: transparent; + background-color: #fff; +} + +.tabs-container .nav-tabs > li { + float: left; + margin-bottom: -1px; +} + +.tabs-container .tab-pane .panel-body { + border-top: none; +} + +.tabs-container .nav-tabs > li.active > a, +.tabs-container .nav-tabs > li.active > a:hover, +.tabs-container .nav-tabs > li.active > a:focus { + border: 1px solid var(--border-color); + border-bottom-color: transparent; +} + +.tabs-container .nav-tabs { + border-bottom: 1px solid var(--border-color); +} + +.tabs-container .tab-pane .panel-body { + border-top: none; +} + +.tabs-container .tabs-left .tab-pane .panel-body, +.tabs-container .tabs-right .tab-pane .panel-body { + border-top: 1px solid var(--border-color); +} + +.tabs-container .tabs-below > .nav-tabs, +.tabs-container .tabs-right > .nav-tabs, +.tabs-container .tabs-left > .nav-tabs { + border-bottom: 0; +} + +.tabs-container .tabs-left .panel-body { + position: static; +} + +.tabs-container .tabs-left > .nav-tabs, +.tabs-container .tabs-right > .nav-tabs { + width: 20%; +} + +.tabs-container .tabs-left .panel-body { + width: 80%; + margin-left: 20%; +} + +.tabs-container .tabs-right .panel-body { + width: 80%; + margin-right: 20%; +} + +.tabs-container .tab-content > .tab-pane, +.tabs-container .pill-content > .pill-pane { + display: none; +} + +.tabs-container .tab-content > .active, +.tabs-container .pill-content > .active { + display: block; +} + +.tabs-container .tabs-below > .nav-tabs { + border-top: 1px solid var(--border-color); +} + +.tabs-container .tabs-below > .nav-tabs > li { + margin-top: -1px; + margin-bottom: 0; +} + +.tabs-container .tabs-below > .nav-tabs > li > a { + -webkit-border-radius: 0 0 4px 4px; + -moz-border-radius: 0 0 4px 4px; + border-radius: 0 0 4px 4px; +} + +.tabs-container .tabs-below > .nav-tabs > li > a:hover, +.tabs-container .tabs-below > .nav-tabs > li > a:focus { + border-top-color: var(--border-color); + border-bottom-color: transparent; +} + +.tabs-container .tabs-left > .nav-tabs > li, +.tabs-container .tabs-right > .nav-tabs > li { + float: none; + word-break: break-word; + width: 100%; +} + +.tabs-container .tabs-left > .nav-tabs > li > a, +.tabs-container .tabs-right > .nav-tabs > li > a { + margin-right: 0; + margin-bottom: 3px; +} + +.tabs-container .tabs-left > .nav-tabs { + float: left; + margin-right: 19px; +} + +.tabs-container .tabs-left > .nav-tabs > li > a { + margin-right: -1px; + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px; + border-radius: 4px 0 0 4px; +} + +.tabs-container .tabs-left > .nav-tabs a.active, +.tabs-container .tabs-left > .nav-tabs a.active:hover, +.tabs-container .tabs-left > .nav-tabs a.active:focus { + border-color: var(--border-color) transparent var(--border-color) var(--border-color); +} + +.tabs-container .tabs-right > .nav-tabs { + float: right; + margin-left: 19px; +} + +.tabs-container .tabs-right > .nav-tabs > li > a { + margin-left: -1px; + -webkit-border-radius: 0 4px 4px 0; + -moz-border-radius: 0 4px 4px 0; + border-radius: 0 4px 4px 0; +} + +.tabs-container .tabs-right > .nav-tabs a.active, +.tabs-container .tabs-right > .nav-tabs a.active:hover, +.tabs-container .tabs-right > .nav-tabs a.active:focus { + border-color: var(--border-color) var(--border-color) var(--border-color) transparent; + z-index: 1; +} + +.tabs-container .tabs-right > .nav-tabs li { + z-index: 1; +} + +.nav-tabs .nav-link:not(.active):focus, +.nav-tabs .nav-link:not(.active):hover { + border-color: transparent; +} + +@media (max-width: 767px) { + .tabs-container .nav-tabs > li { + float: none !important; + } + + .tabs-container .nav-tabs > li.active > a { + border-bottom: 1px solid var(--border-color) !important; + margin: 0; + } +} + +/* jsvectormap */ +.jvectormap-container { + width: 100%; + height: 100%; + position: relative; + overflow: hidden; +} + +.jvectormap-tip { + position: absolute; + display: none; + border: solid 1px #cccccc; + border-radius: 3px; + background: #282828; + color: white; + font-family: sans-serif, Verdana; + font-size: smaller; + padding: 5px; +} + +.jvectormap-zoomin, +.jvectormap-zoomout, +.jvectormap-goback { + position: absolute; + left: 10px; + border-radius: 3px; + background: #18b090; + padding: 3px; + color: white; + cursor: pointer; + line-height: 10px; + text-align: center; + box-sizing: content-box; +} + +.jvectormap-zoomin, +.jvectormap-zoomout { + width: 10px; + height: 10px; +} + +.jvectormap-zoomin { + top: 10px; +} + +.jvectormap-zoomout { + top: 30px; +} + +.jvectormap-goback { + bottom: 10px; + z-index: 1000; + padding: 6px; +} + +.jvectormap-spinner { + position: absolute; + left: 0; + top: 0; + right: 0; + bottom: 0; + background: center no-repeat url(data:image/gif;base64,R0lGODlhIAAgAPMAAP///wAAAMbGxoSEhLa2tpqamjY2NlZWVtjY2OTk5Ly8vB4eHgQEBAAAAAAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh/hpDcmVhdGVkIHdpdGggYWpheGxvYWQuaW5mbwAh+QQJCgAAACwAAAAAIAAgAAAE5xDISWlhperN52JLhSSdRgwVo1ICQZRUsiwHpTJT4iowNS8vyW2icCF6k8HMMBkCEDskxTBDAZwuAkkqIfxIQyhBQBFvAQSDITM5VDW6XNE4KagNh6Bgwe60smQUB3d4Rz1ZBApnFASDd0hihh12BkE9kjAJVlycXIg7CQIFA6SlnJ87paqbSKiKoqusnbMdmDC2tXQlkUhziYtyWTxIfy6BE8WJt5YJvpJivxNaGmLHT0VnOgSYf0dZXS7APdpB309RnHOG5gDqXGLDaC457D1zZ/V/nmOM82XiHRLYKhKP1oZmADdEAAAh+QQJCgAAACwAAAAAIAAgAAAE6hDISWlZpOrNp1lGNRSdRpDUolIGw5RUYhhHukqFu8DsrEyqnWThGvAmhVlteBvojpTDDBUEIFwMFBRAmBkSgOrBFZogCASwBDEY/CZSg7GSE0gSCjQBMVG023xWBhklAnoEdhQEfyNqMIcKjhRsjEdnezB+A4k8gTwJhFuiW4dokXiloUepBAp5qaKpp6+Ho7aWW54wl7obvEe0kRuoplCGepwSx2jJvqHEmGt6whJpGpfJCHmOoNHKaHx61WiSR92E4lbFoq+B6QDtuetcaBPnW6+O7wDHpIiK9SaVK5GgV543tzjgGcghAgAh+QQJCgAAACwAAAAAIAAgAAAE7hDISSkxpOrN5zFHNWRdhSiVoVLHspRUMoyUakyEe8PTPCATW9A14E0UvuAKMNAZKYUZCiBMuBakSQKG8G2FzUWox2AUtAQFcBKlVQoLgQReZhQlCIJesQXI5B0CBnUMOxMCenoCfTCEWBsJColTMANldx15BGs8B5wlCZ9Po6OJkwmRpnqkqnuSrayqfKmqpLajoiW5HJq7FL1Gr2mMMcKUMIiJgIemy7xZtJsTmsM4xHiKv5KMCXqfyUCJEonXPN2rAOIAmsfB3uPoAK++G+w48edZPK+M6hLJpQg484enXIdQFSS1u6UhksENEQAAIfkECQoAAAAsAAAAACAAIAAABOcQyEmpGKLqzWcZRVUQnZYg1aBSh2GUVEIQ2aQOE+G+cD4ntpWkZQj1JIiZIogDFFyHI0UxQwFugMSOFIPJftfVAEoZLBbcLEFhlQiqGp1Vd140AUklUN3eCA51C1EWMzMCezCBBmkxVIVHBWd3HHl9JQOIJSdSnJ0TDKChCwUJjoWMPaGqDKannasMo6WnM562R5YluZRwur0wpgqZE7NKUm+FNRPIhjBJxKZteWuIBMN4zRMIVIhffcgojwCF117i4nlLnY5ztRLsnOk+aV+oJY7V7m76PdkS4trKcdg0Zc0tTcKkRAAAIfkECQoAAAAsAAAAACAAIAAABO4QyEkpKqjqzScpRaVkXZWQEximw1BSCUEIlDohrft6cpKCk5xid5MNJTaAIkekKGQkWyKHkvhKsR7ARmitkAYDYRIbUQRQjWBwJRzChi9CRlBcY1UN4g0/VNB0AlcvcAYHRyZPdEQFYV8ccwR5HWxEJ02YmRMLnJ1xCYp0Y5idpQuhopmmC2KgojKasUQDk5BNAwwMOh2RtRq5uQuPZKGIJQIGwAwGf6I0JXMpC8C7kXWDBINFMxS4DKMAWVWAGYsAdNqW5uaRxkSKJOZKaU3tPOBZ4DuK2LATgJhkPJMgTwKCdFjyPHEnKxFCDhEAACH5BAkKAAAALAAAAAAgACAAAATzEMhJaVKp6s2nIkolIJ2WkBShpkVRWqqQrhLSEu9MZJKK9y1ZrqYK9WiClmvoUaF8gIQSNeF1Er4MNFn4SRSDARWroAIETg1iVwuHjYB1kYc1mwruwXKC9gmsJXliGxc+XiUCby9ydh1sOSdMkpMTBpaXBzsfhoc5l58Gm5yToAaZhaOUqjkDgCWNHAULCwOLaTmzswadEqggQwgHuQsHIoZCHQMMQgQGubVEcxOPFAcMDAYUA85eWARmfSRQCdcMe0zeP1AAygwLlJtPNAAL19DARdPzBOWSm1brJBi45soRAWQAAkrQIykShQ9wVhHCwCQCACH5BAkKAAAALAAAAAAgACAAAATrEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq+E71SRQeyqUToLA7VxF0JDyIQh/MVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiRMDjI0Fd30/iI2UA5GSS5UDj2l6NoqgOgN4gksEBgYFf0FDqKgHnyZ9OX8HrgYHdHpcHQULXAS2qKpENRg7eAMLC7kTBaixUYFkKAzWAAnLC7FLVxLWDBLKCwaKTULgEwbLA4hJtOkSBNqITT3xEgfLpBtzE/jiuL04RGEBgwWhShRgQExHBAAh+QQJCgAAACwAAAAAIAAgAAAE7xDISWlSqerNpyJKhWRdlSAVoVLCWk6JKlAqAavhO9UkUHsqlE6CwO1cRdCQ8iEIfzFVTzLdRAmZX3I2SfZiCqGk5dTESJeaOAlClzsJsqwiJwiqnFrb2nS9kmIcgEsjQydLiIlHehhpejaIjzh9eomSjZR+ipslWIRLAgMDOR2DOqKogTB9pCUJBagDBXR6XB0EBkIIsaRsGGMMAxoDBgYHTKJiUYEGDAzHC9EACcUGkIgFzgwZ0QsSBcXHiQvOwgDdEwfFs0sDzt4S6BK4xYjkDOzn0unFeBzOBijIm1Dgmg5YFQwsCMjp1oJ8LyIAACH5BAkKAAAALAAAAAAgACAAAATwEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq+E71SRQeyqUToLA7VxF0JDyIQh/MVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiUd6GGl6NoiPOH16iZKNlH6KmyWFOggHhEEvAwwMA0N9GBsEC6amhnVcEwavDAazGwIDaH1ipaYLBUTCGgQDA8NdHz0FpqgTBwsLqAbWAAnIA4FWKdMLGdYGEgraigbT0OITBcg5QwPT4xLrROZL6AuQAPUS7bxLpoWidY0JtxLHKhwwMJBTHgPKdEQAACH5BAkKAAAALAAAAAAgACAAAATrEMhJaVKp6s2nIkqFZF2VIBWhUsJaTokqUCoBq+E71SRQeyqUToLA7VxF0JDyIQh/MVVPMt1ECZlfcjZJ9mIKoaTl1MRIl5o4CUKXOwmyrCInCKqcWtvadL2SYhyASyNDJ0uIiUd6GAULDJCRiXo1CpGXDJOUjY+Yip9DhToJA4RBLwMLCwVDfRgbBAaqqoZ1XBMHswsHtxtFaH1iqaoGNgAIxRpbFAgfPQSqpbgGBqUD1wBXeCYp1AYZ19JJOYgH1KwA4UBvQwXUBxPqVD9L3sbp2BNk2xvvFPJd+MFCN6HAAIKgNggY0KtEBAAh+QQJCgAAACwAAAAAIAAgAAAE6BDISWlSqerNpyJKhWRdlSAVoVLCWk6JKlAqAavhO9UkUHsqlE6CwO1cRdCQ8iEIfzFVTzLdRAmZX3I2SfYIDMaAFdTESJeaEDAIMxYFqrOUaNW4E4ObYcCXaiBVEgULe0NJaxxtYksjh2NLkZISgDgJhHthkpU4mW6blRiYmZOlh4JWkDqILwUGBnE6TYEbCgevr0N1gH4At7gHiRpFaLNrrq8HNgAJA70AWxQIH1+vsYMDAzZQPC9VCNkDWUhGkuE5PxJNwiUK4UfLzOlD4WvzAHaoG9nxPi5d+jYUqfAhhykOFwJWiAAAIfkECQoAAAAsAAAAACAAIAAABPAQyElpUqnqzaciSoVkXVUMFaFSwlpOCcMYlErAavhOMnNLNo8KsZsMZItJEIDIFSkLGQoQTNhIsFehRww2CQLKF0tYGKYSg+ygsZIuNqJksKgbfgIGepNo2cIUB3V1B3IvNiBYNQaDSTtfhhx0CwVPI0UJe0+bm4g5VgcGoqOcnjmjqDSdnhgEoamcsZuXO1aWQy8KAwOAuTYYGwi7w5h+Kr0SJ8MFihpNbx+4Erq7BYBuzsdiH1jCAzoSfl0rVirNbRXlBBlLX+BP0XJLAPGzTkAuAOqb0WT5AH7OcdCm5B8TgRwSRKIHQtaLCwg1RAAAOwAAAAAAAAAAAA==); +} + +.jvectormap-legend-title { + font-weight: bold; + font-size: 14px; + text-align: center; +} + +.jvectormap-legend-cnt { + position: absolute; +} + +.jvectormap-legend-cnt-h { + bottom: 0; + right: 0; +} + +.jvectormap-legend-cnt-v { + top: 0; + right: 0; +} + +.jvectormap-legend { + background: black; + color: white; + border-radius: 3px; +} + +.jvectormap-legend-cnt-h .jvectormap-legend { + float: left; + margin: 0 10px 10px 0; + padding: 3px 3px 1px 3px; +} + +.jvectormap-legend-cnt-h .jvectormap-legend .jvectormap-legend-tick { + float: left; +} + +.jvectormap-legend-cnt-v .jvectormap-legend { + margin: 10px 10px 0 0; + padding: 3px; +} + +.jvectormap-legend-cnt-h .jvectormap-legend-tick { + width: 40px; +} + +.jvectormap-legend-cnt-h .jvectormap-legend-tick-sample { + height: 15px; +} + +.jvectormap-legend-cnt-v .jvectormap-legend-tick-sample { + height: 20px; + width: 20px; + display: inline-block; + vertical-align: middle; +} + +.jvectormap-legend-tick-text { + font-size: 12px; +} + +.jvectormap-legend-cnt-h .jvectormap-legend-tick-text { + text-align: center; +} + +.jvectormap-legend-cnt-v .jvectormap-legend-tick-text { + display: inline-block; + vertical-align: middle; + line-height: 20px; + padding-left: 3px; +} + +/*Slick Carousel */ +.slick-prev:before, +.slick-next:before { + color: #18b090 !important; +} + +/* Payments */ +.payment-card { + background: #ffffff; + padding: 20px; + margin-bottom: 25px; + border: 1px solid var(--border-color); +} + +.payment-icon-big { + font-size: 60px; + color: #d0d8e0; +} + +.payments-method.panel-group .panel + .panel { + margin-top: -1px; +} + +.payments-method .panel-heading { + padding: 15px; + background-color: var(--bg-mid); +} + +.payments-method .panel-default { + border: 1px solid var(--border-color); +} + +.payments-method .panel { + border-radius: 0; +} + +.payments-method .panel-heading h5 { + margin-bottom: 5px; +} + +.payments-method .panel-heading i { + font-size: 26px; +} + +/* Select2 custom styles */ +.select2-container--bootstrap4 .select2-results__option--highlighted, +.select2-container--bootstrap4 .select2-results__option--highlighted.select2-results__option[aria-selected=true] { + background-color: #18b090; +} + +.select2-container--bootstrap4 .select2-selection, +.select2-container--bootstrap4 .select2-dropdown.select2-dropdown--above, +.select2-container--bootstrap4 .select2-dropdown { + border-color: var(--border-color); +} + +.select2-container :focus { + outline: none; +} + +.select2-container--bootstrap4.select2-container--focus .select2-selection { + box-shadow: none; + border-color: #18b090; +} + +.select2-container--bootstrap4 .select2-selection__clear { + margin-top: 0.9em; +} + +/* Tour */ +.tour-tour .btn.btn-default { + background-color: #ffffff; + border: 1px solid #cccccc; + color: inherit; +} + +.tour-step-backdrop { + z-index: 2101; +} + +.tour-backdrop { + z-index: 2100; + opacity: .7; +} + +.popover[class*=tour-] { + z-index: 2100; +} + +.popover-header { + margin-top: 0; +} + +body.tour-open .animated { + animation-fill-mode: initial; +} + +.tour-tour .btn.btn-secondary { + background-color: #ffffff; + border: 1px solid #cccccc; + color: inherit; +} + +/* Resizable */ +.resizable-panels .ibox { + clear: none; + margin: 10px; + float: left; + overflow: hidden; + min-height: 150px; + min-width: 150px; +} + +.resizable-panels .ibox .ibox-content { + height: calc(100% - 49px); +} + +.ui-resizable-helper { + background: rgba(204, 204, 204, 0.4); +} + +/* Wizard step fix */ +.wizard > .content > .body { + position: relative; +} + +/* PDF js style */ +.pdf-toolbar { + max-width: 600px; + margin: 0 auto; +} + +.pdf-toolbar .input-group { + width: 100px; +} + +/* Dropzone */ +.dropzone { + min-height: 140px; + border: 1px dashed #18b090; + background: white; + padding: 20px 20px; +} + +.dropzone .dz-message { + font-size: 16px; +} + +/* Activity stream */ +.stream { + position: relative; + padding: 10px 0; +} + +.stream:first-child .stream-badge:before { + top: 10px; +} + +.stream:last-child .stream-badge:before { + height: 30px; +} + +.stream .stream-badge { + width: 50px; +} + +.stream .stream-badge i { + border: 1px solid var(--border-color); + border-radius: 50%; + padding: 6px; + color: #808088; + position: absolute; + background-color: #ffffff; + left: 8px; +} + +.stream .stream-badge i.fa-circle { + color: #cccccc; +} + +.stream .stream-badge i.bg-success { + color: #ffffff; + background-color: #2080c8; + border-color: #2080c8; +} + +.stream .stream-badge i.bg-primary { + color: #ffffff; + background-color: #18b090; + border-color: #18b090; +} + +.stream .stream-badge i.bg-warning { + color: #ffffff; + background-color: #f8b058; + border-color: #f8b058; +} + +.stream .stream-badge i.bg-info { + color: #ffffff; + background-color: #20c8c8; + border-color: #20c8c8; +} + +.stream .stream-badge i.bg-danger { + color: #ffffff; + background-color: #f05868; + border-color: #f05868; +} + +.stream .stream-badge:before { + content: ''; + width: 1px; + background-color: var(--border-color); + position: absolute; + top: 0; + bottom: 0; + left: 20px; +} + +.stream .stream-info { + font-size: 12px; + margin-bottom: 5px; +} + +.stream .stream-info img { + border-radius: 50%; + width: 18px; + height: 18px; + margin-right: 2px; + margin-top: -4px; +} + +.stream .stream-info .date { + color: #999999; + font-size: 80%; +} + +.stream .stream-panel { + margin-left: 55px; +} + +.stream-small { + margin: 10px 0; +} + +.stream-small .label { + padding: 2px 6px; + margin-right: 2px; +} + +/* Touch Spin */ +.bootstrap-touchspin-postfix.input-group-addon { + padding: inherit; +} + +.bootstrap-touchspin-postfix .input-group-text { + background-color: inherit; + line-height: 1; + border: none; +} + +/* Code */ +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 1.42857143; + color: #333; + word-break: break-all; + word-wrap: break-word; + background-color: var(--bg-mid); + border: 1px solid #d0d8e0; + border-radius: 2px; +} + +code, +kbd, +pre, +samp { + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; +} + +.sidebar-panel { + width: 220px; + background: var(--border-color); + padding: 10px 20px; + position: absolute; + right: 0; + height: calc(100% - 62px); +} + +.sidebar-panel .feed-element img.rounded-circle { + width: 32px; + height: 32px; +} + +.sidebar-panel .feed-element, +.media-body, +.sidebar-panel p { + font-size: 12px; +} + +.sidebar-panel .feed-element { + margin-top: 20px; + padding-bottom: 0; +} + +.sidebar-panel .list-group { + margin-bottom: 10px; +} + +.sidebar-panel .list-group .list-group-item { + padding: 5px 0; + font-size: 12px; + border: 0; +} + +.sidebar-content .wrapper, +.wrapper.sidebar-content { + padding-right: 230px !important; +} + +.body-small .sidebar-content .wrapper, +.body-small .wrapper.sidebar-content { + padding-right: 20px !important; +} + +#right-sidebar { + background-color: #fff; + border-left: 1px solid var(--border-color); + border-top: 1px solid var(--border-color); + overflow: hidden; + position: fixed; + top: 60px; + width: 260px !important; + z-index: 1009; + bottom: 0; + right: -260px; +} + +#right-sidebar.sidebar-open { + right: 0; +} + +#right-sidebar.sidebar-open.sidebar-top { + top: 0; + border-top: none; +} + +.sidebar-container ul.nav-tabs { + border: none; +} + +.sidebar-container ul.nav-tabs.navs-4 li { + width: 25%; +} + +.sidebar-container ul.nav-tabs.navs-3 li { + width: 33.3333%; +} + +.sidebar-container ul.nav-tabs.navs-2 li { + width: 50%; +} + +.sidebar-container ul.nav-tabs li { + border: none; +} + +.sidebar-container ul.nav-tabs li a { + border: none; + padding: 12px 10px; + margin: 0; + border-radius: 0; + background: var(--base-color); + color: #fff; + text-align: center; + border-right: 1px solid #304858; +} + +.sidebar-container ul.nav-tabs li.active a { + border: none; + background: #f8f8f8; + color: var(--text); + font-weight: bold; +} + +.sidebar-container .nav-tabs > li.active > a:hover, +.sidebar-container .nav-tabs > li.active > a:focus { + border: none; +} + +.sidebar-container ul.sidebar-list { + margin: 0; + padding: 0; +} + +.sidebar-container ul.sidebar-list li { + border-bottom: 1px solid var(--border-color); + padding: 15px 20px; + list-style: none; + font-size: 12px; +} + +.sidebar-container .sidebar-message:nth-child(2n+2) { + background: #f8f8f8; +} + +.sidebar-container ul.sidebar-list li a { + text-decoration: none; + color: inherit; +} + +.sidebar-container .sidebar-content { + padding: 15px 20px; + font-size: 12px; +} + +.sidebar-container .sidebar-title { + background: #f8f8f8; + padding: 20px; + border-bottom: 1px solid var(--border-color); +} + +.sidebar-container .sidebar-title h3 { + margin-bottom: 3px; + padding-left: 2px; +} + +.sidebar-container .tab-content h4 { + margin-bottom: 5px; +} + +.sidebar-container .sidebar-message > a > .float-left { + margin-right: 10px; +} + +.sidebar-container .sidebar-message > a { + text-decoration: none; + color: inherit; +} + +.sidebar-container .sidebar-message { + padding: 15px 20px; +} + +.sidebar-container .sidebar-message .media-body { + display: block; + width: auto; +} + +.sidebar-container .sidebar-message .message-avatar { + height: 38px; + width: 38px; + border-radius: 50%; +} + +.sidebar-container .setings-item { + padding: 15px 20px; + border-bottom: 1px solid var(--border-color); +} + +body { + font-family: SourceCodePro, Consolas, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,"Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + background-color: var(--base-color); + font-size: 13px; + color: var(--text); + overflow-x: hidden; +} + +html, +body { + height: 100%; +} + +body.full-height-layout #wrapper, +body.full-height-layout #page-wrapper { + height: 100%; +} + +#page-wrapper { + min-height: 100vh; +} + +body.boxed-layout { + background: url('patterns/shattered.png'); +} + +body.boxed-layout #wrapper { + background-color: #304050; + max-width: 1200px; + margin: 0 auto; + -webkit-box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.75); + -moz-box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.75); + box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.75); +} + +.top-navigation.boxed-layout #wrapper, +.boxed-layout #wrapper.top-navigation { + max-width: 1300px !important; +} + +.block { + display: block; +} + +.clear { + display: block; + overflow: hidden; +} + +a { + cursor: pointer; +} + +a:hover, +a:focus { + text-decoration: none; +} + +.border-bottom { + border-bottom: 1px solid var(--border-color) !important; +} + +.font-bold { + font-weight: 600; +} + +.font-normal { + font-weight: 400; +} + +.text-uppercase { + text-transform: uppercase; +} + +.font-italic { + font-style: italic; +} + +.b-r { + border-right: 1px solid var(--border-color); +} + +.hr-line-dashed { + border-top: 1px dashed var(--border-color); + color: #ffffff; + background-color: #ffffff; + height: 1px; + margin: 20px 0; +} + +.hr-line-solid { + border-bottom: 1px solid var(--border-color); + background-color: rgba(0, 0, 0, 0); + border-style: solid !important; + margin-top: 15px; + margin-bottom: 15px; +} + +video { + width: 100% !important; + height: auto !important; +} + +/* GALLERY */ +.gallery > .row > div { + margin-bottom: 15px; +} + +.fancybox img { + margin-bottom: 5px; + /* Only for demo */ + width: 24%; +} + +/* Summernote text editor */ +.note-editor { + height: auto !important; +} + +.note-editor.fullscreen { + z-index: 2050; +} + +.note-editor.note-frame.fullscreen { + z-index: 2020; +} + +.note-editor.note-frame .note-editing-area .note-editable { + color: var(--text); + padding: 15px; +} + +.note-editor.note-frame { + border: none; +} + +.note-editor.panel { + margin-bottom: 0; +} + +/* MODAL */ +.modal-content { + background-clip: padding-box; + background-color: #ffffff; + border: 1px solid rgba(0, 0, 0, 0); + border-radius: 4px; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3); + outline: 0 none; + position: relative; +} + +.modal-dialog { + z-index: 2200; +} + +.modal-body { + padding: 20px 30px 30px 30px; +} + +.inmodal .modal-body { + background: #f8f8f8; +} + +.inmodal .modal-header { + padding: 30px 15px; + text-align: center; + display: block; +} + +.animated.modal.fade .modal-dialog { + -webkit-transform: none; + -ms-transform: none; + -o-transform: none; + transform: none; +} + +.inmodal .modal-title { + font-size: 26px; +} + +.inmodal .modal-icon { + font-size: 84px; + color: #e0e0e0; +} + +.modal-footer { + margin-top: 0; +} + +/* WRAPPERS */ +#wrapper { + width: 100%; + overflow-x: hidden; + display: -ms-flex; + display: -webkit-flex; + display: flex; +} + +.wrapper { + padding: 0 20px; +} + +.page-content { + flex: 1; + position: relative; + z-index: 0; +} + +.wrapper-content { + padding: 20px 20px 35px 20px; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + overflow: auto; +} + +#page-wrapper { + padding: 0; + position: relative !important; + flex-shrink: 1; + width: calc(100% - 220px); + display: flex; + flex-direction: column; +} + +@media (min-width: 768px) { + #page-wrapper { + position: inherit; + } +} + +.title-action { + text-align: right; + padding-top: 30px; +} + +.ibox-content h1, +.ibox-content h2, +.ibox-content h3, +.ibox-content h4, +.ibox-content h5, +.ibox-title h1, +.ibox-title h2, +.ibox-title h3, +.ibox-title h4, +.ibox-title h5 { + margin-top: 5px; +} + +ul.unstyled, +ol.unstyled { + list-style: none outside none; + margin-left: 0; +} + +.big-icon { + font-size: 160px !important; + color: #e8e8e8; +} + +/* FOOTER */ +.footer { + background: none repeat scroll 0 0 var(--bg); + border-top: 1px solid var(--border-color); + bottom: 0; + left: 0; + padding: 10px 20px; + position: absolute; + right: 0; +} + +.footer.fixed_full { + position: fixed; + bottom: 0; + left: 0; + right: 0; + z-index: 1000; + padding: 10px 20px; + background: white; + border-top: 1px solid var(--border-color); +} + +.footer.fixed { + position: fixed; + bottom: 0; + left: 0; + right: 0; + z-index: 1000; + padding: 10px 20px; + background: var(--bg-mid); + border-top: 1px solid transparent; + margin-left: 220px; +} + +body.mini-navbar .footer.fixed, +body.body-small.mini-navbar .footer.fixed { + margin: 0 0 0 70px; +} + +body.mini-navbar.fixed-sidebar .footer.fixed { + margin: 0; +} + +body.mini-navbar.canvas-menu .footer.fixed, +body.canvas-menu .footer.fixed { + margin: 0 !important; +} + +body.fixed-sidebar.body-small.mini-navbar .footer.fixed { + margin: 0 0 0 220px; +} + +body.body-small .footer.fixed { + margin-left: 0; +} + +/* PANELS */ +.panel-title > .small, +.panel-title > .small > a, +.panel-title > a, +.panel-title > small, +.panel-title > small > a { + color: inherit; +} + +.page-heading { + border-top: 0; + padding: 0 10px 20px 10px; +} + +.panel-heading h1, +.panel-heading h2 { + margin-bottom: 5px; +} + +.panel-body { + padding: 15px; +} + +/* Bootstrap 3.3.x panels */ +.panel { + margin-bottom: 20px; + background-color: #fff; + border: 1px solid transparent; + border-radius: 4px; +} + +.panel-heading { + color: white; + padding: 10px 15px; + border-bottom: 1px solid transparent; + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} + +.panel-footer { + padding: 10px 15px; + border-top: 1px solid var(--border-color); + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} + +.panel-default > .panel-heading { + color: #333; + background-color: #f8f8f8; + border-color: var(--border-color); +} + +.panel-default { + border-color: var(--border-color); +} + +.panel-group .panel + .panel { + margin-top: 5px; +} + +.panel-group .panel { + margin-bottom: 0; + border-radius: 4px; +} + +/* TABLES */ +.table > caption + thead > tr:first-child > td, +.table > caption + thead > tr:first-child > th, +.table > colgroup + thead > tr:first-child > td, +.table > colgroup + thead > tr:first-child > th, +.table > thead:first-child > tr:first-child > td, +.table > thead:first-child > tr:first-child > th { + border-top: 0; +} + +.table-bordered { + border: 1px solid transparent; +} + +.table-bordered > thead > tr > th, +.table-bordered > thead > tr > td { + background-color: transparent; + border-bottom-width: 1px; +} + +.table-bordered > thead > tr > th, +.table-bordered > tbody > tr > th, +.table-bordered > tfoot > tr > th, +.table-bordered > thead > tr > td, +.table-bordered > tbody > tr > td, +.table-bordered > tfoot > tr > td { + border: 1px solid transparent; +} + +.table > thead > tr > th { + border-bottom: 1px solid transparent; + vertical-align: bottom; +} + +.table > thead > tr > th, +.table > tbody > tr > th, +.table > tfoot > tr > th, +.table > thead > tr > td, +.table > tbody > tr > td, +.table > tfoot > tr > td { + border-top: 1px solid var(--border-color); + line-height: 1.42857; + padding: 8px; + vertical-align: top; +} + +/* PANELS */ +.panel.blank-panel { + background: none; + margin: 0; +} + +.blank-panel .panel-heading { + padding-bottom: 0; +} + +.nav-tabs > li > a { + color: var(--nav-text-color); + font-weight: 600; + padding: 10px 20px 10px 25px; +} + +.nav-tabs > li > a:hover, +.nav-tabs > li > a:focus { + color: var(--text); +} + +.ui-tab .tab-content { + padding: 20px 0; +} + +/* GLOBAL */ +.no-padding { + padding: 0 !important; +} + +.no-borders { + border: none !important; +} + +.no-margins { + margin: 0 !important; +} + +.no-top-border { + border-top: 0 !important; +} + +.ibox-content.text-box { + padding-bottom: 0; + padding-top: 15px; +} + +.border-left-right { + border-left: 1px solid var(--border-color); + border-right: 1px solid var(--border-color); +} + +.border-top-bottom { + border-top: 1px solid var(--border-color); + border-bottom: 1px solid var(--border-color); +} + +.border-left { + border-left: 1px solid var(--border-color); +} + +.border-right { + border-right: 1px solid var(--border-color); +} + +.border-top { + border-top: 1px solid var(--border-color); +} + +.border-bottom { + border-bottom: 1px solid var(--border-color); +} + +.border-size-sm { + border-width: 3px; +} + +.border-size-md { + border-width: 6px; +} + +.border-size-lg { + border-width: 9px; +} + +.border-size-xl { + border-width: 12px; +} + +.full-width { + width: 100% !important; +} + +.link-block { + font-size: 12px; + padding: 10px; +} + +.nav.navbar-top-links .link-block a { + font-size: 12px; +} + +.navbar-top-links { + text-align: right; +} + +.link-block a { + font-size: 10px; + color: inherit; +} + +body.mini-navbar .branding { + display: none; +} + +img.circle-border { + border: 6px solid #ffffff; + border-radius: 50%; +} + +.branding { + float: left; + color: #ffffff; + font-size: 18px; + font-weight: 600; + padding: 17px 20px; + text-align: center; + background-color: #18b090; +} + +.login-panel { + margin-top: 25%; +} + +.icons-box h3 { + margin-top: 10px; + margin-bottom: 10px; +} + +.icons-box .infont a i { + font-size: 25px; + display: block; + color: var(--text); +} + +.icons-box .infont a { + color: #a8a8a8; +} + +.icons-box .infont a { + padding: 10px; + margin: 1px; + display: block; +} + +.ui-draggable .ibox-title { + background-color: rgba(0, 0, 0, 0.8); + cursor: move; +} + +.breadcrumb { + background-color: #ffffff; + padding: 0; + margin-bottom: 0; +} + +.breadcrumb > li a { + color: inherit; +} + +.breadcrumb > .active { + color: inherit; +} + +code { + background-color: rgba(128, 128, 128, 0.1); + border-radius: 4px; + font-size: 90%; + padding: 2px 4px; + white-space: nowrap; +} + +.ibox { + clear: both; + margin-bottom: 25px; + margin-top: 0; + padding: 0; +} + +.ibox.collapsed .ibox-content { + display: none; +} + +.ibox.collapsed .fa.fa-chevron-up:before { + content: "\f078"; +} + +.ibox.collapsed .fa.fa-chevron-down:before { + content: "\f077"; +} + +.ibox:after, +.ibox:before { + display: table; +} + +.ibox-title { + background-color: var(--bg-title); + border: none; + color: var(--text); + margin-bottom: 0; + padding: 15px; + min-height: 48px; + position: relative; + clear: both; + border-radius: 8px 8px 0 0; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); +} + +.ibox-content { + background-color: var(--bg); + color: inherit; + padding: 15px 20px 20px 20px; + border: none; + border-radius: 0 0 8px 8px; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); +} + +.ibox-footer { + color: inherit; + border-top: 1px solid var(--border-color); + font-size: 90%; + background: #ffffff; + padding: 10px 15px; +} + +table.table-mail tr td { + padding: 12px; +} + +.table-mail .check-mail { + padding-left: 20px; +} + +.table-mail .mail-date { + padding-right: 20px; +} + +.star-mail, +.check-mail { + width: 40px; +} + +.unread td a, +.unread td { + font-weight: 600; + color: inherit; +} + +.read td a, +.read td { + font-weight: normal; + color: inherit; +} + +.unread td { + background-color: #f8f8f8; +} + +.ibox-content { + clear: both; +} + +.ibox-heading { + background-color: #f0f8f8; + border-bottom: none; +} + +.ibox-heading h3 { + font-weight: 200; + font-size: 24px; +} + +.ibox-title h5 { + display: inline-block; + font-size: 14px; + margin: 0 0 7px; + padding: 0; + text-overflow: ellipsis; + float: none; +} + +.ibox-title .label { + margin-left: 4px; +} + +.ibox-title .pull-right { + position: absolute; + right: 15px; + top: 15px; +} + +.ibox-tools { + display: block; + float: none; + margin-top: 0; + position: absolute; + top: 15px; + right: 15px; + padding: 0; + text-align: right; +} + +.ibox-tools a { + cursor: pointer; + margin-left: 5px; + color: #c0c0c0 !important; +} + +.ibox-tools a.btn-primary { + color: #fff !important; +} + +.ibox-tools .dropdown-menu > li > a { + padding: 4px 10px; + font-size: 12px; + color: var(--text) !important; +} + +.ibox .ibox-tools.open > .dropdown-menu { + left: auto; + right: 0; +} + +.ibox-tools .dropdown-toggle::after { + display: none; +} + +.dropdown-item { + width: auto; +} + +.dropdown-item.active, +.dropdown-item:active { + background-color: inherit; + color: inherit; +} + +/* BACKGROUNDS */ +.gray-bg, +.bg-muted { + background-color: var(--bg-mid); +} + +.white-bg { + background-color: var(--bg); +} + +.blue-bg, +.bg-success { + background-color: #2080c8 !important; + color: #ffffff; +} + +.navy-bg, +.bg-primary { + background-color: #18b090 !important; + color: #ffffff; +} + +.lazur-bg, +.bg-info { + background-color: #20c8c8 !important; + color: #ffffff; +} + +.yellow-bg, +.bg-warning { + background-color: #f8b058 !important; + color: #ffffff; +} + +.red-bg, +.bg-danger { + background-color: #f05868 !important; + color: #ffffff; +} + +.black-bg { + background-color: #282828; +} + +.panel-primary { + border-color: #18b090; +} + +.panel-primary > .panel-heading { + background-color: #18b090; + border-color: #18b090; +} + +.panel-success { + border-color: #2080c8; +} + +.panel-success > .panel-heading { + background-color: #2080c8; + border-color: #2080c8; + color: #ffffff; +} + +.panel-info { + border-color: #20c8c8; +} + +.panel-info > .panel-heading { + background-color: #20c8c8; + border-color: #20c8c8; + color: #ffffff; +} + +.panel-warning { + border-color: #f8b058; +} + +.panel-warning > .panel-heading { + background-color: #f8b058; + border-color: #f8b058; + color: #ffffff; +} + +.panel-danger { + border-color: #f05868; +} + +.panel-danger > .panel-heading { + background-color: #f05868; + border-color: #f05868; + color: #ffffff; +} + +.progress-bar { + background-color: #18b090; +} + +.progress-small, +.progress-small .progress-bar { + height: 10px; +} + +.progress-small, +.progress-mini { + margin-top: 5px; +} + +.progress-mini, +.progress-mini .progress-bar { + height: 5px; + margin-bottom: 0; +} + +.progress-bar-navy-light { + background-color: #40c8a8; +} + +.progress-bar-success { + background-color: #2080c8; +} + +.progress-bar-info { + background-color: #20c8c8; +} + +.progress-bar-warning { + background-color: #f8b058; +} + +.progress-bar-danger { + background-color: #f05868; +} + +.panel-title { + font-size: inherit; +} + +.jumbotron { + border-radius: 6px; + padding: 40px; +} + +.jumbotron h1 { + margin-top: 0; +} + +/* COLORS */ +.text-navy { + color: #18b090 !important; +} + +.text-primary { + color: inherit !important; +} + +.text-success { + color: #2080c8 !important; +} + +.text-info { + color: #20c8c8 !important; +} + +.text-warning { + color: #f8b058 !important; +} + +.text-danger { + color: #f05868 !important; +} + +.text-muted { + color: #888888 !important; +} + +.text-white { + color: #ffffff; +} + +.simple_tag { + background-color: var(--bg-mid); + border: 1px solid var(--border-color); + border-radius: 2px; + color: inherit; + font-size: 10px; + margin-right: 5px; + margin-top: 5px; + padding: 5px 12px; + display: inline-block; +} + +.img-shadow { + -webkit-box-shadow: 0 0 3px 0 #909090; + -moz-box-shadow: 0 0 3px 0 #909090; + box-shadow: 0 0 3px 0 #909090; +} + +/* For handle diferent bg color in AngularJS version */ +.dashboards\.dashboard_2 nav.navbar, +.dashboards\.dashboard_3 nav.navbar, +.mailbox\.inbox nav.navbar, +.mailbox\.email_view nav.navbar, +.mailbox\.email_compose nav.navbar, +.dashboards\.dashboard_4_1 nav.navbar, +.metrics nav.navbar, +.metrics\.index nav.navbar, +.dashboards\.dashboard_5 nav.navbar { + background: #fff; +} + +/* For handle diferent bg color in MVC version */ +.Dashboard_2 .navbar.navbar-static-top, +.Dashboard_3 .navbar.navbar-static-top, +.Dashboard_4_1 .navbar.navbar-static-top, +.ComposeEmail .navbar.navbar-static-top, +.EmailView .navbar.navbar-static-top, +.Inbox .navbar.navbar-static-top, +.Metrics .navbar.navbar-static-top, +.Dashboard_5 .navbar.navbar-static-top { + background: #fff; +} + +a.close-canvas-menu { + position: absolute; + top: 10px; + right: 15px; + z-index: 1011; + color: #a8b0c0; +} + +a.close-canvas-menu:hover { + color: #fff; +} + +.close-canvas-menu { + display: none; +} + +.canvas-menu .close-canvas-menu { + display: block; +} + +.light-navbar .navbar.navbar-static-top { + background-color: #ffffff; +} + +/* FULL HEIGHT */ +.full-height { + height: 100%; +} + +.fh-breadcrumb { + height: calc(100% - 196px); + margin: 0 -15px; + position: relative; +} + +.fh-no-breadcrumb { + height: calc(100% - 99px); + margin: 0 -15px; + position: relative; +} + +.fh-column { + background: #fff; + height: 100%; + width: 240px; + float: left; +} + +.modal-backdrop { + z-index: 2040 !important; +} + +.modal { + z-index: 2050 !important; +} + +.spiner-example { + height: 200px; + padding-top: 70px; +} + +legend { + font-size: 1rem; +} + +/* MARGINS & PADDINGS */ +.p-xxs { + padding: 5px; +} + +.p-xs { + padding: 10px; +} + +.p-sm { + padding: 15px; +} + +.p-m { + padding: 20px; +} + +.p-md { + padding: 25px; +} + +.p-lg { + padding: 30px; +} + +.p-xl { + padding: 40px; +} + +.p-w-xs { + padding: 0 10px; +} + +.p-w-sm { + padding: 0 15px; +} + +.p-w-m { + padding: 0 20px; +} + +.p-w-md { + padding: 0 25px; +} + +.p-w-lg { + padding: 0 30px; +} + +.p-w-xl { + padding: 0 40px; +} + +.p-h-xs { + padding: 10px 0; +} + +.p-h-sm { + padding: 15px 0; +} + +.p-h-m { + padding: 20px 0; +} + +.p-h-md { + padding: 25px 0; +} + +.p-h-lg { + padding: 30px 0; +} + +.p-h-xl { + padding: 40px 0; +} + +.m-xxs { + margin: 2px 4px; +} + +.m { + margin: 15px; +} + +.m-xs { + margin: 5px; +} + +.m-sm { + margin: 10px; +} + +.m-md { + margin: 20px; +} + +.m-lg { + margin: 30px; +} + +.m-xl { + margin: 50px; +} + +.m-n { + margin: 0 !important; +} + +.m-l-none { + margin-left: 0; +} + +.m-l-xs { + margin-left: 5px; +} + +.m-l-sm { + margin-left: 10px; +} + +.m-l { + margin-left: 15px; +} + +.m-l-md { + margin-left: 20px; +} + +.m-l-lg { + margin-left: 30px; +} + +.m-l-xl { + margin-left: 40px; +} + +.m-l-n-xxs { + margin-left: -1px; +} + +.m-l-n-xs { + margin-left: -5px; +} + +.m-l-n-sm { + margin-left: -10px; +} + +.m-l-n { + margin-left: -15px; +} + +.m-l-n-md { + margin-left: -20px; +} + +.m-l-n-lg { + margin-left: -30px; +} + +.m-l-n-xl { + margin-left: -40px; +} + +.m-t-none { + margin-top: 0; +} + +.m-t-xxs { + margin-top: 1px; +} + +.m-t-xs { + margin-top: 5px; +} + +.m-t-sm { + margin-top: 10px; +} + +.m-t { + margin-top: 15px; +} + +.m-t-md { + margin-top: 20px; +} + +.m-t-lg { + margin-top: 30px; +} + +.m-t-xl { + margin-top: 40px; +} + +.m-t-n-xxs { + margin-top: -1px; +} + +.m-t-n-xs { + margin-top: -5px; +} + +.m-t-n-sm { + margin-top: -10px; +} + +.m-t-n { + margin-top: -15px; +} + +.m-t-n-md { + margin-top: -20px; +} + +.m-t-n-lg { + margin-top: -30px; +} + +.m-t-n-xl { + margin-top: -40px; +} + +.m-r-none { + margin-right: 0; +} + +.m-r-xxs { + margin-right: 1px; +} + +.m-r-xs { + margin-right: 5px; +} + +.m-r-sm { + margin-right: 10px; +} + +.m-r { + margin-right: 15px; +} + +.m-r-md { + margin-right: 20px; +} + +.m-r-lg { + margin-right: 30px; +} + +.m-r-xl { + margin-right: 40px; +} + +.m-r-n-xxs { + margin-right: -1px; +} + +.m-r-n-xs { + margin-right: -5px; +} + +.m-r-n-sm { + margin-right: -10px; +} + +.m-r-n { + margin-right: -15px; +} + +.m-r-n-md { + margin-right: -20px; +} + +.m-r-n-lg { + margin-right: -30px; +} + +.m-r-n-xl { + margin-right: -40px; +} + +.m-b-none { + margin-bottom: 0; +} + +.m-b-xxs { + margin-bottom: 1px; +} + +.m-b-xs { + margin-bottom: 5px; +} + +.m-b-sm { + margin-bottom: 10px; +} + +.m-b { + margin-bottom: 15px; +} + +.m-b-md { + margin-bottom: 20px; +} + +.m-b-lg { + margin-bottom: 30px; +} + +.m-b-xl { + margin-bottom: 40px; +} + +.m-b-n-xxs { + margin-bottom: -1px; +} + +.m-b-n-xs { + margin-bottom: -5px; +} + +.m-b-n-sm { + margin-bottom: -10px; +} + +.m-b-n { + margin-bottom: -15px; +} + +.m-b-n-md { + margin-bottom: -20px; +} + +.m-b-n-lg { + margin-bottom: -30px; +} + +.m-b-n-xl { + margin-bottom: -40px; +} + +.space-15 { + margin: 15px 0; +} + +.space-20 { + margin: 20px 0; +} + +.space-25 { + margin: 25px 0; +} + +.space-30 { + margin: 30px 0; +} + +.img-sm { + width: 32px; + height: 32px; +} + +.img-md { + width: 64px; + height: 64px; +} + +.img-lg { + width: 96px; + height: 96px; +} + +.b-r-xs { + -webkit-border-radius: 1px; + -moz-border-radius: 1px; + border-radius: 1px; +} + +.b-r-sm { + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} + +.b-r-md { + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; +} + +.b-r-lg { + -webkit-border-radius: 12px; + -moz-border-radius: 12px; + border-radius: 12px; +} + +.b-r-xl { + -webkit-border-radius: 24px; + -moz-border-radius: 24px; + border-radius: 24px; +} + +.fullscreen-ibox-mode .animated { + animation: none; +} + +body.fullscreen-ibox-mode { + overflow-y: hidden; +} + +.ibox.fullscreen { + z-index: 2030; + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + overflow: auto; + margin-bottom: 0; +} + +.ibox.fullscreen .collapse-link { + display: none; +} + +.ibox.fullscreen .ibox-content { + min-height: calc(100% - 48px); +} + +body.modal-open { + padding-right: inherit !important; +} + +_::-webkit-full-page-media, +_:future, +:root body.modal-open .wrapper-content.animated { + -webkit-animation: none; + -ms-animation-nam: none; + animation: none; +} + +body.modal-open .animated { + animation-fill-mode: initial; + z-index: inherit; +} + +/* Show profile dropdown on fixed sidebar */ +body.mini-navbar.fixed-sidebar .profile-element, +.block { + display: block !important; +} + +body.mini-navbar.fixed-sidebar .nav-header { + padding: 33px 25px; +} + +body.mini-navbar.fixed-sidebar .logo-element { + display: none; +} + +.fullscreen-video .animated { + animation: none; +} + +.list-inline > li { + display: inline-block; +} + +.custom-file-label { + padding: .5rem .75rem; +} + +.custom-file-label::after { + padding: .5rem .75rem; +} + +/* SEARCH PAGE */ +.search-form { + margin-top: 10px; +} + +.search-result h3 { + margin-bottom: 0; + color: #2010c0; +} + +.search-result .search-link { + color: #006820; +} + +.search-result p { + font-size: 12px; + margin-top: 5px; +} + +/* CONTACTS */ +.contact-box { + background-color: #ffffff; + border: 1px solid var(--border-color); + padding: 20px; + margin-bottom: 20px; +} + +.contact-box > a { + color: inherit; +} + +.contact-box.center-version { + border: 1px solid var(--border-color); + padding: 0; +} + +.contact-box.center-version > a { + display: block; + background-color: #ffffff; + padding: 20px; + text-align: center; +} + +.contact-box.center-version > a img { + width: 80px; + height: 80px; + margin-top: 10px; + margin-bottom: 10px; +} + +.contact-box.center-version address { + margin-bottom: 0; +} + +.contact-box .contact-box-footer { + text-align: center; + background-color: #ffffff; + border-top: 1px solid var(--border-color); + padding: 15px 20px; +} + +/* INVOICE */ +.invoice-table tbody > tr > td:last-child, +.invoice-table tbody > tr > td:nth-child(4), +.invoice-table tbody > tr > td:nth-child(3), +.invoice-table tbody > tr > td:nth-child(2) { + text-align: right; +} + +.invoice-table thead > tr > th:last-child, +.invoice-table thead > tr > th:nth-child(4), +.invoice-table thead > tr > th:nth-child(3), +.invoice-table thead > tr > th:nth-child(2) { + text-align: right; +} + +.invoice-total > tbody > tr > td:first-child { + text-align: right; +} + +.invoice-total > tbody > tr > td { + border: 0 none; +} + +.invoice-total > tbody > tr > td:last-child { + border-bottom: 1px solid #e0e0e0; + text-align: right; + width: 15%; +} + +/* ERROR & LOGIN & LOCKSCREEN*/ +.middle-box { + max-width: 400px; + z-index: 100; + margin: 0 auto; + padding-top: 40px; +} + +.lockscreen.middle-box { + width: 200px; + padding-top: 110px; +} + +.loginscreen.middle-box { + width: 400px; +} + +.loginColumns { + max-width: 800px; + margin: 0 auto; +} + +.loginColumns input { + height: 36px; +} + +.loginColumns .captcha-group { + display: flex; +} + +.loginColumns .captcha-group .captcha { + margin-left: 15px; +} + +.loginColumns .captcha-group .captcha img { + height: 36px; +} + +.login-page { + min-height: 100vh; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + background-color: var(--bg-mid); +} + +.navbar-login { + position: absolute; + top: 20px; + right: 20px; + background: transparent !important; + border: none; + z-index: 10; +} + +.login-card { + width: 100%; + max-width: 380px; + margin: auto 1rem; + border-radius: 0.8rem; + overflow: hidden; +} + +.login-card .login-header { + padding: 2rem; + background: linear-gradient(87deg, #11cdef 0%, #1171ef 100%); + text-align: center; +} + +.login-card .login-header.register { + background: linear-gradient(87deg, #f5c56f 0%, #fca17b 100%); +} + +.login-card .login-header img { + width: 36px; + height: 36px; +} + +.login-card .login-header h1 { + margin-top: 0.75rem; + font-size: 1.5rem; + color: #fff; + font-weight: 300; +} + +.login-card .login-body { + padding: 2rem; + background-color: rgba(128, 128, 128, 0.2); +} + +.login-card .form-group { + position: relative; + margin-bottom: 1.25rem; +} + +.login-card .input-icon { + position: absolute; + top: 50%; + left: 1rem; + transform: translateY(-50%); + color: #adb5bd; + font-size: 1.1rem; + pointer-events: none; +} + +.login-card .form-control { + width: 100%; + height: 3rem; + padding: 0.75rem 0.75rem 0.75rem 2.5rem; + border-radius: 0.375rem; + transition: all 0.2s; +} + +.login-card .captcha-group { + display: flex; + align-items: center; +} + +.login-card .captcha-group .flex-fill { + flex: 1; + position: relative; +} + +.login-card .captcha-group .captcha-container { + margin-left: 0.75rem; + display: flex; + align-items: center; +} + +.login-card .captcha-group img { + height: 2.5rem; + cursor: pointer; + border-radius: 0.25rem; + background-color: #fff; + padding: 0.25rem; +} + +.login-card .input-icon { + position: absolute; + top: 50%; + left: 1rem; + transform: translateY(-50%); + color: #adb5bd; + font-size: 1.1rem; +} + +.passwordBox { + max-width: 460px; + margin: 0 auto; + padding: 100px 20px 20px 20px; +} + +.logo-name { + color: #e8e8e8; + font-size: 180px; + font-weight: 800; + letter-spacing: -10px; + margin-bottom: 0; +} + +@media (max-width: 576px) { + .login-card { + max-width: 100%; + width: auto; + margin: 0 1rem; + border-radius: 0.5rem; + } + + .login-card .login-header { + padding: 1.5rem; + } + + .login-card .login-header h1 { + font-size: 1.25rem; + } + + .login-card .login-body { + padding: 1.5rem; + } + + .login-card .form-control { + height: 3.5rem; + font-size: 1rem; + padding: 1rem 1rem 1rem 3rem; + } + + .login-card .btn { + padding: 0.75rem; + font-size: 1rem; + } +} + +.middle-box h1 { + font-size: 170px; +} + +.wrapper .middle-box { + margin-top: 140px; +} + +.lock-word { + z-index: 10; + position: absolute; + top: 110px; + left: 50%; + margin-left: -470px; +} + +.lock-word span { + font-size: 100px; + font-weight: 600; + color: #e8e8e8; + display: inline-block; +} + +.lock-word .first-word { + margin-right: 160px; +} + +/* DASBOARD */ +.dashboard-header { + border-top: 0; + padding: 20px 20px 20px 20px; +} + +.dashboard-header h2 { + margin-top: 10px; + font-size: 26px; +} + +.fist-item { + border-top: none !important; +} + +.statistic-box { + margin-top: 40px; +} + +.dashboard-header .list-group-item span.label { + margin-right: 10px; +} + +.list-group.clear-list .list-group-item { + border-top: 1px solid var(--border-color); + border-bottom: 0; + border-right: 0; + border-left: 0; + padding: 10px 0; +} + +ul.clear-list:first-child { + border-top: none !important; +} + +/* Intimeline */ +.timeline-item .date i { + position: absolute; + top: 0; + right: 0; + padding: 5px; + width: 30px; + text-align: center; + border-top: 1px solid var(--border-color); + border-bottom: 1px solid var(--border-color); + border-left: 1px solid var(--border-color); + background: #f8f8f8; +} + +.timeline-item .date { + text-align: right; + width: 110px; + position: relative; + padding-top: 30px; +} + +.timeline-item .content { + border-left: 1px solid var(--border-color); + border-top: 1px solid var(--border-color); + padding-top: 10px; + min-height: 100px; +} + +.timeline-item .content:hover { + background: #f8f8f8; +} + +/* PIN BOARD */ +ul.notes li, +ul.tag-list li { + list-style: none; +} + +ul.notes li h4 { + margin-top: 20px; + font-size: 16px; +} + +ul.notes li div { + text-decoration: none; + color: #000; + background: #ffc; + display: block; + height: 140px; + width: 140px; + padding: 1em; + position: relative; +} + +ul.notes li div small { + position: absolute; + top: 5px; + right: 5px; + font-size: 10px; +} + +ul.notes li div a { + position: absolute; + right: 10px; + bottom: 10px; + color: inherit; +} + +ul.notes li { + margin: 10px 40px 50px 0; + float: left; +} + +ul.notes li div p { + font-size: 12px; +} + +ul.notes li div { + text-decoration: none; + color: #000; + background: #ffc; + display: block; + height: 140px; + width: 140px; + padding: 1em; + /* Firefox */ + -moz-box-shadow: 5px 5px 2px #202020; + /* Safari+Chrome */ + -webkit-box-shadow: 5px 5px 2px rgba(32, 32, 32, 0.7); + /* Opera */ + box-shadow: 5px 5px 2px rgba(32, 32, 32, 0.7); +} + +ul.notes li div { + -webkit-transform: rotate(-6deg); + -o-transform: rotate(-6deg); + -moz-transform: rotate(-6deg); + -ms-transform: rotate(-6deg); +} + +ul.notes li:nth-child(even) div { + -o-transform: rotate(4deg); + -webkit-transform: rotate(4deg); + -moz-transform: rotate(4deg); + -ms-transform: rotate(4deg); + position: relative; + top: 5px; +} + +ul.notes li:nth-child(3n) div { + -o-transform: rotate(-3deg); + -webkit-transform: rotate(-3deg); + -moz-transform: rotate(-3deg); + -ms-transform: rotate(-3deg); + position: relative; + top: -5px; +} + +ul.notes li:nth-child(5n) div { + -o-transform: rotate(5deg); + -webkit-transform: rotate(5deg); + -moz-transform: rotate(5deg); + -ms-transform: rotate(5deg); + position: relative; + top: -10px; +} + +ul.notes li div:hover, +ul.notes li div:focus { + -webkit-transform: scale(1.1); + -moz-transform: scale(1.1); + -o-transform: scale(1.1); + -ms-transform: scale(1.1); + position: relative; + z-index: 5; +} + +ul.notes li div { + text-decoration: none; + color: #000; + background: #ffc; + display: block; + height: 210px; + width: 210px; + padding: 1em; + -moz-box-shadow: 5px 5px 7px #202020; + -webkit-box-shadow: 5px 5px 7px rgba(32, 32, 32, 0.7); + box-shadow: 5px 5px 7px rgba(32, 32, 32, 0.7); + -moz-transition: -moz-transform 0.15s linear; + -o-transition: -o-transform 0.15s linear; + -webkit-transition: -webkit-transform 0.15s linear; +} + +/* FILE MANAGER */ +.file-box { + float: left; + width: 220px; +} + +.file-manager h5 { + text-transform: uppercase; +} + +.file-manager { + list-style: none outside none; + margin: 0; + padding: 0; +} + +.folder-list li a { + color: var(--text); + display: block; + padding: 5px 0; +} + +.folder-list li { + border-bottom: 1px solid var(--border-color); + display: block; +} + +.folder-list li i { + margin-right: 8px; + color: #405060; +} + +.category-list li a { + color: var(--text); + display: block; + padding: 5px 0; +} + +.category-list li { + display: block; +} + +.category-list li i { + margin-right: 8px; + color: #405060; +} + +.category-list li a .text-navy { + color: #18b090; +} + +.category-list li a .text-primary { + color: #2080c8; +} + +.category-list li a .text-info { + color: #20c8c8; +} + +.category-list li a .text-danger { + color: #f05050; +} + +.category-list li a .text-warning { + color: #f8b058; +} + +.file-manager h5.tag-title { + margin-top: 20px; +} + +.tag-list li { + float: left; +} + +.tag-list li a { + font-size: 10px; + background-color: var(--bg-mid); + padding: 5px 12px; + color: inherit; + border-radius: 2px; + border: 1px solid var(--border-color); + margin-right: 5px; + margin-top: 5px; + display: block; +} + +.file { + border: 1px solid var(--border-color); + padding: 0; + background-color: #ffffff; + position: relative; + margin-bottom: 20px; + margin-right: 20px; +} + +.file-manager .hr-line-dashed { + margin: 15px 0; +} + +.file .icon, +.file .image { + height: 100px; + overflow: hidden; +} + +.file .icon { + padding: 15px 10px; + text-align: center; +} + +.file-control { + color: inherit; + font-size: 11px; + margin-right: 10px; +} + +.file-control.active { + text-decoration: underline; +} + +.file .icon i { + font-size: 70px; + color: #d8d8d8; +} + +.file .file-name { + padding: 10px; + background-color: #f8f8f8; + border-top: 1px solid var(--border-color); +} + +.file-name small { + color: var(--text); +} + +.corner { + position: absolute; + display: inline-block; + width: 0; + height: 0; + line-height: 0; + border: 0.6em solid transparent; + border-right: 0.6em solid var(--bg-mid); + border-bottom: 0.6em solid var(--bg-mid); + right: 0em; + bottom: 0em; +} + +a.compose-mail { + padding: 8px 10px; +} + +.mail-search { + max-width: 300px; +} + +/* PROFILE */ +.profile-content { + border-top: none !important; +} + +.profile-stats { + margin-right: 10px; +} + +.profile-image { + width: 120px; + float: left; +} + +.profile-image img { + width: 96px; + height: 96px; +} + +.profile-info { + margin-left: 120px; +} + +.feed-activity-list .feed-element { + border-bottom: 1px solid var(--border-color); +} + +.feed-element:first-child { + margin-top: 0; +} + +.feed-element { + padding-bottom: 15px; +} + +.feed-element, +.feed-element .media { + margin-top: 15px; +} + +.feed-element, +.media-body { + overflow: hidden; +} + +.feed-element > a img { + margin-right: 10px; +} + +.feed-element img.rounded-circle, +.dropdown-messages-box img.rounded-circle { + width: 38px; + height: 38px; +} + +.feed-element .well { + border: 1px solid var(--border-color); + box-shadow: none; + margin-top: 10px; + margin-bottom: 5px; + padding: 10px 20px; + font-size: 11px; + line-height: 16px; +} + +.feed-element .actions { + margin-top: 10px; +} + +.feed-element .photos { + margin: 10px 0; +} + +.dropdown-messages-box .dropdown-item:focus, +.dropdown-messages-box .dropdown-item:hover { + background-color: inherit; +} + +.feed-photo { + max-height: 180px; + border-radius: 4px; + overflow: hidden; + margin-right: 10px; + margin-bottom: 10px; +} + +.file-list li { + padding: 5px 10px; + font-size: 11px; + border-radius: 2px; + border: 1px solid var(--border-color); + margin-bottom: 5px; +} + +.file-list li a { + color: inherit; +} + +.file-list li a:hover { + color: #18b090; +} + +.user-friends img { + width: 42px; + height: 42px; + margin-bottom: 5px; + margin-right: 5px; +} + +/* MAILBOX */ +.mail-box { + background-color: #ffffff; + border: 1px solid var(--border-color); + border-top: 0; + padding: 0; + margin-bottom: 20px; +} + +.mail-box-header { + background-color: #ffffff; + border: 1px solid var(--border-color); + border-bottom: 0; + padding: 30px 20px 20px 20px; +} + +.mail-box-header h2 { + margin-top: 0; +} + +.mailbox-content .tag-list li a { + background: #ffffff; +} + +.mail-body { + border-top: 1px solid var(--border-color); + padding: 20px; +} + +.mail-text { + border-top: 1px solid var(--border-color); +} + +.mail-text .note-toolbar { + padding: 10px 15px; +} + +.mail-body .form-group { + margin-bottom: 5px; +} + +.mail-text .note-editor .note-toolbar { + background-color: #f8f8f8; +} + +.mail-attachment { + border-top: 1px solid var(--border-color); + padding: 20px; + font-size: 12px; +} + +.mailbox-content { + background: none; + border: none; + padding: 10px; +} + +.mail-ontact { + width: 23%; +} + +/* PROJECTS */ +.project-people, +.project-actions { + text-align: right; + vertical-align: middle; +} + +dd.project-people { + text-align: left; + margin-top: 5px; +} + +.project-people img { + width: 32px; + height: 32px; +} + +.project-title a { + font-size: 14px; + color: var(--text); + font-weight: 600; +} + +.project-list table tr td { + border-top: none; + border-bottom: 1px solid var(--border-color); + padding: 15px 10px; + vertical-align: middle; +} + +.project-manager .tag-list li a { + font-size: 10px; + background-color: white; + padding: 5px 12px; + color: inherit; + border-radius: 2px; + border: 1px solid var(--border-color); + margin-right: 5px; + margin-top: 5px; + display: block; +} + +.project-files li a { + font-size: 11px; + color: var(--text); + margin-left: 10px; + line-height: 22px; +} + +/* FAQ */ +.faq-item { + padding: 20px; + margin-bottom: 2px; + background: #fff; +} + +.faq-question { + font-size: 18px; + font-weight: 600; + color: #18b090; + display: block; +} + +.faq-question:hover { + color: #18a080; +} + +.faq-answer { + margin-top: 10px; + background: var(--bg-mid); + border: 1px solid var(--border-color); + border-radius: 3px; + padding: 15px; +} + +.faq-item .tag-item { + background: var(--bg-mid); + padding: 2px 6px; + font-size: 10px; + text-transform: uppercase; +} + +/* Chat view */ +.message-input { + height: 90px !important; +} + +.chat-avatar { + width: 36px; + height: 36px; + float: left; + margin-right: 10px; +} + +.chat-user-name { + padding: 10px; +} + +.chat-user { + padding: 8px 10px; + border-bottom: 1px solid var(--border-color); +} + +.chat-user a { + color: inherit; +} + +.chat-view { + z-index: 20012; +} + +.chat-users, +.chat-statistic { + margin-left: -30px; +} + +@media (max-width: 992px) { + .chat-users, + .chat-statistic { + margin-left: 0; + } +} + +.chat-view .ibox-content { + padding: 0; +} + +.chat-message { + padding: 10px 20px; +} + +.message-avatar { + height: 48px; + width: 48px; + border: 1px solid var(--border-color); + border-radius: 4px; + margin-top: 1px; +} + +.chat-discussion .chat-message.left .message-avatar { + float: left; + margin-right: 10px; +} + +.chat-discussion .chat-message.right .message-avatar { + float: right; + margin-left: 10px; +} + +.message { + background-color: #fff; + border: 1px solid var(--border-color); + text-align: left; + display: block; + padding: 10px 20px; + position: relative; + border-radius: 4px; +} + +.chat-discussion .chat-message.left .message-date { + float: right; +} + +.chat-discussion .chat-message.right .message-date { + float: left; +} + +.chat-discussion .chat-message.left .message { + text-align: left; + margin-left: 55px; +} + +.chat-discussion .chat-message.right .message { + text-align: right; + margin-right: 55px; +} + +.message-date { + font-size: 10px; + color: #888888; +} + +.message-content { + display: block; +} + +.chat-discussion { + background: #eee; + padding: 15px; + height: 400px; + overflow-y: auto; +} + +.chat-users { + overflow-y: auto; + height: 400px; +} + +.chat-message-form .form-group { + margin-bottom: 0; +} + +/* jsTree */ +.jstree-open > .jstree-anchor > .fa-folder:before { + content: "\f07c"; +} + +.jstree-default .jstree-icon.none { + width: 0; +} + +/* CLIENTS */ +.clients-list { + margin-top: 20px; +} + +.clients-list .tab-pane { + position: relative; + height: 600px; +} + +.client-detail { + position: relative; + height: 620px; +} + +.clients-list table tr td { + height: 46px; + vertical-align: middle; + border: none; +} + +.client-link { + font-weight: 600; + color: inherit; +} + +.client-link:hover { + color: inherit; +} + +.client-avatar { + width: 42px; +} + +.client-avatar img { + width: 28px; + height: 28px; + border-radius: 50%; +} + +.contact-type { + width: 20px; + color: #c0c0c0; +} + +.client-status { + text-align: left; +} + +.client-detail .vertical-timeline-content p { + margin: 0; +} + +.client-detail .vertical-timeline-icon.gray-bg { + color: #a8a8a8; +} + +.clients-list .nav-tabs > li.active > a, +.clients-list .nav-tabs > li.active > a:hover, +.clients-list .nav-tabs > li.active > a:focus { + border-bottom: 1px solid #fff; +} + +/* BLOG ARTICLE */ +.blog h2 { + font-weight: 700; +} + +.blog h5 { + margin: 0 0 5px 0; +} + +.blog .btn { + margin: 0 0 5px 0; +} + +.article h1 { + font-size: 48px; + font-weight: 700; + color: #304050; +} + +.article p { + font-size: 15px; + line-height: 26px; +} + +.article-title { + text-align: center; + margin: 40px 0 100px 0; +} + +.article .ibox-content { + padding: 40px; +} + +/* ISSUE TRACKER */ +.issue-tracker .btn-link { + color: #18b090; +} + +table.issue-tracker tbody tr td { + vertical-align: middle; + height: 50px; +} + +.issue-info { + width: 50%; +} + +.issue-info a { + font-weight: 600; + color: var(--text); +} + +.issue-info small { + display: block; +} + +/* TEAMS */ +.team-members { + margin: 10px 0; +} + +.team-members img.rounded-circle { + width: 42px; + height: 42px; + margin-bottom: 5px; +} + +/* AGILE BOARD */ +.sortable-list { + padding: 10px 0; +} + +.agile-list { + list-style: none; + margin: 0; +} + +.agile-list li { + background: #f8f8f8; + border: 1px solid var(--border-color); + margin: 0 0 10px 0; + padding: 10px; + border-radius: 2px; +} + +.agile-list li:hover { + cursor: pointer; + background: #fff; +} + +.agile-list li.warning-element { + border-left: 3px solid #f8b058; +} + +.agile-list li.danger-element { + border-left: 3px solid #f05868; +} + +.agile-list li.info-element { + border-left: 3px solid #2080c8; +} + +.agile-list li.success-element { + border-left: 3px solid #18b090; +} + +.agile-detail { + margin-top: 5px; + font-size: 12px; +} + +/* DIFF */ +ins { + background-color: #ccffcc; + text-decoration: none; +} + +del { + background-color: #ffcccc; +} + +/* E-commerce */ +.product-box { + padding: 0; + border: 1px solid var(--border-color); +} + +.product-box:hover, +.product-box.active { + border: 1px solid transparent; + -webkit-box-shadow: 0 3px 7px 0 #a8a8a8; + -moz-box-shadow: 0 3px 7px 0 #a8a8a8; + box-shadow: 0 3px 7px 0 #a8a8a8; +} + +.product-imitation { + text-align: center; + padding: 90px 0; + background-color: #f8f8f8; + color: #c0c0c0; + font-weight: 600; +} + +.cart-product-imitation { + text-align: center; + padding-top: 30px; + height: 80px; + width: 80px; + background-color: #f8f8f8; +} + +.product-imitation.xl { + padding: 120px 0; +} + +.product-desc { + padding: 20px; + position: relative; +} + +.ecommerce .tag-list { + padding: 0; +} + +.ecommerce .fa-star { + color: #d0d8e0; +} + +.ecommerce .fa-star.active { + color: #f8b058; +} + +.ecommerce .note-editor { + border: 1px solid var(--border-color); +} + +table.shoping-cart-table { + margin-bottom: 0; +} + +table.shoping-cart-table tr td { + border: none; + text-align: right; +} + +table.shoping-cart-table tr td.desc, +table.shoping-cart-table tr td:first-child { + text-align: left; +} + +table.shoping-cart-table tr td:last-child { + width: 80px; +} + +.product-name { + font-size: 16px; + font-weight: 600; + color: var(--text); + display: block; + margin: 2px 0 5px 0; +} + +.product-name:hover, +.product-name:focus { + color: #18b090; +} + +.product-price { + font-size: 14px; + font-weight: 600; + color: #ffffff; + background-color: #18b090; + padding: 6px 12px; + position: absolute; + top: -32px; + right: 0; +} + +.product-detail .ibox-content { + padding: 30px 30px 50px 30px; +} + +.image-imitation { + background-color: #f8f8f8; + text-align: center; + padding: 200px 0; +} + +.product-main-price small { + font-size: 10px; +} + +.product-images { + margin: 0 20px; +} + +/* Social feed */ +.social-feed-separated .social-feed-box { + margin-left: 62px; +} + +.social-feed-separated .social-avatar { + float: left; + padding: 0; +} + +.social-feed-separated .social-avatar img { + width: 52px; + height: 52px; + border: 1px solid var(--border-color); +} + +.social-feed-separated .social-feed-box .social-avatar { + padding: 15px 15px 0 15px; + float: none; +} + +.social-feed-box { + /*padding: 15px;*/ + border: 1px solid var(--border-color); + background: #fff; + margin-bottom: 15px; +} + +.article .social-feed-box { + margin-bottom: 0; + border-bottom: none; +} + +.article .social-feed-box:last-child { + margin-bottom: 0; + border-bottom: 1px solid var(--border-color); +} + +.article .social-feed-box p { + font-size: 13px; + line-height: 18px; +} + +.social-action { + margin: 15px; +} + +.social-action .dropdown-toggle::after { + margin-left: auto; +} + +.social-avatar { + padding: 15px 15px 0 15px; +} + +.social-comment .social-comment { + margin-left: 45px; +} + +.social-avatar img { + height: 40px; + width: 40px; + margin-right: 10px; +} + +.social-avatar .media-body a { + font-size: 14px; + display: block; +} + +.social-body { + padding: 15px; +} + +.social-body img { + margin-bottom: 10px; +} + +.social-footer { + border-top: 1px solid var(--border-color); + padding: 10px 15px; + background: #f8f8f8; +} + +.social-footer .social-comment img { + width: 32px; + margin-right: 10px; +} + +.social-comment:first-child { + margin-top: 0; +} + +.social-comment { + margin-top: 15px; +} + +.social-comment textarea { + font-size: 12px; +} + +/* Vote list */ +.vote-item { + padding: 20px 25px; + background: #ffffff; + border-top: 1px solid var(--border-color); +} + +.vote-item:last-child { + border-bottom: 1px solid var(--border-color); +} + +.vote-item:hover { + background: #ffffff; +} + +.vote-actions { + float: left; + width: 30px; + margin-right: 15px; + text-align: center; +} + +.vote-actions a { + color: #18b090; + font-weight: 600; +} + +.vote-actions { + font-weight: 600; +} + +.vote-title { + display: block; + color: inherit; + font-size: 18px; + font-weight: 600; + margin-top: 5px; + margin-bottom: 2px; +} + +.vote-title:hover, +.vote-title:focus { + color: inherit; +} + +.vote-info, +.vote-title { + margin-left: 45px; +} + +.vote-info, +.vote-info a { + color: #b0b8b8; + font-size: 12px; +} + +.vote-info a { + margin-right: 10px; +} + +.vote-info a:hover { + color: #18b090; +} + +.vote-icon { + text-align: right; + font-size: 38px; + display: block; + color: #e8e8e8; +} + +.vote-icon.active { + color: #18b090; +} + +body.body-small .vote-icon { + display: none; +} + +.lightBoxGallery { + text-align: center; +} + +.lightBoxGallery img { + margin: 5px; +} + +#small-chat { + position: fixed; + bottom: 20px; + right: 20px; + z-index: 1000; +} + +#small-chat .badge { + position: absolute; + top: -3px; + right: -4px; +} + +.open-small-chat { + height: 38px; + width: 38px; + display: block; + background: #18b090; + padding: 9px 8px; + text-align: center; + color: #fff; + border-radius: 50%; +} + +.open-small-chat:hover { + color: white; + background: #18b090; +} + +.small-chat-box { + display: none; + position: fixed; + bottom: 20px; + right: 75px; + background: #fff; + border: 1px solid var(--border-color); + width: 230px; + height: 320px; + border-radius: 4px; +} + +.small-chat-box.ng-small-chat { + display: block; +} + +.body-small .small-chat-box { + bottom: 70px; + right: 20px; +} + +.small-chat-box.active { + display: block; +} + +.small-chat-box { + z-index: 1001; +} + +.small-chat-box .heading { + background: #304050; + padding: 8px 15px; + font-weight: bold; + color: #fff; +} + +.small-chat-box .chat-date { + opacity: 0.6; + font-size: 10px; + font-weight: normal; +} + +.small-chat-box .content { + padding: 15px 15px; +} + +.small-chat-box .content .author-name { + font-weight: bold; + margin-bottom: 3px; + font-size: 11px; +} + +.small-chat-box .content > div { + padding-bottom: 20px; +} + +.small-chat-box .content .chat-message { + padding: 5px 10px; + border-radius: 6px; + font-size: 11px; + line-height: 14px; + max-width: 80%; + background: var(--bg-mid); + margin-bottom: 10px; +} + +.small-chat-box .content .chat-message.active { + background: #18b090; + color: #fff; +} + +.small-chat-box .content .left { + text-align: left; + clear: both; +} + +.small-chat-box .content .left .chat-message { + float: left; +} + +.small-chat-box .content .right { + text-align: right; + clear: both; +} + +.small-chat-box .content .right .chat-message { + float: right; +} + +.small-chat-box .form-chat { + padding: 10px 10px; +} + +/* + * metismenu - v2.0.2 + * A jQuery menu plugin + * https://github.com/onokumus/metisMenu + * + * Made by Osman Nuri Okumus + * Under MIT License + */ +.metismenu .plus-minus, +.metismenu .plus-times { + float: right; +} + +.metismenu .arrow { + float: right; + line-height: 1.42857; +} + +.metismenu .glyphicon.arrow:before { + content: "\e079"; +} + +.metismenu .active > a > .glyphicon.arrow:before { + content: "\e114"; +} + +.metismenu .fa.arrow:before { + content: "\f104"; + color: var(--active-color); +} + +.metismenu .active > a > .fa.arrow:before { + content: "\f107"; + color: #10d0f0; +} + +.metismenu .ion.arrow:before { + content: "\f3d2"; +} + +.metismenu .active > a > .ion.arrow:before { + content: "\f3d0"; +} + +.metismenu .fa.plus-minus:before, +.metismenu .fa.plus-times:before { + content: "\f067"; + color: var(--active-color); +} + +.metismenu .active > a > .fa.plus-times { + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + transform: rotate(45deg); + color: #10d0f0; +} + +.metismenu .active > a > .fa.plus-minus:before { + content: "\f068"; + color: #10d0f0; +} + +.metismenu .collapse { + display: none; +} + +.metismenu .collapse.in { + display: block; +} + +.metismenu .collapsing { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition-timing-function: ease; + transition-timing-function: ease; + -webkit-transition-duration: .35s; + transition-duration: .35s; + -webkit-transition-property: height, visibility; + transition-property: height, visibility; +} + +.mini-navbar .metismenu .collapse { + opacity: 0; +} + +.mini-navbar .metismenu .collapse.in { + opacity: 1; +} + +.mini-navbar .metismenu .collapse a { + display: none; +} + +.mini-navbar .metismenu .collapse.in a { + display: block; +} + +/* + * Usage: + * + *
+ * + */ +.sk-spinner-rotating-plane.sk-spinner { + width: 30px; + height: 30px; + background-color: #18b090; + margin: 0 auto; + -webkit-animation: sk-rotatePlane 1.2s infinite ease-in-out; + animation: sk-rotatePlane 1.2s infinite ease-in-out; +} + +@-webkit-keyframes sk-rotatePlane { + 0% { + -webkit-transform: perspective(120px) rotateX(0deg) rotateY(0deg); + transform: perspective(120px) rotateX(0deg) rotateY(0deg); + } + 50% { + -webkit-transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg); + transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg); + } + 100% { + -webkit-transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg); + transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg); + } +} + +@keyframes sk-rotatePlane { + 0% { + -webkit-transform: perspective(120px) rotateX(0deg) rotateY(0deg); + transform: perspective(120px) rotateX(0deg) rotateY(0deg); + } + 50% { + -webkit-transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg); + transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg); + } + 100% { + -webkit-transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg); + transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg); + } +} + +/* + * Usage: + * + *
+ *
+ *
+ *
+ * + */ +.sk-spinner-double-bounce.sk-spinner { + width: 40px; + height: 40px; + position: relative; + margin: 0 auto; +} + +.sk-spinner-double-bounce .sk-double-bounce1, +.sk-spinner-double-bounce .sk-double-bounce2 { + width: 100%; + height: 100%; + border-radius: 50%; + background-color: #18b090; + opacity: 0.6; + position: absolute; + top: 0; + left: 0; + -webkit-animation: sk-doubleBounce 2s infinite ease-in-out; + animation: sk-doubleBounce 2s infinite ease-in-out; +} + +.sk-spinner-double-bounce .sk-double-bounce2 { + -webkit-animation-delay: -1s; + animation-delay: -1s; +} + +@-webkit-keyframes sk-doubleBounce { + 0%, + 100% { + -webkit-transform: scale(0); + transform: scale(0); + } + 50% { + -webkit-transform: scale(1); + transform: scale(1); + } +} + +@keyframes sk-doubleBounce { + 0%, + 100% { + -webkit-transform: scale(0); + transform: scale(0); + } + 50% { + -webkit-transform: scale(1); + transform: scale(1); + } +} + +/* + * Usage: + * + *
+ *
+ *
+ *
+ *
+ *
+ *
+ * + */ +.sk-spinner-wave.sk-spinner { + margin: 0 auto; + width: 50px; + height: 30px; + text-align: center; + font-size: 10px; +} + +.sk-spinner-wave div { + background-color: #18b090; + height: 100%; + width: 6px; + display: inline-block; + -webkit-animation: sk-waveStretchDelay 1.2s infinite ease-in-out; + animation: sk-waveStretchDelay 1.2s infinite ease-in-out; +} + +.sk-spinner-wave .sk-rect2 { + -webkit-animation-delay: -1.1s; + animation-delay: -1.1s; +} + +.sk-spinner-wave .sk-rect3 { + -webkit-animation-delay: -1s; + animation-delay: -1s; +} + +.sk-spinner-wave .sk-rect4 { + -webkit-animation-delay: -0.9s; + animation-delay: -0.9s; +} + +.sk-spinner-wave .sk-rect5 { + -webkit-animation-delay: -0.8s; + animation-delay: -0.8s; +} + +@-webkit-keyframes sk-waveStretchDelay { + 0%, + 40%, + 100% { + -webkit-transform: scaleY(0.4); + transform: scaleY(0.4); + } + 20% { + -webkit-transform: scaleY(1); + transform: scaleY(1); + } +} + +@keyframes sk-waveStretchDelay { + 0%, + 40%, + 100% { + -webkit-transform: scaleY(0.4); + transform: scaleY(0.4); + } + 20% { + -webkit-transform: scaleY(1); + transform: scaleY(1); + } +} + +/* + * Usage: + * + *
+ *
+ *
+ *
+ * + */ +.sk-spinner-wandering-cubes.sk-spinner { + margin: 0 auto; + width: 32px; + height: 32px; + position: relative; +} + +.sk-spinner-wandering-cubes .sk-cube1, +.sk-spinner-wandering-cubes .sk-cube2 { + background-color: #18b090; + width: 10px; + height: 10px; + position: absolute; + top: 0; + left: 0; + -webkit-animation: sk-wanderingCubeMove 1.8s infinite ease-in-out; + animation: sk-wanderingCubeMove 1.8s infinite ease-in-out; +} + +.sk-spinner-wandering-cubes .sk-cube2 { + -webkit-animation-delay: -0.9s; + animation-delay: -0.9s; +} + +@-webkit-keyframes sk-wanderingCubeMove { + 25% { + -webkit-transform: translateX(42px) rotate(-90deg) scale(0.5); + transform: translateX(42px) rotate(-90deg) scale(0.5); + } + 50% { + /* Hack to make FF rotate in the right direction */ + -webkit-transform: translateX(42px) translateY(42px) rotate(-179deg); + transform: translateX(42px) translateY(42px) rotate(-179deg); + } + 50.1% { + -webkit-transform: translateX(42px) translateY(42px) rotate(-180deg); + transform: translateX(42px) translateY(42px) rotate(-180deg); + } + 75% { + -webkit-transform: translateX(0px) translateY(42px) rotate(-270deg) scale(0.5); + transform: translateX(0px) translateY(42px) rotate(-270deg) scale(0.5); + } + 100% { + -webkit-transform: rotate(-360deg); + transform: rotate(-360deg); + } +} + +@keyframes sk-wanderingCubeMove { + 25% { + -webkit-transform: translateX(42px) rotate(-90deg) scale(0.5); + transform: translateX(42px) rotate(-90deg) scale(0.5); + } + 50% { + /* Hack to make FF rotate in the right direction */ + -webkit-transform: translateX(42px) translateY(42px) rotate(-179deg); + transform: translateX(42px) translateY(42px) rotate(-179deg); + } + 50.1% { + -webkit-transform: translateX(42px) translateY(42px) rotate(-180deg); + transform: translateX(42px) translateY(42px) rotate(-180deg); + } + 75% { + -webkit-transform: translateX(0px) translateY(42px) rotate(-270deg) scale(0.5); + transform: translateX(0px) translateY(42px) rotate(-270deg) scale(0.5); + } + 100% { + -webkit-transform: rotate(-360deg); + transform: rotate(-360deg); + } +} + +/* + * Usage: + * + *
+ * + */ +.sk-spinner-pulse.sk-spinner { + width: 40px; + height: 40px; + margin: 0 auto; + background-color: #18b090; + border-radius: 100%; + -webkit-animation: sk-pulseScaleOut 1s infinite ease-in-out; + animation: sk-pulseScaleOut 1s infinite ease-in-out; +} + +@-webkit-keyframes sk-pulseScaleOut { + 0% { + -webkit-transform: scale(0); + transform: scale(0); + } + 100% { + -webkit-transform: scale(1); + transform: scale(1); + opacity: 0; + } +} + +@keyframes sk-pulseScaleOut { + 0% { + -webkit-transform: scale(0); + transform: scale(0); + } + 100% { + -webkit-transform: scale(1); + transform: scale(1); + opacity: 0; + } +} + +/* + * Usage: + * + *
+ *
+ *
+ *
+ * + */ +.sk-spinner-chasing-dots.sk-spinner { + margin: 0 auto; + width: 40px; + height: 40px; + position: relative; + text-align: center; + -webkit-animation: sk-chasingDotsRotate 2s infinite linear; + animation: sk-chasingDotsRotate 2s infinite linear; +} + +.sk-spinner-chasing-dots .sk-dot1, +.sk-spinner-chasing-dots .sk-dot2 { + width: 60%; + height: 60%; + display: inline-block; + position: absolute; + top: 0; + background-color: #18b090; + border-radius: 100%; + -webkit-animation: sk-chasingDotsBounce 2s infinite ease-in-out; + animation: sk-chasingDotsBounce 2s infinite ease-in-out; +} + +.sk-spinner-chasing-dots .sk-dot2 { + top: auto; + bottom: 0; + -webkit-animation-delay: -1s; + animation-delay: -1s; +} + +@-webkit-keyframes sk-chasingDotsRotate { + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} + +@keyframes sk-chasingDotsRotate { + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} + +@-webkit-keyframes sk-chasingDotsBounce { + 0%, + 100% { + -webkit-transform: scale(0); + transform: scale(0); + } + 50% { + -webkit-transform: scale(1); + transform: scale(1); + } +} + +@keyframes sk-chasingDotsBounce { + 0%, + 100% { + -webkit-transform: scale(0); + transform: scale(0); + } + 50% { + -webkit-transform: scale(1); + transform: scale(1); + } +} + +/* + * Usage: + * + *
+ *
+ *
+ *
+ *
+ * + */ +.sk-spinner-three-bounce.sk-spinner { + margin: 0 auto; + width: 70px; + text-align: center; +} + +.sk-spinner-three-bounce div { + width: 18px; + height: 18px; + background-color: #18b090; + border-radius: 100%; + display: inline-block; + -webkit-animation: sk-threeBounceDelay 1.4s infinite ease-in-out; + animation: sk-threeBounceDelay 1.4s infinite ease-in-out; + /* Prevent first frame from flickering when animation starts */ + -webkit-animation-fill-mode: both; + animation-fill-mode: both; +} + +.sk-spinner-three-bounce .sk-bounce1 { + -webkit-animation-delay: -0.32s; + animation-delay: -0.32s; +} + +.sk-spinner-three-bounce .sk-bounce2 { + -webkit-animation-delay: -0.16s; + animation-delay: -0.16s; +} + +@-webkit-keyframes sk-threeBounceDelay { + 0%, + 80%, + 100% { + -webkit-transform: scale(0); + transform: scale(0); + } + 40% { + -webkit-transform: scale(1); + transform: scale(1); + } +} + +@keyframes sk-threeBounceDelay { + 0%, + 80%, + 100% { + -webkit-transform: scale(0); + transform: scale(0); + } + 40% { + -webkit-transform: scale(1); + transform: scale(1); + } +} + +/* + * Usage: + * + *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ * + */ +.sk-spinner-circle.sk-spinner { + margin: 0 auto; + width: 22px; + height: 22px; + position: relative; +} + +.sk-spinner-circle .sk-circle { + width: 100%; + height: 100%; + position: absolute; + left: 0; + top: 0; +} + +.sk-spinner-circle .sk-circle:before { + content: ''; + display: block; + margin: 0 auto; + width: 20%; + height: 20%; + background-color: #18b090; + border-radius: 100%; + -webkit-animation: sk-circleBounceDelay 1.2s infinite ease-in-out; + animation: sk-circleBounceDelay 1.2s infinite ease-in-out; + /* Prevent first frame from flickering when animation starts */ + -webkit-animation-fill-mode: both; + animation-fill-mode: both; +} + +.sk-spinner-circle .sk-circle2 { + -webkit-transform: rotate(30deg); + -ms-transform: rotate(30deg); + transform: rotate(30deg); +} + +.sk-spinner-circle .sk-circle3 { + -webkit-transform: rotate(60deg); + -ms-transform: rotate(60deg); + transform: rotate(60deg); +} + +.sk-spinner-circle .sk-circle4 { + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} + +.sk-spinner-circle .sk-circle5 { + -webkit-transform: rotate(120deg); + -ms-transform: rotate(120deg); + transform: rotate(120deg); +} + +.sk-spinner-circle .sk-circle6 { + -webkit-transform: rotate(150deg); + -ms-transform: rotate(150deg); + transform: rotate(150deg); +} + +.sk-spinner-circle .sk-circle7 { + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); +} + +.sk-spinner-circle .sk-circle8 { + -webkit-transform: rotate(210deg); + -ms-transform: rotate(210deg); + transform: rotate(210deg); +} + +.sk-spinner-circle .sk-circle9 { + -webkit-transform: rotate(240deg); + -ms-transform: rotate(240deg); + transform: rotate(240deg); +} + +.sk-spinner-circle .sk-circle10 { + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg); + transform: rotate(270deg); +} + +.sk-spinner-circle .sk-circle11 { + -webkit-transform: rotate(300deg); + -ms-transform: rotate(300deg); + transform: rotate(300deg); +} + +.sk-spinner-circle .sk-circle12 { + -webkit-transform: rotate(330deg); + -ms-transform: rotate(330deg); + transform: rotate(330deg); +} + +.sk-spinner-circle .sk-circle2:before { + -webkit-animation-delay: -1.1s; + animation-delay: -1.1s; +} + +.sk-spinner-circle .sk-circle3:before { + -webkit-animation-delay: -1s; + animation-delay: -1s; +} + +.sk-spinner-circle .sk-circle4:before { + -webkit-animation-delay: -0.9s; + animation-delay: -0.9s; +} + +.sk-spinner-circle .sk-circle5:before { + -webkit-animation-delay: -0.8s; + animation-delay: -0.8s; +} + +.sk-spinner-circle .sk-circle6:before { + -webkit-animation-delay: -0.7s; + animation-delay: -0.7s; +} + +.sk-spinner-circle .sk-circle7:before { + -webkit-animation-delay: -0.6s; + animation-delay: -0.6s; +} + +.sk-spinner-circle .sk-circle8:before { + -webkit-animation-delay: -0.5s; + animation-delay: -0.5s; +} + +.sk-spinner-circle .sk-circle9:before { + -webkit-animation-delay: -0.4s; + animation-delay: -0.4s; +} + +.sk-spinner-circle .sk-circle10:before { + -webkit-animation-delay: -0.3s; + animation-delay: -0.3s; +} + +.sk-spinner-circle .sk-circle11:before { + -webkit-animation-delay: -0.2s; + animation-delay: -0.2s; +} + +.sk-spinner-circle .sk-circle12:before { + -webkit-animation-delay: -0.1s; + animation-delay: -0.1s; +} + +@-webkit-keyframes sk-circleBounceDelay { + 0%, + 80%, + 100% { + -webkit-transform: scale(0); + transform: scale(0); + } + 40% { + -webkit-transform: scale(1); + transform: scale(1); + } +} + +@keyframes sk-circleBounceDelay { + 0%, + 80%, + 100% { + -webkit-transform: scale(0); + transform: scale(0); + } + 40% { + -webkit-transform: scale(1); + transform: scale(1); + } +} + +/* + * Usage: + * + *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ * + */ +.sk-spinner-cube-grid { + /* + * Spinner positions + * 1 2 3 + * 4 5 6 + * 7 8 9 + */ +} + +.sk-spinner-cube-grid.sk-spinner { + width: 30px; + height: 30px; + margin: 0 auto; +} + +.sk-spinner-cube-grid .sk-cube { + width: 33%; + height: 33%; + background-color: #18b090; + float: left; + -webkit-animation: sk-cubeGridScaleDelay 1.3s infinite ease-in-out; + animation: sk-cubeGridScaleDelay 1.3s infinite ease-in-out; +} + +.sk-spinner-cube-grid .sk-cube:nth-child(1) { + -webkit-animation-delay: 0.2s; + animation-delay: 0.2s; +} + +.sk-spinner-cube-grid .sk-cube:nth-child(2) { + -webkit-animation-delay: 0.3s; + animation-delay: 0.3s; +} + +.sk-spinner-cube-grid .sk-cube:nth-child(3) { + -webkit-animation-delay: 0.4s; + animation-delay: 0.4s; +} + +.sk-spinner-cube-grid .sk-cube:nth-child(4) { + -webkit-animation-delay: 0.1s; + animation-delay: 0.1s; +} + +.sk-spinner-cube-grid .sk-cube:nth-child(5) { + -webkit-animation-delay: 0.2s; + animation-delay: 0.2s; +} + +.sk-spinner-cube-grid .sk-cube:nth-child(6) { + -webkit-animation-delay: 0.3s; + animation-delay: 0.3s; +} + +.sk-spinner-cube-grid .sk-cube:nth-child(7) { + -webkit-animation-delay: 0s; + animation-delay: 0s; +} + +.sk-spinner-cube-grid .sk-cube:nth-child(8) { + -webkit-animation-delay: 0.1s; + animation-delay: 0.1s; +} + +.sk-spinner-cube-grid .sk-cube:nth-child(9) { + -webkit-animation-delay: 0.2s; + animation-delay: 0.2s; +} + +@-webkit-keyframes sk-cubeGridScaleDelay { + 0%, + 70%, + 100% { + -webkit-transform: scale3D(1, 1, 1); + transform: scale3D(1, 1, 1); + } + 35% { + -webkit-transform: scale3D(0, 0, 1); + transform: scale3D(0, 0, 1); + } +} + +@keyframes sk-cubeGridScaleDelay { + 0%, + 70%, + 100% { + -webkit-transform: scale3D(1, 1, 1); + transform: scale3D(1, 1, 1); + } + 35% { + -webkit-transform: scale3D(0, 0, 1); + transform: scale3D(0, 0, 1); + } +} + +/* + * Usage: + * + *
+ * + *
+ * + */ +.sk-spinner-wordpress.sk-spinner { + background-color: #18b090; + width: 30px; + height: 30px; + border-radius: 30px; + position: relative; + margin: 0 auto; + -webkit-animation: sk-innerCircle 1s linear infinite; + animation: sk-innerCircle 1s linear infinite; +} + +.sk-spinner-wordpress .sk-inner-circle { + display: block; + background-color: #fff; + width: 8px; + height: 8px; + position: absolute; + border-radius: 8px; + top: 5px; + left: 5px; +} + +@-webkit-keyframes sk-innerCircle { + 0% { + -webkit-transform: rotate(0); + transform: rotate(0); + } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} + +@keyframes sk-innerCircle { + 0% { + -webkit-transform: rotate(0); + transform: rotate(0); + } + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} + +/* + * Usage: + * + *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ * + */ +.sk-spinner-fading-circle.sk-spinner { + margin: 0 auto; + width: 22px; + height: 22px; + position: relative; +} + +.sk-spinner-fading-circle .sk-circle { + width: 100%; + height: 100%; + position: absolute; + left: 0; + top: 0; +} + +.sk-spinner-fading-circle .sk-circle:before { + content: ''; + display: block; + margin: 0 auto; + width: 18%; + height: 18%; + background-color: #18b090; + border-radius: 100%; + -webkit-animation: sk-circleFadeDelay 1.2s infinite ease-in-out; + animation: sk-circleFadeDelay 1.2s infinite ease-in-out; + /* Prevent first frame from flickering when animation starts */ + -webkit-animation-fill-mode: both; + animation-fill-mode: both; +} + +.sk-spinner-fading-circle .sk-circle2 { + -webkit-transform: rotate(30deg); + -ms-transform: rotate(30deg); + transform: rotate(30deg); +} + +.sk-spinner-fading-circle .sk-circle3 { + -webkit-transform: rotate(60deg); + -ms-transform: rotate(60deg); + transform: rotate(60deg); +} + +.sk-spinner-fading-circle .sk-circle4 { + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} + +.sk-spinner-fading-circle .sk-circle5 { + -webkit-transform: rotate(120deg); + -ms-transform: rotate(120deg); + transform: rotate(120deg); +} + +.sk-spinner-fading-circle .sk-circle6 { + -webkit-transform: rotate(150deg); + -ms-transform: rotate(150deg); + transform: rotate(150deg); +} + +.sk-spinner-fading-circle .sk-circle7 { + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); +} + +.sk-spinner-fading-circle .sk-circle8 { + -webkit-transform: rotate(210deg); + -ms-transform: rotate(210deg); + transform: rotate(210deg); +} + +.sk-spinner-fading-circle .sk-circle9 { + -webkit-transform: rotate(240deg); + -ms-transform: rotate(240deg); + transform: rotate(240deg); +} + +.sk-spinner-fading-circle .sk-circle10 { + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg); + transform: rotate(270deg); +} + +.sk-spinner-fading-circle .sk-circle11 { + -webkit-transform: rotate(300deg); + -ms-transform: rotate(300deg); + transform: rotate(300deg); +} + +.sk-spinner-fading-circle .sk-circle12 { + -webkit-transform: rotate(330deg); + -ms-transform: rotate(330deg); + transform: rotate(330deg); +} + +.sk-spinner-fading-circle .sk-circle2:before { + -webkit-animation-delay: -1.1s; + animation-delay: -1.1s; +} + +.sk-spinner-fading-circle .sk-circle3:before { + -webkit-animation-delay: -1s; + animation-delay: -1s; +} + +.sk-spinner-fading-circle .sk-circle4:before { + -webkit-animation-delay: -0.9s; + animation-delay: -0.9s; +} + +.sk-spinner-fading-circle .sk-circle5:before { + -webkit-animation-delay: -0.8s; + animation-delay: -0.8s; +} + +.sk-spinner-fading-circle .sk-circle6:before { + -webkit-animation-delay: -0.7s; + animation-delay: -0.7s; +} + +.sk-spinner-fading-circle .sk-circle7:before { + -webkit-animation-delay: -0.6s; + animation-delay: -0.6s; +} + +.sk-spinner-fading-circle .sk-circle8:before { + -webkit-animation-delay: -0.5s; + animation-delay: -0.5s; +} + +.sk-spinner-fading-circle .sk-circle9:before { + -webkit-animation-delay: -0.4s; + animation-delay: -0.4s; +} + +.sk-spinner-fading-circle .sk-circle10:before { + -webkit-animation-delay: -0.3s; + animation-delay: -0.3s; +} + +.sk-spinner-fading-circle .sk-circle11:before { + -webkit-animation-delay: -0.2s; + animation-delay: -0.2s; +} + +.sk-spinner-fading-circle .sk-circle12:before { + -webkit-animation-delay: -0.1s; + animation-delay: -0.1s; +} + +@-webkit-keyframes sk-circleFadeDelay { + 0%, + 39%, + 100% { + opacity: 0; + } + 40% { + opacity: 1; + } +} + +@keyframes sk-circleFadeDelay { + 0%, + 39%, + 100% { + opacity: 0; + } + 40% { + opacity: 1; + } +} + +.ibox-content > .sk-spinner { + display: none; +} + +.ibox-content.sk-loading { + position: relative; +} + +.ibox-content.sk-loading:after { + content: ''; + background-color: rgba(255, 255, 255, 0.7); + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; +} + +.ibox-content.sk-loading > .sk-spinner { + display: block; + position: absolute; + top: 40%; + left: 0; + right: 0; + z-index: 2000; +} + +/* PACE PLUGIN +-------------------------------------------------- */ +.landing-page.pace .pace-progress { + background: #fff; + position: fixed; + z-index: 2000; + top: 0; + left: 0; + height: 2px; + -webkit-transition: width 1s; + -moz-transition: width 1s; + -o-transition: width 1s; + transition: width 1s; +} + +.pace-inactive { + display: none; +} + +body.landing-page { + color: var(--text); + font-family: 'Open Sans', helvetica, arial, sans-serif; + background-color: #fff; +} + +.landing-page { + /* CUSTOMIZE THE NAVBAR + -------------------------------------------------- */ + /* Flip around the padding for proper display in narrow viewports */ + /* BACKGROUNDS SLIDER + -------------------------------------------------- */ + /* CUSTOMIZE THE CAROUSEL + -------------------------------------------------- */ + /* Carousel base class */ + /* Since positioning the image, we need to help out the caption */ + /* Declare heights because of positioning of img element */ + /* Sections + ------------------------- */ + /* Buttons - only primary custom button + ------------------------- */ + /* RESPONSIVE CSS + -------------------------------------------------- */ +} + +.landing-page button:focus { + outline: 0; +} + +.landing-page .container { + overflow: hidden; +} + +.landing-page span.navy { + color: #18b090; +} + +.landing-page p.text-color { + color: var(--text); +} + +.landing-page a.navy-link { + color: #18b090; + text-decoration: none; +} + +.landing-page a.navy-link:hover { + color: #18a080; +} + +.landing-page section p { + color: #b0b0b0; + font-size: 13px; +} + +.landing-page address { + font-size: 13px; +} + +.landing-page h1 { + margin-top: 10px; + font-size: 30px; + font-weight: 200; +} + +.landing-page .navy-line { + width: 60px; + height: 1px; + margin: 60px auto 0; + border-bottom: 2px solid #18b090; +} + +.landing-page .navbar { + padding: 0 1rem; +} + +.landing-page .navbar-wrapper { + position: fixed; + top: 0; + right: 0; + left: 0; + z-index: 200; +} + +.landing-page .navbar-wrapper > .container { + padding-right: 0; + padding-left: 0; +} + +.landing-page .navbar-wrapper .navbar { + padding-right: 15px; + padding-left: 15px; +} + +.landing-page .navbar-default.navbar-scroll { + background-color: #fff; + border-color: #fff; + padding: 15px 0; +} + +.landing-page .navbar-default { + background-color: transparent; + border-color: transparent; + transition: all 0.3s ease-in-out 0s; +} + +.landing-page .navbar-default .nav li a { + color: #fff; + font-family: 'Open Sans', helvetica, arial, sans-serif; + font-weight: 700; + letter-spacing: 1px; + text-transform: uppercase; + font-size: 14px; +} + +.landing-page .navbar-nav > li > a { + padding-top: 25px; + border-top: 6px solid transparent; +} + +.landing-page .navbar-default .navbar-nav > .active > a, +.landing-page .navbar-default .navbar-nav > .active > a:hover { + background: transparent; + color: #fff; + border-top: 6px solid #18b090; +} + +.landing-page .navbar-default .navbar-nav > li > a:hover, +.landing-page .navbar-default .navbar-nav > li > a:focus { + color: #18b090; + background: inherit; +} + +.landing-page .navbar-default .navbar-nav > .active > a:focus { + background: transparent; + color: #fff; +} + +.landing-page .navbar-default .navbar-nav > .active > a:focus { + background: transparent; + color: #ffffff; +} + +.landing-page .navbar-default.navbar-scroll .navbar-nav > .active > a:focus { + background: transparent; + color: inherit; +} + +.landing-page .navbar-default .navbar-brand:hover, +.landing-page .navbar-default .navbar-brand:focus { + background: #18a080; + color: #fff; +} + +.landing-page .navbar-default .navbar-brand { + color: #fff; + height: auto; + display: block; + font-size: 14px; + background: #18b090; + padding: 15px 20px 15px 20px; + border-radius: 0 0 5px 5px; + font-weight: 700; + transition: all 0.3s ease-in-out 0s; + margin-top: -16px; +} + +.landing-page .navbar-scroll.navbar-default .nav li a { + color: var(--text); +} + +.landing-page .navbar-scroll.navbar-default .nav li a:hover { + color: #18b090; +} + +.landing-page .navbar-wrapper .navbar.navbar-scroll { + padding-top: 0; + padding-bottom: 5px; + border-bottom: 1px solid var(--border-color); + border-radius: 0; +} + +.landing-page .nav.navbar-right { + flex-direction: row; +} + +.landing-page .nav > li.active { + border: none; + background: inherit; +} + +.landing-page .nav > li > a { + padding: 25px 10px 15px 10px; +} + +.landing-page .navbar-scroll .navbar-nav > li > a { + padding: 20px 10px; +} + +.landing-page .navbar-default .navbar-nav > li .nav-link.active, +.landing-page .navbar-default .navbar-nav > li .nav-link.active:hover { + border-top: 6px solid #18b090; +} + +.landing-page .navbar-fixed-top { + border: none !important; +} + +.landing-page .navbar-fixed-top.navbar-scroll { + border-bottom: 1px solid var(--border-color) !important; +} + +.landing-page .navbar.navbar-scroll .navbar-brand { + margin-top: 5px; + border-radius: 5px; + font-size: 12px; + padding: 10px; + height: auto; +} + +.landing-page .header-back { + height: 470px; + width: 100%; +} + +.landing-page .header-back.one { + background: url('../img/landing/header_one.jpg') 50% 0 no-repeat; +} + +.landing-page .header-back.two { + background: url('../img/landing/header_two.jpg') 50% 0 no-repeat; +} + +.landing-page .carousel { + height: 470px; + overflow: hidden; +} + +.landing-page .carousel-caption { + z-index: 10; +} + +.landing-page .carousel .item { + height: 470px; + background-color: #777; +} + +.landing-page .carousel-inner > .item > img { + position: absolute; + top: 0; + left: 0; + min-width: 100%; + height: 470px; +} + +.landing-page .carousel-fade .carousel-inner .item { + opacity: 0; + -webkit-transition-property: opacity; + transition-property: opacity; +} + +.landing-page .carousel-fade .carousel-inner .active { + opacity: 1; +} + +.landing-page .carousel-fade .carousel-inner .active.left, +.landing-page .carousel-fade .carousel-inner .active.right { + left: 0; + opacity: 0; + z-index: 1; +} + +.landing-page .carousel-fade .carousel-inner .next.left, +.landing-page .carousel-fade .carousel-inner .prev.right { + opacity: 1; +} + +.landing-page .carousel-fade .carousel-control { + z-index: 2; +} + +.landing-page .carousel-control.left, +.landing-page .carousel-control.right { + background: none; +} + +.landing-page .carousel-control { + width: 6%; +} + +.landing-page .carousel-inner .container { + position: relative; + overflow: visible; +} + +.landing-page .carousel-inner { + overflow: visible; +} + +.landing-page .carousel-caption { + position: absolute; + top: 100px; + left: 0; + bottom: auto; + right: auto; + text-align: left; +} + +.landing-page .carousel-caption { + position: absolute; + top: 100px; + left: 0; + bottom: auto; + right: auto; + text-align: left; +} + +.landing-page .carousel-caption.blank { + top: 140px; +} + +.landing-page .carousel-image { + position: absolute; + right: 10px; + top: 150px; +} + +.landing-page .carousel-indicators { + padding-right: 60px; +} + +.landing-page .carousel-caption h1 { + font-weight: 700; + font-size: 38px; + text-transform: uppercase; + text-shadow: none; + letter-spacing: -1.5px; +} + +.landing-page .carousel-caption p { + font-weight: 700; + text-transform: uppercase; + text-shadow: none; +} + +.landing-page .caption-link { + color: #fff; + margin-left: 10px; + text-transform: capitalize; + font-weight: 400; +} + +.landing-page .caption-link:hover { + text-decoration: none; + color: inherit; +} + +.landing-page .services { + padding-top: 60px; +} + +.landing-page .services h2 { + font-size: 20px; + letter-spacing: -1px; + font-weight: 600; + text-transform: uppercase; +} + +.landing-page .features-block { + margin-top: 40px; +} + +.landing-page .features-text { + margin-top: 40px; +} + +.landing-page .features small { + color: #18b090; +} + +.landing-page .features h2 { + font-size: 18px; + margin-top: 5px; +} + +.landing-page .features-text-alone { + margin: 40px 0; +} + +.landing-page .features-text-alone h1 { + font-weight: 200; +} + +.landing-page .features-icon { + color: #18b090; + font-size: 40px; +} + +.landing-page .navy-section { + margin-top: 60px; + background: #18b090; + color: #fff; + padding: 20px 0; +} + +.landing-page .gray-section { + background: var(--bg-mid); + margin-top: 60px; +} + +.landing-page .team-member { + text-align: center; +} + +.landing-page .team-member img { + margin: auto; +} + +.landing-page .social-icon a { + background: #18b090; + color: #fff; + padding: 4px 8px; + height: 28px; + width: 28px; + display: block; + border-radius: 50px; +} + +.landing-page .social-icon a:hover { + background: #18a080; +} + +.landing-page .img-small { + height: 88px; + width: 88px; +} + +.landing-page .pricing-plan { + margin: 20px 30px 0 30px; + border-radius: 4px; +} + +.landing-page .pricing-plan.selected { + transform: scale(1.1); + background: var(--bg-mid); +} + +.landing-page .pricing-plan li { + padding: 10px 16px; + border-top: 1px solid var(--border-color); + text-align: center; + color: #b0b0b0; +} + +.landing-page .pricing-plan .pricing-price span { + font-weight: 700; + color: #18b090; +} + +.landing-page li.pricing-desc { + font-size: 13px; + border-top: none; + padding: 20px 16px; +} + +.landing-page li.pricing-title { + background: #18b090; + color: #fff; + padding: 10px; + border-radius: 4px 4px 0 0; + font-size: 22px; + font-weight: 600; +} + +.landing-page .testimonials { + padding-top: 80px; + padding-bottom: 90px; + background-color: #18b090; + background-image: url('../img/landing/avatar_all.png'); +} + +.landing-page .big-icon { + font-size: 56px !important; +} + +.landing-page .features .big-icon { + color: #18b090 !important; +} + +.landing-page .contact { + background-image: url('../img/landing/word_map.png'); + background-position: 50% 50%; + background-repeat: no-repeat; + margin-top: 60px; +} + +.landing-page section.timeline { + padding-bottom: 30px; +} + +.landing-page section.comments { + padding-bottom: 80px; +} + +.landing-page .comments-avatar { + margin-top: 25px; + margin-left: 22px; + margin-bottom: 25px; +} + +.landing-page .comments-avatar .commens-name { + font-weight: 600; + font-size: 14px; +} + +.landing-page .comments-avatar img { + width: 42px; + height: 42px; + border-radius: 50%; + margin-right: 10px; +} + +.landing-page .bubble { + position: relative; + height: 120px; + padding: 20px; + background: #ffffff; + -webkit-border-radius: 10px; + -moz-border-radius: 10px; + border-radius: 10px; + font-style: italic; + font-size: 14px; +} + +.landing-page .bubble:after { + content: ''; + position: absolute; + border-style: solid; + border-width: 15px 14px 0; + border-color: #ffffff transparent; + display: block; + width: 0; + z-index: 1; + bottom: -15px; + left: 30px; +} + +.landing-page .btn-primary.btn-outline:hover, +.landing-page .btn-success.btn-outline:hover, +.landing-page .btn-info.btn-outline:hover, +.landing-page .btn-warning.btn-outline:hover, +.landing-page .btn-danger.btn-outline:hover { + color: #fff; +} + +.landing-page .btn-primary { + background-color: #18b090; + border-color: #18b090; + color: #ffffff; + font-size: 14px; + padding: 10px 20px; + font-weight: 600; +} + +.landing-page .btn-primary:hover, +.landing-page .btn-primary:focus, +.landing-page .btn-primary:active, +.landing-page .btn-primary.active, +.landing-page .open .dropdown-toggle.btn-primary { + background-color: #18a080; + border-color: #18a080; + color: #ffffff; +} + +.landing-page .btn-primary:active, +.landing-page .btn-primary.active, +.landing-page .open .dropdown-toggle.btn-primary { + background-image: none; +} + +.landing-page .btn-primary.disabled, +.landing-page .btn-primary.disabled:hover, +.landing-page .btn-primary.disabled:focus, +.landing-page .btn-primary.disabled:active, +.landing-page .btn-primary.disabled.active, +.landing-page .btn-primary[disabled], +.landing-page .btn-primary[disabled]:hover, +.landing-page .btn-primary[disabled]:focus, +.landing-page .btn-primary[disabled]:active, +.landing-page .btn-primary.active[disabled], +.landing-page fieldset[disabled] .btn-primary, +.landing-page fieldset[disabled] .btn-primary:hover, +.landing-page fieldset[disabled] .btn-primary:focus, +.landing-page fieldset[disabled] .btn-primary:active, +.landing-page fieldset[disabled] .btn-primary.active { + background-color: #20c8a0; + border-color: #20c8a0; +} + +@media (min-width: 768px) { + .landing-page { + /* Navbar positioning foo */ + /* The navbar becomes detached from the top, so we round the corners */ + /* Bump up size of carousel content */ + } + + .landing-page .navbar-wrapper .container { + padding-right: 15px; + padding-left: 15px; + } + + .landing-page .navbar-wrapper .navbar { + padding-right: 0; + padding-left: 0; + } + + .landing-page .navbar-wrapper .navbar { + border-radius: 4px; + } + + .landing-page .carousel-caption p { + margin-bottom: 20px; + font-size: 14px; + line-height: 1.4; + } + + .landing-page .featurette-heading { + font-size: 50px; + } +} + +@media (max-width: 992px) { + .landing-page .carousel-image { + display: none; + } +} + +@media (max-width: 768px) { + .landing-page .carousel-caption, + .landing-page .carousel-caption.blank { + left: 5%; + top: 80px; + } + + .landing-page .carousel-caption h1 { + font-size: 28px; + } + + .landing-page .navbar.navbar-scroll .navbar-brand { + margin-top: 6px; + } + + .landing-page .navbar-default { + background-color: #fff; + border-color: #fff; + padding: 15px 0; + } + + .landing-page .navbar-default .navbar-nav > .active > a:focus { + background: transparent; + color: inherit; + } + + .landing-page .navbar-default .nav li a { + color: var(--text); + } + + .landing-page .navbar-default .nav li a:hover { + color: #18b090; + } + + .landing-page .navbar-wrapper .navbar { + padding-top: 0; + padding-bottom: 5px; + border-bottom: 1px solid var(--border-color); + border-radius: 0; + } + + .landing-page .nav > li > a { + padding: 10px 10px 15px 10px; + } + + .landing-page .navbar-nav > li > a { + padding: 20px 10px; + } + + .landing-page .navbar .navbar-brand { + margin-top: 5px; + border-radius: 5px; + font-size: 12px; + padding: 10px; + height: auto; + } + + .landing-page .navbar-wrapper .navbar { + padding-left: 15px; + padding-right: 5px; + } + + .landing-page .navbar-default .navbar-nav > .active > a, + .landing-page .navbar-default .navbar-nav > .active > a:hover { + color: inherit; + } + + .landing-page .carousel-control { + display: none; + } +} + +@media (min-width: 992px) { + .landing-page .featurette-heading { + margin-top: 120px; + } +} + +@media (max-width: 768px) { + .landing-page .navbar .navbar-header { + display: block; + float: none; + } + + .landing-page .navbar .navbar-header .navbar-toggle { + background-color: #ffffff; + padding: 9px 10px; + border: none; + } + + .landing-page .nav.navbar-right { + flex-direction: column; + } +} + +.landing-page .navbar-toggle { + color: #ddd; + float: right; +} + +.landing-page .navbar-toggle i { + font-size: 24px; +} + +body.rtls { + text-align: right !important; + /* Theme config */ +} + +body.rtls .nav-second-level li a { + padding: 7px 35px 7px 10px; +} + +body.rtls .ibox-title h5 { + float: right; +} + +body.rtls .float-right { + float: left !important; +} + +body.rtls .float-left { + float: right !important; +} + +body.rtls .ibox-title { + background-color: rgba(0, 0, 0, 0.8); + padding: 15px 15px 8px 15px; +} + +body.rtls .ibox-title .label { + float: left; +} + +body.rtls #small-chat { + right: auto; + left: 20px; +} + +body.rtls .small-chat-box { + right: auto; + left: 75px; +} + +body.rtls .ibox-tools { + float: left; + position: static; +} + +body.rtls .stat-percent { + float: left; +} + +body.rtls .navbar-right { + float: left !important; +} + +body.rtls .navbar-top-links li:last-child { + margin-left: 40px; + margin-right: 0; +} + +body.rtls .minimalize-styl-2 { + float: right; + margin: 14px 20px 5px 5px; +} + +body.rtls .feed-element > .float-left { + margin-left: 10px; + margin-right: 0; +} + +body.rtls .timeline-item .date { + text-align: left; +} + +body.rtls .timeline-item .date i { + left: 0; + right: auto; +} + +body.rtls .timeline-item .content { + border-right: 1px solid var(--border-color); + border-left: none; +} + +body.rtls .theme-config { + left: 0; + right: auto; +} + +body.rtls .spin-icon { + border-radius: 0 20px 20px 0; +} + +body.rtls .toast-close-button { + float: left; +} + +body.rtls #toast-container > .toast:before { + margin: auto -1.5em auto 0.5em; +} + +body.rtls #toast-container > div { + padding: 15px 50px 15px 15px; +} + +body.rtls #toast-container > div { + background-position: 95% center; +} + +body.rtls .center-orientation .vertical-timeline-icon i { + margin-left: 0; + margin-right: -12px; +} + +body.rtls .vertical-timeline-icon i { + right: 50%; + left: auto; + margin-left: auto; + margin-right: -12px; +} + +body.rtls .file-box { + float: right; +} + +body.rtls ul.notes li { + float: right; +} + +body.rtls .chat-users, +body.rtls .chat-statistic { + margin-right: -30px; + margin-left: auto; +} + +body.rtls .dropdown-menu > li > a { + text-align: right; +} + +body.rtls .b-r { + border-left: 1px solid var(--border-color); + border-right: none; +} + +body.rtls .dd-list .dd-list { + padding-right: 30px; + padding-left: 0; +} + +body.rtls .dd-item > button { + float: right; +} + +body.rtls .theme-config-box { + margin-left: -220px; + margin-right: 0; +} + +body.rtls .theme-config-box.show { + margin-left: 0; + margin-right: 0; +} + +body.rtls .spin-icon { + right: 0; + left: auto; +} + +body.rtls .skin-settings { + margin-right: 40px; + margin-left: 0; +} + +body.rtls .skin-settings { + direction: ltr; +} + +body.rtls .footer.fixed { + margin-right: 220px; + margin-left: 0; +} + +body.rtls .navbar-static-top .dropdown-menu { + left: 0; + right: auto; +} + +body.rtls .social-footer .social-comment img, +body.rtls .social-avatar img { + margin-left: 10px; + margin-right: 0; +} + +body.rtls .sidebar-container .sidebar-message > a > .float-left { + margin-left: 10px; + margin-right: 0; +} + +body.rtls .setings-item .switch { + margin-left: 5px; +} + +body.rtls .nav > li > a i { + margin-left: 6px; +} + +@media (max-width: 992px) { + body.rtls .chat-users, + body.rtls .chat-statistic { + margin-right: 0; + } +} + +body.rtls.mini-navbar .footer.fixed, +body.body-small.mini-navbar .footer.fixed { + margin: 0 70px 0 0; +} + +body.rtls.mini-navbar.fixed-sidebar .footer.fixed, +body.body-small.mini-navbar .footer.fixed { + margin: 0 0 0 0; +} + +body.rtls.top-navigation .navbar-toggle { + float: right; + margin-left: 15px; + margin-right: 15px; +} + +.body-small.rtls.top-navigation .navbar-header { + float: none; +} + +body.rtls.top-navigation #page-wrapper { + margin: 0; +} + +body.rtls.mini-navbar.fixed-sidebar #page-wrapper { + margin: 0 0 0 0; +} + +body.rtls.body-small.fixed-sidebar.mini-navbar #page-wrapper { + margin: 0 220px 0 0; +} + +body.rtls.body-small.fixed-sidebar.mini-navbar .navbar-static-side { + width: 220px; +} + +.body-small.rtls .navbar-fixed-top { + margin-right: 0; +} + +.body-small.rtls .navbar-header { + float: right; +} + +body.rtls .navbar-top-links li:last-child { + margin-left: 20px; +} + +body.rtls .top-navigation #page-wrapper, +body.rtls.mini-navbar .top-navigation #page-wrapper, +body.rtls.mini-navbar.top-navigation #page-wrapper { + margin: 0; +} + +body.rtls .top-navigation .footer.fixed, +body.rtls.top-navigation .footer.fixed { + margin: 0; +} + +@media (max-width: 768px) { + body.rtls .navbar-top-links li:last-child { + margin-left: 10px; + } + + .navbar-top-links li a { + padding: 20px 5px; + } + + .body-small.rtls #page-wrapper { + position: inherit; + margin: 0 0 0 0; + min-height: 1000px; + } + + .rtls.fixed-sidebar.body-small .navbar-static-side { + display: none; + z-index: 2001; + position: fixed; + width: 220px; + } + + .rtls.fixed-sidebar.body-small.mini-navbar .navbar-static-side { + display: block; + } +} + +.rtls .ltr-support { + direction: ltr; +} + +.rtls.mini-navbar .nav-second-level, +.rtls.mini-navbar li.active .nav-second-level { + left: auto; + right: 70px; +} + +.rtls #right-sidebar { + left: -260px; + right: auto; +} + +.rtls #right-sidebar.sidebar-open { + left: 0; +} + +/* + * + * This is style for skin config + * Use only in demo theme + * +*/ +.theme-config { + position: absolute; + top: 90px; + right: 0; + overflow: hidden; +} + +.theme-config-box { + margin-right: -220px; + position: relative; + z-index: 2100; + transition-duration: 0.8s; +} + +.theme-config-box.show { + margin-right: 0; +} + +.spin-icon { + background: #18b090; + position: absolute; + padding: 7px 10px 7px 13px; + border-radius: 20px 0 0 20px; + font-size: 16px; + top: 0; + left: 0; + width: 40px; + color: #fff; + cursor: pointer; +} + +.skin-settings { + width: 220px; + margin-left: 40px; + background: var(--bg-mid); +} + +.skin-settings .title { + background: var(--bg-mid); + text-align: center; + text-transform: uppercase; + font-weight: 600; + display: block; + padding: 10px 15px; + font-size: 12px; +} + +.setings-item { + padding: 10px 30px; +} + +.setings-item.skin { + text-align: center; +} + +.setings-item .switch { + float: right; +} + +.skin-name a { + text-transform: uppercase; +} + +.setings-item a { + color: #fff; +} + +.default-skin, +.blue-skin, +.ultra-skin, +.yellow-skin { + text-align: center; +} + +.default-skin { + font-weight: 600; + background: #283848; +} + +.default-skin:hover { + background: #203040; +} + +.blue-skin { + font-weight: 600; + background: url("patterns/header-profile-skin-1.png") repeat scroll 0 0; +} + +.blue-skin:hover { + background: #1090d8; +} + +.yellow-skin { + font-weight: 600; + background: url("patterns/header-profile-skin-3.png") repeat scroll 0 100%; +} + +.yellow-skin:hover { + background: #d08838; +} + +.ultra-skin { + padding: 20px 10px; + font-weight: 600; + background: url("patterns/3.png") repeat scroll 0 0; +} + +.ultra-skin:hover { + background: url("patterns/4.png") repeat scroll 0 0; +} + +/* + * + * SKIN 1 - INSPINIA - Responsive Admin Theme + * NAME - Blue light + * +*/ +.skin-1 .minimalize-styl-2 { + margin: 14px 5px 5px 30px; +} + +.skin-1 .navbar-top-links li:last-child { + margin-right: 30px; +} + +.skin-1.fixed-nav .minimalize-styl-2 { + margin: 14px 5px 5px 15px; +} + +.skin-1 .spin-icon { + background: #1098f0 !important; +} + +.skin-1 .nav-header { + background-color: #1098f0; + background-image: url('patterns/header-profile-skin-1.png'); +} + +.skin-1.mini-navbar .nav-second-level { + background: #404860; +} + +.skin-1 .breadcrumb { + background: transparent; +} + +.skin-1 .page-heading { + border: none; +} + +.skin-1 .nav > li.active { + background: #384058; +} + +.skin-1 .nav > li > a { + color: #a0a8b8; +} + +.skin-1 ul.nav-second-level { + background-color: inherit; +} + +.skin-1 .nav > li.active > a { + color: #fff; +} + +.skin-1 .navbar-minimalize { + background: #1098f0; + border-color: #1098f0; +} + +body.skin-1 { + background: #404860; +} + +.skin-1 .navbar-static-top { + background: #ffffff; +} + +.skin-1 .dashboard-header { + background: transparent; + border-bottom: none !important; + border-top: none; + padding: 20px 30px 10px 30px; +} + +.fixed-nav.skin-1 .navbar-fixed-top { + background: #fff; +} + +.skin-1 .wrapper-content { + padding: 30px 15px; +} + +.skin-1 #page-wrapper { + background: #f0f8f8; +} + +.skin-1 .ibox-title, +.skin-1 .ibox-content { + border-width: 1px; +} + +.skin-1 .ibox-content:last-child { + border-style: solid solid solid solid; +} + +.skin-1 .nav > li.active { + border: none; +} + +.skin-1 .nav-header { + padding: 35px 25px 25px 25px; +} + +.skin-1 .nav-header a.dropdown-toggle { + color: #fff; + margin-top: 10px; +} + +.skin-1 .nav-header a.dropdown-toggle .text-muted { + color: #fff; + opacity: 0.8; +} + +.skin-1 .profile-element { + text-align: center; +} + +.skin-1 .rounded-circle { + border-radius: 5px; +} + +.skin-1 .navbar-default .nav > li > a:hover, +.skin-1 .navbar-default .nav > li > a:focus { + background: #384058; + color: #fff; +} + +.skin-1 .nav.nav-tabs > li.active > a { + color: #555; +} + +.skin-1 .nav.nav-tabs > li.active { + background: transparent; +} + +/* + * + * SKIN 2 - INSPINIA - Responsive Admin Theme + * NAME - Inspinia Ultra + * +*/ +body.skin-2 { + color: #585858 !important; +} + +.skin-2 .minimalize-styl-2 { + margin: 14px 5px 5px 25px; +} + +.skin-2 .navbar-top-links li:last-child { + margin-right: 30px; +} + +.skin-2 .spin-icon { + background: #20c8c8 !important; +} + +.skin-2 .nav-header { + background-color: #20c8c8; + background-image: url('patterns/header-profile-skin-2.png'); +} + +.skin-2.mini-navbar .nav-second-level { + background: var(--bg-mid); +} + +.skin-2 .breadcrumb { + background: transparent; +} + +.skin-2.fixed-nav .minimalize-styl-2 { + margin: 14px 5px 5px 15px; +} + +.skin-2 .page-heading { + border: none; + background: rgba(255, 255, 255, 0.7); +} + +.skin-2 ul.nav-second-level { + background-color: inherit; +} + +.skin-2 .nav > li.active { + background: #e0e0e0; +} + +.skin-2 .logo-element { + padding: 17px 0; +} + +.skin-2 .nav > li > a, +.skin-2 .welcome-message { + color: #f0f8ff; +} + +.skin-2 #top-search::-moz-placeholder { + color: #f0f8ff; + opacity: 0.5; +} + +.skin-2 #side-menu > li > a, +.skin-2 .nav.nav-second-level > li > a { + color: #586880; +} + +.skin-2 .nav > li.active > a { + color: #203850; +} + +.skin-2.mini-navbar .nav-header { + background: #203850; +} + +.skin-2 .navbar-minimalize { + background: #20c8c8; + border-color: #20c8c8; +} + +.skin-2 .border-bottom { + border-bottom: none !important; +} + +.skin-2 #top-search { + color: #fff; +} + +body.skin-2 #wrapper { + background-color: var(--bg-mid); +} + +.skin-2 .navbar-static-top { + background: #203850; +} + +.fixed-nav.skin-2 .navbar-fixed-top { + background: #203850; + border-bottom: none !important; +} + +.skin-2 .nav-header { + padding: 30px 25px 30px 25px; +} + +.skin-2 .dashboard-header { + background: rgba(255, 255, 255, 0.4); + border-bottom: none !important; + border-top: none; + padding: 20px 30px 20px 30px; +} + +.skin-2 .wrapper-content { + padding: 30px 15px; +} + +.skin-2 .dashoard-1 .wrapper-content { + padding: 0 30px 25px 30px; +} + +.skin-2 .ibox-title { + background-color: rgba(0, 0, 0, 0.8); + background: rgba(255, 255, 255, 0.7); + border: none; + margin-bottom: 1px; +} + +.skin-2 .ibox-content { + background: rgba(255, 255, 255, 0.4); + border: none !important; +} + +.skin-2 #page-wrapper { + background: #f8f8f8; + background: -webkit-radial-gradient(center, ellipse cover, #f8f8f8 20%, #d8d8d8 100%); + background: -o-radial-gradient(center, ellipse cover, #f8f8f8 20%, #d8d8d8 100%); + background: -ms-radial-gradient(center, ellipse cover, #f8f8f8 20%, #d8d8d8 100%); + background: radial-gradient(ellipse at center, #f8f8f8 20%, #d8d8d8 100%); + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#f8f8f8, endColorstr=#d8d8d8)"; +} + +.skin-2 .ibox-title, +.skin-2 .ibox-content { + border-width: 1px; +} + +.skin-2 .ibox-content:last-child { + border-style: solid solid solid solid; +} + +.skin-2 .nav > li.active { + border: none; +} + +.skin-2 .nav-header a.dropdown-toggle { + color: #f0f8ff; + margin-top: 10px; +} + +.skin-2 .nav-header a.dropdown-toggle .text-muted { + color: #f0f8ff; + opacity: 0.8; +} + +.skin-2 .rounded-circle { + border-radius: 10px; +} + +.skin-2 .nav.navbar-top-links > li > a:hover, +.skin-2 .nav.navbar-top-links > li > a:focus { + background: #183040; +} + +.skin-2 .navbar-default .nav > li > a:hover, +.skin-2 .navbar-default .nav > li > a:focus { + background: #e0e0e0; + color: #203850; +} + +.skin-2 .nav.nav-tabs > li.active > a { + color: #555; +} + +.skin-2 .nav.nav-tabs > li.active { + background: transparent; +} + +/* + * + * SKIN 3 - INSPINIA - Responsive Admin Theme + * NAME - Yellow/purple + * +*/ +.skin-3 .minimalize-styl-2 { + margin: 14px 5px 5px 30px; +} + +.skin-3 .navbar-top-links li:last-child { + margin-right: 30px; +} + +.skin-3.fixed-nav .minimalize-styl-2 { + margin: 14px 5px 5px 15px; +} + +.skin-3 .spin-icon { + background: #f0b850 !important; +} + +body.boxed-layout.skin-3 #wrapper { + background: #403040; +} + +.skin-3 .nav-header { + background-color: #f0b850; + background-image: url('patterns/header-profile-skin-3.png'); +} + +.skin-3.mini-navbar .nav-second-level { + background: #403040; +} + +.skin-3 .breadcrumb { + background: transparent; +} + +.skin-3 .page-heading { + border: none; +} + +.skin-3 ul.nav-second-level { + background-color: inherit; +} + +.skin-3 .nav > li.active { + background: #382840; +} + +.fixed-nav.skin-3 .navbar-fixed-top { + background: #fff; +} + +.skin-3 .nav > li > a { + color: #908898; +} + +.skin-3 .nav > li.active > a { + color: #fff; +} + +.skin-3 .navbar-minimalize { + background: #f0b850; + border-color: #f0b850; +} + +body.skin-3 { + background: #403040; +} + +.skin-3 .navbar-static-top { + background: #ffffff; +} + +.skin-3 .dashboard-header { + background: transparent; + border-bottom: none !important; + border-top: none; + padding: 20px 30px 10px 30px; +} + +.skin-3 .wrapper-content { + padding: 30px 15px; +} + +.skin-3 #page-wrapper { + background: #f0f8f8; +} + +.skin-3 .ibox-title, +.skin-3 .ibox-content { + border-width: 1px; +} + +.skin-3 .ibox-content:last-child { + border-style: solid solid solid solid; +} + +.skin-3 .nav > li.active { + border: none; +} + +.skin-3 .nav-header { + padding: 35px 25px 25px 25px; +} + +.skin-3 .nav-header a.dropdown-toggle { + color: #fff; + margin-top: 10px; +} + +.skin-3 .nav-header a.dropdown-toggle .text-muted { + color: #fff; + opacity: 0.8; +} + +.skin-3 .profile-element { + text-align: center; +} + +.skin-3 .rounded-circle { + border-radius: 5px; +} + +.skin-3 .navbar-default .nav > li > a:hover, +.skin-3 .navbar-default .nav > li > a:focus { + background: #382840; + color: #fff; +} + +.skin-3 .nav.nav-tabs > li.active > a { + color: #555; +} + +.skin-3 .nav.nav-tabs > li.active { + background: transparent; +} + +/* + * + * SKIN 4 - INSPINIA - Responsive Admin Theme + * NAME - Light-Skin + * +*/ +body.light-skin { + background-color: #f8f8f8; + color: #405078; +} + +.light-skin { + /* For handle diferent bg color in MVC version */ +} + +.light-skin .select2-container--default .select2-selection--single, +.light-skin .select2-container--default .select2-selection--multiple, +.light-skin .select2-container--default .select2-selection--single .select2-selection__arrow { + height: 2.05rem; +} + +.light-skin .select2-container--default .select2-selection--single .select2-selection__rendered { + line-height: 32px; +} + +.light-skin .navbar-fixed-top, +.light-skin .navbar-static-top { + background-color: transparent; +} + +.light-skin .Dashboard_2 .navbar.navbar-static-top, +.light-skin .Dashboard_3 .navbar.navbar-static-top, +.light-skin .Dashboard_4_1 .navbar.navbar-static-top, +.light-skin .ComposeEmail .navbar.navbar-static-top, +.light-skin .EmailView .navbar.navbar-static-top, +.light-skin .Inbox .navbar.navbar-static-top, +.light-skin .Metrics .navbar.navbar-static-top, +.light-skin .Dashboard_5 .navbar.navbar-static-top { + background: transparent; +} + +.light-skin.fixed-nav .navbar-fixed-top { + background-color: #ffffff; +} + +.light-skin.mini-navbar .nav .nav-second-level { + background-color: #f8f8f8; + box-shadow: 0 1px 8px rgba(0, 0, 0, 0.05), 0 1px 2px rgba(0, 0, 0, 0.1); +} + +.light-skin.fixed-sidebar.mini-navbar .nav .nav-second-level, +.light-skin.canvas-menu.mini-navbar .nav .nav-second-level { + box-shadow: none; +} + +.light-skin.canvas-menu nav.navbar-static-side { + background-color: #f8f8f8; +} + +.light-skin.canvas-menu.mini-navbar nav.navbar-static-side { + box-shadow: 0 1px 8px rgba(0, 0, 0, 0.05), 0 1px 2px rgba(0, 0, 0, 0.1); +} + +.light-skin.mini-navbar .nav-header { + background-color: #f8f8f8; +} + +.light-skin #page-wrapper.gray-bg, +.light-skin #page-wrapper.bg-muted { + background-color: #f8f8f8; +} + +.light-skin .logo-element { + color: #808898; +} + +.light-skin nav > .sidebar-collapse > ul > li a { + color: #808898; + padding-top: 9px; + padding-bottom: 9px; +} + +.light-skin nav > .sidebar-collapse .nav-second-level li a { + padding-top: 7px; + padding-bottom: 7px; +} + +.light-skin .nav > li.active > a { + color: #385070; + font-weight: 700; +} + +.light-skin .nav-header a { + color: #385070; +} + +.light-skin .navbar-default .nav > li > a:hover, +.light-skin .navbar-default .nav > li > a:focus { + background-color: inherit; + color: #385070; + font-weight: 700; +} + +.light-skin .nav-header .font-bold { + font-size: 12px; + font-weight: 700; + color: #385070; +} + +.light-skin .nav-header .text-muted { + color: #8090a0 !important; + font-size: 12px; +} + +.light-skin .nav-header { + background-color: #f8f8f8; + background-image: none; + padding: 20px 25px 20px 25px; +} + +.light-skin .profile-element img { + border-radius: 6px !important; +} + +.light-skin .nav > li.active { + background: #f8f8f8; +} + +.light-skin ul.nav-second-level { + background: #f8f8f8; +} + +.light-skin .dashboard-header { + border-bottom: none !important; + border-top: 0; + border-radius: 4px; + padding: 20px 20px 20px 20px; + margin: 10px 10px 0 10px; + box-shadow: 0 1px 8px rgba(0, 0, 0, 0.05), 0 1px 2px rgba(0, 0, 0, 0.1); +} + +.light-skin .page-heading { + padding-bottom: 10px; +} + +.light-skin .ibox-title { + background-color: rgba(0, 0, 0, 0.8); + background-color: transparent; + border: none; + padding-left: 5px; +} + +.light-skin .ibox-title h5 { + font-size: 12px; +} + +.light-skin .ibox-tools { + right: 5px; +} + +.light-skin .ibox-tools a { + color: #808898 !important; +} + +.light-skin .ibox-heading { + background-color: #fff; + margin-bottom: 20px; +} + +.light-skin .ibox-content { + box-shadow: 0 1px 8px rgba(0, 0, 0, 0.05), 0 1px 2px rgba(0, 0, 0, 0.1); + border-radius: 4px; + border: none; + background-color: #ffffff; +} + +.light-skin .breadcrumb { + background-color: transparent; +} + +.light-skin .minimalize-styl-2 { + margin: 14px 5px 5px 30px; +} + +.light-skin .footer { + border: none; + background: none; +} + +.light-skin .sidebar-panel { + background-color: #fff; +} + +.light-skin #page-wrapper > .border-bottom, +.light-skin .ibox.border-bottom { + border-bottom: transparent !important; +} + +.light-skin .fh-breadcrumb { + height: calc(100% - 176px); +} + +.light-skin.top-navigation #page-wrapper > .border-bottom { + border-bottom: 1px solid var(--border-color) !important; +} + +.light-skin .wrapper.white-bg { + background-color: transparent; +} + +.light-skin .ibox-tools a.btn-primary { + color: #ffffff !important; +} + +.light-skin .chat-discussion { + background-color: #ffffff; +} + +.light-skin .ibox-footer { + margin-top: 4px; + border: none; + box-shadow: 0 1px 8px rgba(0, 0, 0, 0.05), 0 1px 2px rgba(0, 0, 0, 0.1); + border-radius: 4px; +} + +.light-skin .contact-box, +.light-skin .social-feed-box, +.light-skin .vertical-timeline-content { + box-shadow: 0 1px 8px rgba(0, 0, 0, 0.05), 0 1px 2px rgba(0, 0, 0, 0.1); + border: none; +} + +.light-skin .navbar-default .landing_link a, +.light-skin .navbar-default .special_link a { + color: #ffffff; +} + +body.md-skin { + font-family: "Roboto", "Helvetica Neue", Helvetica, Arial, sans-serif; + background-color: #ffffff; +} + +.md-skin .nav-header { + background: url("patterns/4.png") no-repeat; +} + +.md-skin .label, +.md-skin .badge { + font-family: 'Roboto'; +} + +.md-skin ul.nav-second-level { + background-color: inherit; +} + +.md-skin .font-bold { + font-weight: 500; +} + +.md-skin .wrapper-content { + padding: 30px 20px 40px; +} + +@media (max-width: 768px) { + .md-skin .wrapper-content { + padding: 30px 0 40px; + } +} + +.md-skin .page-heading { + border-bottom: none !important; + border-top: 0; + padding: 0 10px 20px 10px; + box-shadow: 0 1px 1px -1px rgba(0, 0, 0, 0.34), 0 0 6px 0 rgba(0, 0, 0, 0.14); +} + +.md-skin .full-height-layout .page-heading { + border-bottom: 1px solid var(--border-color) !important; +} + +.md-skin .ibox { + clear: both; + margin-bottom: 25px; + margin-top: 0; + padding: 0; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12); +} + +.md-skin .ibox.border-bottom { + border-bottom: none !important; +} + +.md-skin .ibox-title, +.md-skin .ibox-content { + border-style: none; +} + +.md-skin .ibox-title h5 { + font-size: 16px; + font-weight: 400; +} + +.md-skin a.close-canvas-menu { + color: #ffffff; +} + +.md-skin .welcome-message { + color: #ffffff !important; + font-weight: 300; +} + +.md-skin #top-search::-moz-placeholder { + color: #ffffff; +} + +.md-skin #top-search::-webkit-input-placeholder { + color: #ffffff; +} + +.md-skin #nestable-output, +.md-skin #nestable2-output { + font-family: 'Roboto', lucida grande, lucida sans unicode, helvetica, arial, sans-serif; +} + +.md-skin .landing-page { + font-family: 'Roboto', helvetica, arial, sans-serif; +} + +.md-skin .landing-page.navbar-default.navbar-scroll { + background-color: #fff !important; +} + +.md-skin .landing-page.navbar-default { + background-color: transparent !important; + box-shadow: none; +} + +.md-skin .landing-page.navbar-default .nav li a { + font-family: 'Roboto', helvetica, arial, sans-serif; +} + +.md-skin .nav > li > a { + color: var(--text); + padding: 14px 20px 14px 25px; +} + +.md-skin .nav.navbar-right > li > a { + color: #ffffff; +} + +.md-skin .nav > li.active > a { + color: #586060; + font-weight: 700; +} + +.md-skin .navbar-default .nav > li > a:hover, +.md-skin .navbar-default .nav > li > a:focus { + font-weight: 700; + color: #586060; +} + +.md-skin .nav .open > a, +.md-skin .nav .open > a:hover, +.md-skin .nav .open > a:focus { + background: #18b090; +} + +.md-skin .navbar-top-links li { + display: inline-table; +} + +.md-skin .navbar-top-links .dropdown-menu li { + display: block; +} + +.md-skin .pace-done .nav-header { + transition: all 0.4s; +} + +.md-skin .nav > li.active { + background: #f8f8f8; +} + +.md-skin .nav-second-level li a { + padding: 7px 10px 7px 52px; +} + +.md-skin .nav-third-level li a { + padding-left: 62px; +} + +.md-skin .navbar-top-links li a { + padding: 20px 10px; + min-height: 50px; +} + +.md-skin .nav > li > a { + font-weight: 400; +} + +.md-skin .navbar-static-side .nav > li > a:focus, +.md-skin .navbar-static-side .nav > li > a:hover { + background-color: inherit; +} + +.md-skin .navbar-top-links .dropdown-menu li a { + padding: 3px 20px; + min-height: inherit; +} + +.md-skin .nav-header .navbar-fixed-top a { + color: #ffffff; +} + +.md-skin .nav-header .text-muted { + color: #ffffff !important; +} + +.md-skin .navbar-form-custom .form-control { + font-weight: 300; +} + +.md-skin .mini-navbar .nav-second-level { + background-color: inherit; +} + +.md-skin .mini-navbar li.active .nav-second-level { + left: 65px; +} + +.md-skin .canvas-menu.mini-navbar .nav-second-level { + background: inherit; +} + +.md-skin .pace-done .navbar-static-side, +.md-skin .pace-done .nav-header, +.md-skin .pace-done li.active, +.md-skin .pace-done #page-wrapper, +.md-skin .pace-done .footer { + -webkit-transition: all 0.4s; + -moz-transition: all 0.4s; + -o-transition: all 0.4s; + transition: all 0.4s; +} + +.md-skin .navbar-fixed-top { + background: #fff; + transition-duration: 0.4s; + z-index: 2030; + border-bottom: none !important; +} + +.md-skin .navbar-fixed-top, +.md-skin .navbar-static-top { + background-color: #18b090 !important; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12); +} + +.md-skin .navbar-static-side { + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12); +} + +.md-skin #right-sidebar { + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12); + border: none; + z-index: 900; +} + +.md-skin .white-bg .navbar-fixed-top, +.md-skin .white-bg .navbar-static-top { + background: #fff !important; +} + +.md-skin .contact-box { + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12); + border: none; +} + +.md-skin .dashboard-header { + border-bottom: none !important; + border-top: 0; + padding: 20px 20px 20px 20px; + margin: 30px 20px 0 20px; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12); +} + +@media (max-width: 768px) { + .md-skin .dashboard-header { + margin: 20px 0 0 0; + } +} + +.md-skin ul.notes li div { + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12); +} + +.md-skin .file { + border: none; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12); +} + +.md-skin .mail-box { + background-color: #ffffff; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12); + padding: 0; + margin-bottom: 20px; + border: none; +} + +.md-skin .mail-box-header { + border: none; + background-color: #ffffff; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12); + padding: 30px 20px 20px 20px; +} + +.md-skin .mailbox-content { + border: none; + padding: 20px; + background: #ffffff; +} + +.md-skin .social-feed-box { + border: none; + background: #fff; + margin-bottom: 15px; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12); +} + +.md-skin.landing-page .navbar-default { + background-color: transparent !important; + border-color: transparent; + transition: all 0.3s ease-in-out 0s; + box-shadow: none; +} + +.md-skin.landing-page .navbar-default.navbar-scroll, +.md-skin.landing-page.body-small .navbar-default { + background-color: #ffffff !important; +} + +.md-skin.landing-page .nav > li.active { + background: inherit; +} + +.md-skin.landing-page .navbar-scroll .navbar-nav > li > a { + padding: 20px 10px; +} + +.md-skin.landing-page .navbar-default .nav li a { + font-family: 'Roboto', helvetica, arial, sans-serif; +} + +.md-skin.landing-page .nav > li > a { + padding: 25px 10px 15px 10px; +} + +.md-skin.landing-page .navbar-default .navbar-nav > li > a:hover, +.md-skin.landing-page .navbar-default .navbar-nav > li > a:focus { + background: inherit; + color: #18b090; +} + +.md-skin.landing-page.body-small .nav.navbar-right > li > a { + color: var(--text); +} + +.md-skin .landing_link a, +.md-skin .special_link a { + color: #ffffff !important; +} + +.md-skin.canvas-menu.mini-navbar .nav-second-level { + background: #f8f8f8; +} + +.md-skin.mini-navbar .nav-second-level { + background-color: #ffffff; + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 3px 1px -2px rgba(0, 0, 0, 0.2), 0 1px 5px 0 rgba(0, 0, 0, 0.12); +} + +.md-skin.mini-navbar .nav-second-level li a { + padding-left: 0; +} + +.md-skin.mini-navbar.fixed-sidebar .nav-second-level li a { + padding-left: 52px; +} + +.md-skin.top-navigation .nav.navbar-right > li > a { + padding: 15px 20px; + color: var(--text); +} + +.md-skin.top-navigation .nav > li a:hover, +.md-skin .top-navigation .nav > li a:focus, +.md-skin.top-navigation .nav .open > a, +.md-skin.top-navigation .nav .open > a:hover, +.md-skin.top-navigation .nav .open > a:focus { + color: #18b090; + background: #ffffff; +} + +.md-skin.top-navigation .nav > li.active a { + color: #18b090; + background: #ffffff; +} + +.md-skin.fixed-nav #side-menu { + background-color: #fff; +} + +.md-skin.fixed-nav #wrapper.top-navigation #page-wrapper { + margin-top: 0; +} + +.md-skin.fixed-sidebar.mini-navbar #page-wrapper { + margin: 0 0 0 0; +} + +.md-skin.body-small.fixed-sidebar.mini-navbar .navbar-static-side { + width: 220px; + background-color: #ffffff; +} + +.md-skin.boxed-layout #wrapper { + background-color: #ffffff; +} + +.md-skin.canvas-menu nav.navbar-static-side { + z-index: 2001; + background: #ffffff; + height: 100%; + position: fixed; + display: none; +} + +@media (min-width: 768px) { + #page-wrapper { + position: inherit; + min-height: calc(100vh - 60px); + } + + .navbar-static-side { + z-index: 2001; + width: 220px; + } + + .navbar-top-links .dropdown-messages, + .navbar-top-links .dropdown-tasks, + .navbar-top-links .dropdown-alerts { + margin-left: auto; + } +} + +@media (max-width: 768px) { + #page-wrapper { + position: inherit; + margin: 0 0 0 0; + min-height: calc(100vh - 60px); + width: 100%; + } + + .body-small .navbar-static-side { + display: block; + z-index: 2001; + width: 0; + overflow: hidden; + } + + .body-small.mini-navbar .navbar-static-side { + display: block; + overflow: visible; + } + + .lock-word { + display: none; + } + + .navbar-form-custom { + display: none; + } + + .navbar-header { + display: inline; + float: left; + } + + .sidebar-panel { + z-index: 2; + position: relative; + width: auto; + min-height: 100% !important; + } + + .sidebar-content .wrapper { + padding-right: 0; + z-index: 1; + } + + .fixed-sidebar.body-small .navbar-static-side { + display: none; + z-index: 2001; + position: fixed; + width: 220px; + } + + .fixed-sidebar.body-small.mini-navbar .navbar-static-side { + display: block; + } + + .ibox-tools { + float: none; + text-align: right; + display: block; + } + + .navbar-static-side { + display: none; + } + + body:not(.mini-navbar) { + -webkit-transition: background-color 500ms linear; + -moz-transition: background-color 500ms linear; + -o-transition: background-color 500ms linear; + -ms-transition: background-color 500ms linear; + transition: background-color 500ms linear; + background-color: var(--bg-mid); + } +} + +@media (max-width: 350px) { + .timeline-item .date { + text-align: left; + width: 110px; + position: relative; + padding-top: 30px; + } + + .timeline-item .date i { + position: absolute; + top: 0; + left: 15px; + padding: 5px; + width: 30px; + text-align: center; + border: 1px solid var(--border-color); + background: #f8f8f8; + } + + .timeline-item .content { + border-left: none; + border-top: 1px solid var(--border-color); + padding-top: 10px; + min-height: 100px; + } + + .nav.navbar-top-links li.dropdown { + display: none; + } + + .ibox-tools { + float: none; + text-align: left; + display: inline-block; + } +} + +/* Only demo */ +@media (max-width: 1000px) { + .welcome-message { + display: none; + } +} + +@media print { + nav.navbar-static-side { + display: none; + } + + body { + overflow: visible !important; + } + + #page-wrapper { + margin: 0; + } +} + +.page-content .row.tile { + padding: 20px 5px 35px 5px; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + margin: 0; + overflow-y: auto; +} + +.sidebar-collapse { + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + overflow-y: auto; + overflow-x: hidden; + scrollbar-width: none; + -ms-overflow-style: none; +} + +.sidebar-collapse::-webkit-scrollbar { + display: none; +} + +.body-small .sidebar-collapse { + bottom: 40px; +} + +.bootstrap-select .dropdown-item { + font-size: 0.9rem; +} + +.bootstrap-select .dropdown-toggle { + border: 1px solid var(--border-color) !important; + border-radius: 8px; + background-color: var(--bg) !important; + color: var(--text) !important; + transition: all 0.3s ease; +} + +.bootstrap-select .show > .btn-light.dropdown-toggle { + background-color: transparent !important; +} + +.bootstrap-select .dropdown-menu { + border-radius: 8px; + background-color: var(--bg-mid) !important; + border-color: var(--border-color) !important; +} + +.bootstrap-select .dropdown-menu > li > a { + border-radius: 4px; + color: var(--text) !important; + padding: 8px 16px; + transition: all 0.2s ease; + background-color: var(--bg-mid) !important; +} + +.bootstrap-select .dropdown-menu > li > a:hover { + background-color: var(--active-color) !important; + color: var(--color) !important; +} + +.bootstrap-select .dropdown-toggle:focus, +.bootstrap-select > select.mobile-device:focus + .dropdown-toggle { + outline: none !important; +} + +.bootstrap-select .dropdown-toggle.btn-light, +.bootstrap-select .dropdown-toggle.btn-light:hover { + color: #202828; +} + +.dropdown-menu * { + color: inherit; + background-color: inherit; +} + +.dropdown-menu, +.dropdown-menu .no-results, +.form-control:focus { + background-color: var(--bg) !important; + color: var(--text) !important; +} + +.dropdown.bootstrap-select.form-control { + background: none !important; + box-shadow: none !important; + border: none !important; +} + +.bs-actionsbox, .bs-donebutton, .bs-searchbox { + padding: 4px !important; +} diff --git a/apps/nps/0.29.21/web/static/img/flag/en-US.png b/apps/nps/0.29.21/web/static/img/flag/en-US.png new file mode 100644 index 0000000..5706b57 Binary files /dev/null and b/apps/nps/0.29.21/web/static/img/flag/en-US.png differ diff --git a/apps/nps/0.29.21/web/static/img/flag/zh-CN.png b/apps/nps/0.29.21/web/static/img/flag/zh-CN.png new file mode 100644 index 0000000..8c35f25 Binary files /dev/null and b/apps/nps/0.29.21/web/static/img/flag/zh-CN.png differ diff --git a/apps/nps/0.29.21/web/static/img/nps.svg b/apps/nps/0.29.21/web/static/img/nps.svg new file mode 100644 index 0000000..79637dc --- /dev/null +++ b/apps/nps/0.29.21/web/static/img/nps.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/nps/0.29.21/web/static/js/bootstrap-select.min.js b/apps/nps/0.29.21/web/static/js/bootstrap-select.min.js new file mode 100644 index 0000000..9cf3603 --- /dev/null +++ b/apps/nps/0.29.21/web/static/js/bootstrap-select.min.js @@ -0,0 +1,8 @@ +/*! + * Bootstrap-select v1.14.0-beta3 (https://developer.snapappointments.com/bootstrap-select) + * + * Copyright 2012-2025 SnapAppointments, LLC + * Licensed under MIT (https://github.com/snapappointments/bootstrap-select/blob/master/LICENSE) + */ +!function(e,t){void 0===e&&void 0!==window&&(e=window),"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&module.exports?module.exports=t(require("jquery")):t(e.jQuery)}(this,function(e){!function($){"use strict";var M=["sanitize","whiteList","sanitizeFn"],P=["background","cite","href","itemtype","longdesc","poster","src","xlink:href"],B={"*":["class","dir","id","lang","role","tabindex","style",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},W=/^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi,R=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i,U=["title","placeholder"];function S(e,t,i){if(i&&"function"==typeof i)return i(e);for(var s=Object.keys(t),n=0,o=e.length;n]+>/g,"")),a=(a=s?Q(a):a).toUpperCase(),"function"==typeof i)o=i(a,t);else if("contains"===i)o=0<=a.indexOf(t);else if("containsAll"===i){var c,d=t.split(" "),h=!1,o=!1;for(c in d)(o=0<=a.indexOf(d[c]))||(h=!0);h&&(o=!1)}else o=a.startsWith(t);if(o)break}}return o}function g(e){return parseInt(e,10)||0}$.fn.triggerNative=function(e){var t,i=this[0];i.dispatchEvent&&(j?t=new Event(e,{bubbles:!0}):(t=document.createEvent("Event")).initEvent(e,!0,!1),i.dispatchEvent(t))};var F={"\xc0":"A","\xc1":"A","\xc2":"A","\xc3":"A","\xc4":"A","\xc5":"A","\xe0":"a","\xe1":"a","\xe2":"a","\xe3":"a","\xe4":"a","\xe5":"a","\xc7":"C","\xe7":"c","\xd0":"D","\xf0":"d","\xc8":"E","\xc9":"E","\xca":"E","\xcb":"E","\xe8":"e","\xe9":"e","\xea":"e","\xeb":"e","\xcc":"I","\xcd":"I","\xce":"I","\xcf":"I","\xec":"i","\xed":"i","\xee":"i","\xef":"i","\xd1":"N","\xf1":"n","\xd2":"O","\xd3":"O","\xd4":"O","\xd5":"O","\xd6":"O","\xd8":"O","\xf2":"o","\xf3":"o","\xf4":"o","\xf5":"o","\xf6":"o","\xf8":"o","\xd9":"U","\xda":"U","\xdb":"U","\xdc":"U","\xf9":"u","\xfa":"u","\xfb":"u","\xfc":"u","\xdd":"Y","\xfd":"y","\xff":"y","\xc6":"Ae","\xe6":"ae","\xde":"Th","\xfe":"th","\xdf":"ss","\u0100":"A","\u0102":"A","\u0104":"A","\u0101":"a","\u0103":"a","\u0105":"a","\u0106":"C","\u0108":"C","\u010a":"C","\u010c":"C","\u0107":"c","\u0109":"c","\u010b":"c","\u010d":"c","\u010e":"D","\u0110":"D","\u010f":"d","\u0111":"d","\u0112":"E","\u0114":"E","\u0116":"E","\u0118":"E","\u011a":"E","\u0113":"e","\u0115":"e","\u0117":"e","\u0119":"e","\u011b":"e","\u011c":"G","\u011e":"G","\u0120":"G","\u0122":"G","\u011d":"g","\u011f":"g","\u0121":"g","\u0123":"g","\u0124":"H","\u0126":"H","\u0125":"h","\u0127":"h","\u0128":"I","\u012a":"I","\u012c":"I","\u012e":"I","\u0130":"I","\u0129":"i","\u012b":"i","\u012d":"i","\u012f":"i","\u0131":"i","\u0134":"J","\u0135":"j","\u0136":"K","\u0137":"k","\u0138":"k","\u0139":"L","\u013b":"L","\u013d":"L","\u013f":"L","\u0141":"L","\u013a":"l","\u013c":"l","\u013e":"l","\u0140":"l","\u0142":"l","\u0143":"N","\u0145":"N","\u0147":"N","\u014a":"N","\u0144":"n","\u0146":"n","\u0148":"n","\u014b":"n","\u014c":"O","\u014e":"O","\u0150":"O","\u014d":"o","\u014f":"o","\u0151":"o","\u0154":"R","\u0156":"R","\u0158":"R","\u0155":"r","\u0157":"r","\u0159":"r","\u015a":"S","\u015c":"S","\u015e":"S","\u0160":"S","\u015b":"s","\u015d":"s","\u015f":"s","\u0161":"s","\u0162":"T","\u0164":"T","\u0166":"T","\u0163":"t","\u0165":"t","\u0167":"t","\u0168":"U","\u016a":"U","\u016c":"U","\u016e":"U","\u0170":"U","\u0172":"U","\u0169":"u","\u016b":"u","\u016d":"u","\u016f":"u","\u0171":"u","\u0173":"u","\u0174":"W","\u0175":"w","\u0176":"Y","\u0177":"y","\u0178":"Y","\u0179":"Z","\u017b":"Z","\u017d":"Z","\u017a":"z","\u017c":"z","\u017e":"z","\u0132":"IJ","\u0133":"ij","\u0152":"Oe","\u0153":"oe","\u0149":"'n","\u017f":"s"},G=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,q=RegExp("[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\u1ab0-\\u1aff\\u1dc0-\\u1dff]","g");function K(e){return F[e]}function Q(e){return(e=e.toString())&&e.replace(G,K).replace(q,"")}u={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`"},n="(?:"+Object.keys(u).join("|")+")",Y=RegExp(n),Z=RegExp(n,"g");var u,Y,Z,k=function(e){return Y.test(e=null==e?"":""+e)?e.replace(Z,J):e};function J(e){return u[e]}var X={32:" ",48:"0",49:"1",50:"2",51:"3",52:"4",53:"5",54:"6",55:"7",56:"8",57:"9",59:";",65:"A",66:"B",67:"C",68:"D",69:"E",70:"F",71:"G",72:"H",73:"I",74:"J",75:"K",76:"L",77:"M",78:"N",79:"O",80:"P",81:"Q",82:"R",83:"S",84:"T",85:"U",86:"V",87:"W",88:"X",89:"Y",90:"Z",96:"0",97:"1",98:"2",99:"3",100:"4",101:"5",102:"6",103:"7",104:"8",105:"9"},ee=27,te=13,b=32,w=9,I=38,O=40,f=window.Dropdown||window.bootstrap&&window.bootstrap.Dropdown;function ie(){var t;try{t=$.fn.dropdown.Constructor.VERSION}catch(e){t=f.VERSION}return t}var A={success:!1,major:"3"};try{A.full=(ie()||"").split(" ")[0].split("."),A.major=A.full[0],A.success=!0}catch(e){}var se=0,T=".bs.select",z={DISABLED:"disabled",DIVIDER:"divider",SHOW:"open",DROPUP:"dropup",MENU:"dropdown-menu",MENURIGHT:"dropdown-menu-right",MENULEFT:"dropdown-menu-left",BUTTONCLASS:"btn-default",POPOVERHEADER:"popover-title",ICONBASE:"glyphicon",TICKICON:"glyphicon-ok"},D={MENU:"."+z.MENU,DATA_TOGGLE:'data-toggle="dropdown"'},L={div:document.createElement("div"),span:document.createElement("span"),i:document.createElement("i"),subtext:document.createElement("small"),a:document.createElement("a"),li:document.createElement("li"),whitespace:document.createTextNode("\xa0"),fragment:document.createDocumentFragment(),option:document.createElement("option")},ne=(L.selectedOption=L.option.cloneNode(!1),L.selectedOption.setAttribute("selected",!0),L.noResults=L.li.cloneNode(!1),L.noResults.className="no-results",L.a.setAttribute("role","option"),L.a.className="dropdown-item",L.subtext.className="text-muted",L.text=L.span.cloneNode(!1),L.text.className="text",L.checkMark=L.span.cloneNode(!1),new RegExp(I+"|"+O)),oe=new RegExp("^"+w+"$|"+ee),m={li:function(e,t,i){var s=L.li.cloneNode(!1);return e&&(1===e.nodeType||11===e.nodeType?s.appendChild(e):s.innerHTML=e),void 0!==t&&""!==t&&(s.className=t),null!=i&&s.classList.add("optgroup-"+i),s},a:function(e,t,i){var s=L.a.cloneNode(!0);return e&&(11===e.nodeType?s.appendChild(e):s.insertAdjacentHTML("beforeend",e)),void 0!==t&&""!==t&&s.classList.add.apply(s.classList,t.split(/\s+/)),i&&s.setAttribute("style",i),s},text:function(e,t){var i,s,n=L.text.cloneNode(!1);if(e.content?n.innerHTML=e.content:(n.textContent=e.text,e.icon&&(i=L.whitespace.cloneNode(!1),(s=(!0===t?L.i:L.span).cloneNode(!1)).className=this.options.iconBase+" "+e.icon,L.fragment.appendChild(s),L.fragment.appendChild(i)),e.subtext&&((s=L.subtext.cloneNode(!1)).textContent=e.subtext,n.appendChild(s))),!0===t)for(;0'},maxOptions:!1,mobile:!1,selectOnTab:!0,dropdownAlignRight:!1,windowPadding:0,virtualScroll:600,display:!1,sanitize:!0,sanitizeFn:null,whiteList:B},H.prototype={constructor:H,init:function(){var i=this,e=this.$element.attr("id"),t=this.$element[0],s=t.form;se++,this.selectId="bs-select-"+se,t.classList.add("bs-select-hidden"),this.multiple=this.$element.prop("multiple"),this.autofocus=this.$element.prop("autofocus"),t.classList.contains("show-tick")&&(this.options.showTick=!0),this.$newElement=this.createDropdown(),this.$element.after(this.$newElement).prependTo(this.$newElement),s&&null===t.form&&(s.id||(s.id="form-"+this.selectId),t.setAttribute("form",s.id)),this.$button=this.$newElement.children("button"),this.options.allowClear&&(this.$clearButton=this.$button.children(".bs-select-clear-selected")),this.$menu=this.$newElement.children(D.MENU),this.$menuInner=this.$menu.children(".inner"),this.$searchbox=this.$menu.find("input"),t.classList.remove("bs-select-hidden"),this.fetchData(function(){i.render(!0),i.buildList(),requestAnimationFrame(function(){i.$element.trigger("loaded"+T)})}),!0===this.options.dropdownAlignRight&&this.$menu[0].classList.add(z.MENURIGHT),void 0!==e&&this.$button.attr("data-id",e),this.checkDisabled(),this.clickListener(),4'+this.options.header+""),this.options.liveSearch&&(o=''),this.multiple&&this.options.actionsBox&&(l='
"),this.multiple&&this.options.doneButton&&(r='
"),this.options.allowClear&&(a='×'),e='",$(e)},setPositionData:function(){this.selectpicker.view.canHighlight=[],this.selectpicker.view.size=0,this.selectpicker.view.firstHighlightIndex=!1;for(var e=0;e=this.options.virtualScroll||!0===this.options.virtualScroll},createView:function(y,e,t){var x=this,i=0;function E(e,t){var i,s=x.selectpicker.current.data.length,n=[],o=!0,l=x.isVirtual();x.selectpicker.view.scrollTop=e;for(var r,a=x.options.chunkSize,c=Math.ceil(s/a)||1,d=0;ds-1?0:x.selectpicker.current.data[s-1].position-x.selectpicker.current.data[x.selectpicker.view.position1-1].position,p.firstChild.style.marginTop=g+"px",p.firstChild.style.marginBottom=o+"px"):(p.firstChild.style.marginTop=0,p.firstChild.style.marginBottom=0),p.firstChild.appendChild(u),!0===l&&x.sizeInfo.hasScrollBar&&(f=C(p.firstChild),t&&fx.sizeInfo.selectWidth?p.firstChild.style.minWidth=x.sizeInfo.menuInnerInnerWidth+"px":f>x.sizeInfo.menuInnerInnerWidth&&(x.$menu[0].style.minWidth=0,(g=C(p.firstChild))>x.sizeInfo.menuInnerInnerWidth&&(x.sizeInfo.menuInnerInnerWidth=g,p.firstChild.style.minWidth=x.sizeInfo.menuInnerInnerWidth+"px"),x.$menu[0].style.minWidth=""))}(!y&&x.options.source.data||y&&x.options.source.search)&&x.selectpicker.current.hasMore&&i===c-1&&0 *:not(:disabled)"))?o.index:0,l=(l=window.performance&&window.performance.getEntriesByType("navigation"))&&l.length?"back_forward"!==l[0].type:2!==window.performance.navigation.type,i&&(this.selectpicker.view.titleOption.className="bs-title-option",this.selectpicker.view.titleOption.value="",t=!n||s===o&&!1===n.defaultSelected&&void 0===this.$element.data("selected")),!i&&0===this.selectpicker.view.titleOption.index||e.insertBefore(this.selectpicker.view.titleOption,e.firstChild),t&&l?e.selectedIndex=0:"complete"!==document.readyState&&window.addEventListener("pageshow",function(){r.selectpicker.view.displayedValue!==e.value&&r.render()})),a},fetchData:function(n,o,e,t){e=e||1,o=o||"data";var l,r=this,i=this.options.source[o];i?(this.options.virtualScroll=!0,"function"==typeof i?i.call(this,function(e,t,i){var s=r.selectpicker["search"===o?"search":"main"];s.hasMore=t,s.totalItems=i,l=r.buildData(e,o),n.call(r,l),r.$element.trigger("fetched"+T)},e,t):Array.isArray(i)&&(l=r.buildData(i,o),n.call(r,l))):(l=this.buildData(!1,o),n.call(r,l))},buildData:function(h,e){var o=this,p=!1===h?N.fromOption:N.fromDataSource,u=':not([hidden]):not([data-hidden="true"]):not([style*="display: none"])',f=[],l=this.selectpicker.main.data?this.selectpicker.main.data.length:0,m=0,v=this.setPlaceholder()&&!h?1:0,t=("search"===e&&(l=this.selectpicker.search.data.length),this.options.hideDisabled&&(u+=":not(:disabled)"),h?h.filter(re,this):this.$element[0].querySelectorAll("select > *"+u));function g(e){var t=f[f.length-1];t&&"divider"===t.type&&(t.optID||e.optID)||((e=e||{}).type="divider",f.push(e))}function b(e,t){var i,s,n;(t=t||{}).divider=p(e,"divider"),!0===t.divider?g({optID:t.optID}):(i=f.length+l,s=(s=p(e,"style"))?k(s):"",n=(e.className||"")+(t.optgroupClass||""),t.optID&&(n="opt "+n),t.optionClass=n.trim(),t.inlineStyle=s,t.text=p(e,"text"),t.title=p(e,"title"),t.content=p(e,"content"),t.tokens=p(e,"tokens"),t.subtext=p(e,"subtext"),t.icon=p(e,"icon"),t.display=t.content||t.text,t.value=void 0===e.value?e.text:e.value,t.type="option",t.index=i,t.option=e.option||e,t.option.liIndex=i,t.selected=!!e.selected,t.disabled=t.disabled||!!e.disabled,!1!==h&&(o.selectpicker.optionValuesDataMap[t.value]?t=$.extend(o.selectpicker.optionValuesDataMap[t.value],t):o.selectpicker.optionValuesDataMap[t.value]=t),f.push(t))}function i(e,t){var i=t[e],s=!(e-1 li")},render:function(e){var i=this,t=this.$element[0],s=this.setPlaceholder()&&0===t.selectedIndex,n=y.call(this),o=n.length,l=x.call(this,n),r=this.$button[0],a=r.querySelector(".filter-option-inner-inner"),c=document.createTextNode(this.options.multipleSeparator),d=L.fragment.cloneNode(!1),h=(L.fragment.cloneNode(!1),!1);if(this.options.source.data&&e&&(n.map(function e(t){t.selected?i.createOption(t,!0):t.children&&t.children.length&&t.children.map(e)}),t.appendChild(this.selectpicker.main.optionQueue),s=s&&0===t.selectedIndex),r.classList.toggle("bs-placeholder",i.multiple?!o:!l&&0!==l),i.multiple||1!==n.length||(i.selectpicker.view.displayedValue=l),"static"===this.options.selectedTextFormat)d=m.text.call(this,{text:this.options.placeholder},!0);else if(!1===(this.multiple&&-1!==this.options.selectedTextFormat.indexOf("count")&&0")).length&&o>e[1]||1===e.length&&2<=o))){if(!s){for(var p=0;p option"+t+", optgroup"+t+" option"+t).length),e="function"==typeof this.options.countSelectedText?this.options.countSelectedText(o,l):this.options.countSelectedText,d=m.text.call(this,{text:e.replace("{0}",o.toString()).replace("{1}",l.toString())},!0);d.childNodes.length||(d=m.text.call(this,{text:this.options.placeholder||this.options.noneSelectedText},!0)),r.title=d.textContent.replace(/<[^>]*>?/g,"").trim(),this.options.sanitize&&h&&S([d],i.options.whiteList,i.options.sanitizeFn),a.innerHTML="",a.appendChild(d),this.options.titleTip&&!r.querySelector(".title-tip")&&((s=document.createElement("div")).setAttribute("class","title-tip"),t=m.text.call(this,{text:this.options.titleTip||""},!0),s.appendChild(t),r.querySelector(".filter-option").prepend(s)),A.major<4&&this.$newElement[0].classList.contains("bs3-has-addon")&&(e=r.querySelector(".filter-expand"),(l=a.cloneNode(!0)).className="filter-expand",e?r.replaceChild(l,e):r.appendChild(l)),this.$element.trigger("rendered"+T)},setStyle:function(e,t){var i=this.$button[0],s=this.$newElement[0],n=this.options.style.trim();this.$element.attr("class")&&this.$newElement.addClass(this.$element.attr("class").replace(/selectpicker|mobile-device|bs-select-hidden|validate\[.*\]/gi,"")),A.major<4&&(s.classList.add("bs3"),s.parentNode.classList&&s.parentNode.classList.contains("input-group")&&(s.previousElementSibling||s.nextElementSibling)&&(s.previousElementSibling||s.nextElementSibling).classList.contains("input-group-addon")&&s.classList.add("bs3-has-addon")),s=e?e.trim():n,"add"==t?s&&i.classList.add.apply(i.classList,s.split(" ")):"remove"==t?s&&i.classList.remove.apply(i.classList,s.split(" ")):(n&&i.classList.remove.apply(i.classList,n.split(" ")),s&&i.classList.add.apply(i.classList,s.split(" ")))},liHeight:function(e){if(e||!1!==this.options.size&&!Object.keys(this.sizeInfo).length){var t,e=L.div.cloneNode(!1),i=L.div.cloneNode(!1),s=L.div.cloneNode(!1),n=document.createElement("ul"),o=L.li.cloneNode(!1),l=L.li.cloneNode(!1),r=L.a.cloneNode(!1),a=L.span.cloneNode(!1),c=this.options.header&&0this.sizeInfo.menuExtras.vert&&l+this.sizeInfo.menuExtras.vert+50>this.sizeInfo.selectOffsetBot,!0===this.selectpicker.isSearching&&(l=this.selectpicker.dropup),this.$newElement.toggleClass(z.DROPUP,l),this.selectpicker.dropup=l),"auto"===this.options.size)l=3this.options.size){for(var v=0;vthis.sizeInfo.menuInnerHeight&&(this.sizeInfo.hasScrollBar=!0,this.sizeInfo.totalMenuWidth=this.sizeInfo.menuWidth+this.sizeInfo.scrollBarWidth),"auto"===this.options.dropdownAlignRight&&this.$menu.toggleClass(z.MENURIGHT,this.sizeInfo.selectOffsetLeft>this.sizeInfo.selectOffsetRight&&this.sizeInfo.selectOffsetRightthis.options.size&&i.off("resize"+T+"."+this.selectId+".setMenuSize scroll"+T+"."+this.selectId+".setMenuSize")),this.createView(!1,!0,e)},setWidth:function(){var i=this;"auto"===this.options.width?requestAnimationFrame(function(){i.$menu.css("min-width","0"),i.$element.on("loaded"+T,function(){i.liHeight(),i.setMenuSize();var e=i.$newElement.clone().appendTo("body"),t=e.css("width","auto").children("button").outerWidth();e.remove(),i.sizeInfo.selectWidth=Math.max(i.sizeInfo.totalMenuWidth,t),i.$newElement.css("width",i.sizeInfo.selectWidth+"px")})}):"fit"===this.options.width?(this.$menu.css("min-width",""),this.$newElement.css("width","").addClass("fit-width")):this.options.width?(this.$menu.css("min-width",""),this.$newElement.css("width",this.options.width)):(this.$menu.css("min-width",""),this.$newElement.css("width","")),this.$newElement.hasClass("fit-width")&&"fit"!==this.options.width&&this.$newElement[0].classList.remove("fit-width")},selectPosition:function(){this.$bsContainer=$('
');function e(e){var t={},i=l.options.display||!!$.fn.dropdown.Constructor.Default&&$.fn.dropdown.Constructor.Default.display;l.$bsContainer.addClass(e.attr("class").replace(/form-control|fit-width/gi,"")).toggleClass(z.DROPUP,e.hasClass(z.DROPUP)),s=e.offset(),r.is("body")?n={top:0,left:0}:((n=r.offset()).top+=parseInt(r.css("borderTopWidth"))-r.scrollTop(),n.left+=parseInt(r.css("borderLeftWidth"))-r.scrollLeft()),o=e.hasClass(z.DROPUP)?0:v(e[0]),(A.major<4||"static"===i)&&(t.top=s.top-n.top+o,t.left=s.left-n.left),t.width=C(e[0]),l.$bsContainer.css(t)}var s,n,o,l=this,r=$(this.options.container);this.$button.on("click.bs.dropdown.data-api",function(){l.isDisabled()||(e(l.$newElement),l.$bsContainer.appendTo(l.options.container).toggleClass(z.SHOW,!l.$button.hasClass(z.SHOW)).append(l.$menu))}),$(window).off("resize"+T+"."+this.selectId+" scroll"+T+"."+this.selectId).on("resize"+T+"."+this.selectId+" scroll"+T+"."+this.selectId,function(){l.$newElement.hasClass(z.SHOW)&&e(l.$newElement)}),this.$element.on("hide"+T,function(){l.$menu.data("height",l.$menu.height()),l.$bsContainer.detach()})},createOption:function(e,t){var i,s=e.option||e;s&&1!==s.nodeType&&(i=(t?L.selectedOption:L.option).cloneNode(!0),void 0!==s.value&&(i.value=s.value),i.textContent=s.text,i.selected=!0,void 0!==s.liIndex?i.liIndex=s.liIndex:t||(i.liIndex=e.index),e.option=i,this.selectpicker.main.optionQueue.appendChild(i))},setOptionStatus:function(e){var t=this;if(t.noScroll=!1,t.selectpicker.view.visibleElements&&t.selectpicker.view.visibleElements.length){for(var i=0;i
');d[2]&&(b=b.replace("{var}",d[2][1"+b+"")),c=!1,I.$element.trigger("maxReached"+T)),h&&t&&(k.append($("
"+w+"
")),c=!1,I.$element.trigger("maxReachedGrp"+T)),setTimeout(function(){I.setSelected(o,!1)},10),k[0].classList.add("fadeOut"),setTimeout(function(){k.remove()},1050)}}}else a&&I.setSelected(a,!1),I.setSelected(o,!0);I.options.source.data&&I.$element[0].appendChild(I.selectpicker.main.optionQueue),!I.multiple||I.multiple&&1===I.options.maxOptions?I.$button.trigger("focus"):I.options.liveSearch&&I.$searchbox.trigger("focus"),!c||!I.multiple&&r===s.selectedIndex||(E=[e.index,i.prop("selected"),l],I.$element.triggerNative("change"))}}),this.$menu.on("click","li."+z.DISABLED+" a, ."+z.POPOVERHEADER+", ."+z.POPOVERHEADER+" :not(.close)",function(e){e.currentTarget==this&&(e.preventDefault(),e.stopPropagation(),(I.options.liveSearch&&!$(e.target).hasClass("close")?I.$searchbox:I.$button).trigger("focus"))}),this.$menuInner.on("click",".divider, .dropdown-header",function(e){e.preventDefault(),e.stopPropagation(),(I.options.liveSearch?I.$searchbox:I.$button).trigger("focus")}),this.$menu.on("click","."+z.POPOVERHEADER+" .close",function(){I.$button.trigger("click")}),this.$searchbox.on("click",function(e){e.stopPropagation()}),this.$menu.on("click",".actions-btn",function(e){(I.options.liveSearch?I.$searchbox:I.$button).trigger("focus"),e.preventDefault(),e.stopPropagation(),$(this).hasClass("bs-select-all")?I.selectAll():I.deselectAll()}),this.$button.on("focus"+T,function(e){var t=I.$element[0].getAttribute("tabindex");void 0!==t&&e.originalEvent&&e.originalEvent.isTrusted&&(this.setAttribute("tabindex",t),I.$element[0].setAttribute("tabindex",-1),I.selectpicker.view.tabindex=t)}).on("blur"+T,function(e){void 0!==I.selectpicker.view.tabindex&&e.originalEvent&&e.originalEvent.isTrusted&&(I.$element[0].setAttribute("tabindex",I.selectpicker.view.tabindex),this.setAttribute("tabindex",-1),I.selectpicker.view.tabindex=void 0)}),this.$element.on("change"+T,function(){I.render(),I.$element.trigger("changed"+T,E),E=null}).on("focus"+T,function(){I.options.mobile||I.$button[0].focus()})},liveSearchListener:function(){var e,p=this;this.$button.on("click.bs.dropdown.data-api",function(){clearTimeout(e),p.$searchbox.val()&&(p.$searchbox.val(""),p.selectpicker.search.previousValue=void 0)}),this.$searchbox.on("click.bs.dropdown.data-api focus.bs.dropdown.data-api touchend.bs.dropdown.data-api",function(e){e.stopPropagation()}),this.$searchbox.on("input propertychange",function(){clearTimeout(e);var h=p.$searchbox[0].value;/^\s*$/.test(h)||(h=h.replace(/^\s+|\s+$/g,"")),e=setTimeout(function(){if(p.selectpicker.search.elements=[],p.selectpicker.search.data=[],h)if(p.selectpicker.search.previousValue=h,p.options.source.search)p.fetchData(function(e){p.render(),p.buildList(void 0,!0),p.noScroll=!0,p.$menuInner.scrollTop(0),p.createView(!0),le.call(p,e,h)},"search",0,h);else{var e=[],t=h.toUpperCase(),i={},s=[],n=p._searchStyle(),o=p.options.liveSearchNormalize;o&&(t=Q(t));for(var l=0;l=r.selectpicker.view.canHighlight.length&&(d=r.selectpicker.view.firstHighlightIndex),r.selectpicker.view.canHighlight[d+p]||(d=d+1+r.selectpicker.view.canHighlight.slice(d+p+1).indexOf(!0))),e.preventDefault();var u=p+d;e.which===I?0===p&&d===a.length-1?(r.$menuInner[0].scrollTop=r.$menuInner[0].scrollHeight,u=r.selectpicker.current.elements.length-1):(s=r.selectpicker.current.data[u])&&(c=(n=s.position-s.height)h+r.sizeInfo.menuInnerHeight),i=r.selectpicker.main.elements[l],r.activeElement=i,r.focusItem(i),i&&i.firstChild.focus(),c&&(r.$menuInner[0].scrollTop=n),o.trigger("focus"))}t&&(e.which===b&&!r.selectpicker.keydown.keyHistory||e.which===te||e.which===w&&r.options.selectOnTab)&&(e.which!==b&&e.preventDefault(),r.options.liveSearch&&e.which===b||(r.$menuInner.find(".active a").trigger("click",!0),o.trigger("focus"),r.options.liveSearch||(e.preventDefault(),$(document).data("spaceSelect",!0))),e.which===te&&r.dropdown.hide())}},mobile:function(){this.options.mobile=!0,this.$element[0].classList.add("mobile-device")},refresh:function(){var e=this,t=$.extend({},this.options,d(this.$element),this.$element.data());this.options=t,this.selectpicker.main.data=[],this.options.source.data?(this.render(),this.buildList()):this.fetchData(function(){e.render(),e.buildList()}),this.checkDisabled(),this.setStyle(),this.setWidth(),this.setSize(!0),this.$element.trigger("refreshed"+T)},hide:function(){this.$newElement.hide()},show:function(){this.$newElement.show()},remove:function(){this.$newElement.remove(),this.$element.remove()},destroy:function(){this.$newElement.before(this.$element).remove(),(this.$bsContainer||this.$menu).remove(),this.selectpicker.view.titleOption&&this.selectpicker.view.titleOption.parentNode&&this.selectpicker.view.titleOption.parentNode.removeChild(this.selectpicker.view.titleOption),this.$element.off(T).removeData("selectpicker").removeClass("bs-select-hidden selectpicker mobile-device"),$(window).off(T+"."+this.selectId)}};var ce=$.fn.selectpicker;function de(){return A.major<5?$.fn.dropdown?($.fn.dropdown.Constructor._dataApiKeydownHandler||$.fn.dropdown.Constructor.prototype.keydown).apply(this,arguments):void 0:f.dataApiKeydownHandler}$.fn.selectpicker=ae,$.fn.selectpicker.Constructor=H,$.fn.selectpicker.noConflict=function(){return $.fn.selectpicker=ce,this},$(document).off("keydown.bs.dropdown.data-api").on("keydown.bs.dropdown.data-api",":not(.bootstrap-select) > ["+D.DATA_TOGGLE+"]",de).on("keydown.bs.dropdown.data-api",":not(.bootstrap-select) > .dropdown-menu",de).on("keydown"+T,".bootstrap-select ["+D.DATA_TOGGLE+'], .bootstrap-select [role="listbox"], .bootstrap-select .bs-searchbox input',H.prototype.keydown).on("focusin.modal",".bootstrap-select ["+D.DATA_TOGGLE+'], .bootstrap-select [role="listbox"], .bootstrap-select .bs-searchbox input',function(e){e.stopPropagation()}),document.addEventListener("DOMContentLoaded",function(){$(".selectpicker").each(function(){var e=$(this);ae.call(e,e.data())})})}(e)}); +//# sourceMappingURL=bootstrap-select.min.js.map \ No newline at end of file diff --git a/apps/nps/0.29.21/web/static/js/bootstrap-table-cookie.min.js b/apps/nps/0.29.21/web/static/js/bootstrap-table-cookie.min.js new file mode 100644 index 0000000..46dbe51 --- /dev/null +++ b/apps/nps/0.29.21/web/static/js/bootstrap-table-cookie.min.js @@ -0,0 +1,10 @@ +/** + * bootstrap-table - An extended table to integration with some of the most widely used CSS frameworks. (Supports Bootstrap, Semantic UI, Bulma, Material Design, Foundation) + * + * @version v1.24.1 + * @homepage https://bootstrap-table.com + * @author wenzhixin (http://wenzhixin.net.cn/) + * @license MIT + */ + +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(require("jquery")):"function"==typeof define&&define.amd?define(["jquery"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).jQuery)}(this,(function(t){"use strict";function e(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r=t.length?{done:!0}:{done:!1,value:t[n++]}},e:function(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,u=!0,a=!1;return{s:function(){r=r.call(t)},n:function(){var t=r.next();return u=t.done,t},e:function(t){a=!0,i=t},f:function(){try{u||null==r.return||r.return()}finally{if(a)throw i}}}}function i(){return i="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(t,e,r){var n=function(t,e){for(;!{}.hasOwnProperty.call(t,e)&&null!==(t=u(t)););return t}(t,e);if(n){var o=Object.getOwnPropertyDescriptor(n,e);return o.get?o.get.call(arguments.length<3?t:r):o.value}},i.apply(null,arguments)}function u(t){return u=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},u(t)}function a(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(a=function(){return!!t})()}function c(t,e){return c=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},c(t,e)}function s(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=r){var n,o,i,u,a=[],c=!0,s=!1;try{if(i=(r=r.call(t)).next,0===e);else for(;!(c=(n=i.call(r)).done)&&(a.push(n.value),a.length!==e);c=!0);}catch(t){s=!0,o=t}finally{try{if(!c&&null!=r.return&&(u=r.return(),Object(u)!==u))return}finally{if(s)throw o}}return a}}(t,e)||p(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function f(t,e,r,n){var o=i(u(t.prototype),e,r);return"function"==typeof o?function(t){return o.apply(r,t)}:o}function l(t){var e=function(t,e){if("object"!=typeof t||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,e);if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t,"string");return"symbol"==typeof e?e:e+""}function p(t,r){if(t){if("string"==typeof t)return e(t,r);var n={}.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?e(t,r):void 0}}var h,d,v="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},g={};function b(){if(d)return h;d=1;var t=function(t){return t&&t.Math===Math&&t};return h=t("object"==typeof globalThis&&globalThis)||t("object"==typeof window&&window)||t("object"==typeof self&&self)||t("object"==typeof v&&v)||t("object"==typeof h&&h)||function(){return this}()||Function("return this")()}var y,m,k,S,C,w,O,I,x={};function j(){return m?y:(m=1,y=function(t){try{return!!t()}catch(t){return!0}})}function E(){if(S)return k;S=1;var t=j();return k=!t((function(){return 7!==Object.defineProperty({},1,{get:function(){return 7}})[1]}))}function P(){if(w)return C;w=1;var t=j();return C=!t((function(){var t=function(){}.bind();return"function"!=typeof t||t.hasOwnProperty("prototype")}))}function T(){if(I)return O;I=1;var t=P(),e=Function.prototype.call;return O=t?e.bind(e):function(){return e.apply(e,arguments)},O}var N,A,_,L,R,V,M,D,B,F,$,J,G,z,H,U,q,W,K,Y,X,Q,Z,tt,et,rt,nt,ot,it,ut,at,ct,st,ft,lt,pt,ht,dt,vt,gt,bt,yt={};function mt(){if(N)return yt;N=1;var t={}.propertyIsEnumerable,e=Object.getOwnPropertyDescriptor,r=e&&!t.call({1:2},1);return yt.f=r?function(t){var r=e(this,t);return!!r&&r.enumerable}:t,yt}function kt(){return _?A:(_=1,A=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}})}function St(){if(R)return L;R=1;var t=P(),e=Function.prototype,r=e.call,n=t&&e.bind.bind(r,r);return L=t?n:function(t){return function(){return r.apply(t,arguments)}},L}function Ct(){if(M)return V;M=1;var t=St(),e=t({}.toString),r=t("".slice);return V=function(t){return r(e(t),8,-1)}}function wt(){if(B)return D;B=1;var t=St(),e=j(),r=Ct(),n=Object,o=t("".split);return D=e((function(){return!n("z").propertyIsEnumerable(0)}))?function(t){return"String"===r(t)?o(t,""):n(t)}:n}function Ot(){return $?F:($=1,F=function(t){return null==t})}function It(){if(G)return J;G=1;var t=Ot(),e=TypeError;return J=function(r){if(t(r))throw new e("Can't call method on "+r);return r}}function xt(){if(H)return z;H=1;var t=wt(),e=It();return z=function(r){return t(e(r))}}function jt(){if(q)return U;q=1;var t="object"==typeof document&&document.all;return U=void 0===t&&void 0!==t?function(e){return"function"==typeof e||e===t}:function(t){return"function"==typeof t}}function Et(){if(K)return W;K=1;var t=jt();return W=function(e){return"object"==typeof e?null!==e:t(e)}}function Pt(){if(X)return Y;X=1;var t=b(),e=jt();return Y=function(r,n){return arguments.length<2?(o=t[r],e(o)?o:void 0):t[r]&&t[r][n];var o},Y}function Tt(){if(Z)return Q;Z=1;var t=St();return Q=t({}.isPrototypeOf)}function Nt(){if(nt)return rt;nt=1;var t,e,r=b(),n=function(){if(et)return tt;et=1;var t=b().navigator,e=t&&t.userAgent;return tt=e?String(e):""}(),o=r.process,i=r.Deno,u=o&&o.versions||i&&i.version,a=u&&u.v8;return a&&(e=(t=a.split("."))[0]>0&&t[0]<4?1:+(t[0]+t[1])),!e&&n&&(!(t=n.match(/Edge\/(\d+)/))||t[1]>=74)&&(t=n.match(/Chrome\/(\d+)/))&&(e=+t[1]),rt=e}function At(){if(it)return ot;it=1;var t=Nt(),e=j(),r=b().String;return ot=!!Object.getOwnPropertySymbols&&!e((function(){var e=Symbol("symbol detection");return!r(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&t&&t<41}))}function _t(){if(at)return ut;at=1;var t=At();return ut=t&&!Symbol.sham&&"symbol"==typeof Symbol.iterator}function Lt(){if(st)return ct;st=1;var t=Pt(),e=jt(),r=Tt(),n=_t(),o=Object;return ct=n?function(t){return"symbol"==typeof t}:function(n){var i=t("Symbol");return e(i)&&r(i.prototype,o(n))}}function Rt(){if(lt)return ft;lt=1;var t=String;return ft=function(e){try{return t(e)}catch(t){return"Object"}}}function Vt(){if(ht)return pt;ht=1;var t=jt(),e=Rt(),r=TypeError;return pt=function(n){if(t(n))return n;throw new r(e(n)+" is not a function")}}function Mt(){if(vt)return dt;vt=1;var t=Vt(),e=Ot();return dt=function(r,n){var o=r[n];return e(o)?void 0:t(o)}}function Dt(){if(bt)return gt;bt=1;var t=T(),e=jt(),r=Et(),n=TypeError;return gt=function(o,i){var u,a;if("string"===i&&e(u=o.toString)&&!r(a=t(u,o)))return a;if(e(u=o.valueOf)&&!r(a=t(u,o)))return a;if("string"!==i&&e(u=o.toString)&&!r(a=t(u,o)))return a;throw new n("Can't convert object to primitive value")}}var Bt,Ft,$t,Jt,Gt,zt,Ht,Ut,qt,Wt,Kt,Yt,Xt,Qt,Zt,te,ee,re,ne,oe,ie,ue,ae,ce,se={exports:{}};function fe(){if(Jt)return $t;Jt=1;var t=b(),e=Object.defineProperty;return $t=function(r,n){try{e(t,r,{value:n,configurable:!0,writable:!0})}catch(e){t[r]=n}return n}}function le(){if(Gt)return se.exports;Gt=1;var t=Ft?Bt:(Ft=1,Bt=!1),e=b(),r=fe(),n="__core-js_shared__",o=se.exports=e[n]||r(n,{});return(o.versions||(o.versions=[])).push({version:"3.39.0",mode:t?"pure":"global",copyright:"© 2014-2024 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.39.0/LICENSE",source:"https://github.com/zloirock/core-js"}),se.exports}function pe(){if(Ht)return zt;Ht=1;var t=le();return zt=function(e,r){return t[e]||(t[e]=r||{})}}function he(){if(qt)return Ut;qt=1;var t=It(),e=Object;return Ut=function(r){return e(t(r))}}function de(){if(Kt)return Wt;Kt=1;var t=St(),e=he(),r=t({}.hasOwnProperty);return Wt=Object.hasOwn||function(t,n){return r(e(t),n)}}function ve(){if(Xt)return Yt;Xt=1;var t=St(),e=0,r=Math.random(),n=t(1..toString);return Yt=function(t){return"Symbol("+(void 0===t?"":t)+")_"+n(++e+r,36)}}function ge(){if(Zt)return Qt;Zt=1;var t=b(),e=pe(),r=de(),n=ve(),o=At(),i=_t(),u=t.Symbol,a=e("wks"),c=i?u.for||u:u&&u.withoutSetter||n;return Qt=function(t){return r(a,t)||(a[t]=o&&r(u,t)?u[t]:c("Symbol."+t)),a[t]}}function be(){if(ee)return te;ee=1;var t=T(),e=Et(),r=Lt(),n=Mt(),o=Dt(),i=ge(),u=TypeError,a=i("toPrimitive");return te=function(i,c){if(!e(i)||r(i))return i;var s,f=n(i,a);if(f){if(void 0===c&&(c="default"),s=t(f,i,c),!e(s)||r(s))return s;throw new u("Can't convert object to primitive value")}return void 0===c&&(c="number"),o(i,c)}}function ye(){if(ne)return re;ne=1;var t=be(),e=Lt();return re=function(r){var n=t(r,"string");return e(n)?n:n+""}}function me(){if(ie)return oe;ie=1;var t=b(),e=Et(),r=t.document,n=e(r)&&e(r.createElement);return oe=function(t){return n?r.createElement(t):{}}}function ke(){if(ae)return ue;ae=1;var t=E(),e=j(),r=me();return ue=!t&&!e((function(){return 7!==Object.defineProperty(r("div"),"a",{get:function(){return 7}}).a}))}function Se(){if(ce)return x;ce=1;var t=E(),e=T(),r=mt(),n=kt(),o=xt(),i=ye(),u=de(),a=ke(),c=Object.getOwnPropertyDescriptor;return x.f=t?c:function(t,s){if(t=o(t),s=i(s),a)try{return c(t,s)}catch(t){}if(u(t,s))return n(!e(r.f,t,s),t[s])},x}var Ce,we,Oe,Ie,xe,je,Ee,Pe={};function Te(){if(we)return Ce;we=1;var t=E(),e=j();return Ce=t&&e((function(){return 42!==Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype}))}function Ne(){if(Ie)return Oe;Ie=1;var t=Et(),e=String,r=TypeError;return Oe=function(n){if(t(n))return n;throw new r(e(n)+" is not an object")}}function Ae(){if(xe)return Pe;xe=1;var t=E(),e=ke(),r=Te(),n=Ne(),o=ye(),i=TypeError,u=Object.defineProperty,a=Object.getOwnPropertyDescriptor,c="enumerable",s="configurable",f="writable";return Pe.f=t?r?function(t,e,r){if(n(t),e=o(e),n(r),"function"==typeof t&&"prototype"===e&&"value"in r&&f in r&&!r[f]){var i=a(t,e);i&&i[f]&&(t[e]=r.value,r={configurable:s in r?r[s]:i[s],enumerable:c in r?r[c]:i[c],writable:!1})}return u(t,e,r)}:u:function(t,r,a){if(n(t),r=o(r),n(a),e)try{return u(t,r,a)}catch(t){}if("get"in a||"set"in a)throw new i("Accessors not supported");return"value"in a&&(t[r]=a.value),t},Pe}function _e(){if(Ee)return je;Ee=1;var t=E(),e=Ae(),r=kt();return je=t?function(t,n,o){return e.f(t,n,r(1,o))}:function(t,e,r){return t[e]=r,t}}var Le,Re,Ve,Me,De,Be,Fe,$e,Je,Ge,ze,He,Ue,qe,We,Ke={exports:{}};function Ye(){if(Re)return Le;Re=1;var t=E(),e=de(),r=Function.prototype,n=t&&Object.getOwnPropertyDescriptor,o=e(r,"name"),i=o&&"something"===function(){}.name,u=o&&(!t||t&&n(r,"name").configurable);return Le={EXISTS:o,PROPER:i,CONFIGURABLE:u}}function Xe(){if(Me)return Ve;Me=1;var t=St(),e=jt(),r=le(),n=t(Function.toString);return e(r.inspectSource)||(r.inspectSource=function(t){return n(t)}),Ve=r.inspectSource}function Qe(){if($e)return Fe;$e=1;var t=pe(),e=ve(),r=t("keys");return Fe=function(t){return r[t]||(r[t]=e(t))}}function Ze(){return Ge?Je:(Ge=1,Je={})}function tr(){if(He)return ze;He=1;var t,e,r,n=function(){if(Be)return De;Be=1;var t=b(),e=jt(),r=t.WeakMap;return De=e(r)&&/native code/.test(String(r))}(),o=b(),i=Et(),u=_e(),a=de(),c=le(),s=Qe(),f=Ze(),l="Object already initialized",p=o.TypeError,h=o.WeakMap;if(n||c.state){var d=c.state||(c.state=new h);d.get=d.get,d.has=d.has,d.set=d.set,t=function(t,e){if(d.has(t))throw new p(l);return e.facade=t,d.set(t,e),e},e=function(t){return d.get(t)||{}},r=function(t){return d.has(t)}}else{var v=s("state");f[v]=!0,t=function(t,e){if(a(t,v))throw new p(l);return e.facade=t,u(t,v,e),e},e=function(t){return a(t,v)?t[v]:{}},r=function(t){return a(t,v)}}return ze={set:t,get:e,has:r,enforce:function(n){return r(n)?e(n):t(n,{})},getterFor:function(t){return function(r){var n;if(!i(r)||(n=e(r)).type!==t)throw new p("Incompatible receiver, "+t+" required");return n}}}}function er(){if(Ue)return Ke.exports;Ue=1;var t=St(),e=j(),r=jt(),n=de(),o=E(),i=Ye().CONFIGURABLE,u=Xe(),a=tr(),c=a.enforce,s=a.get,f=String,l=Object.defineProperty,p=t("".slice),h=t("".replace),d=t([].join),v=o&&!e((function(){return 8!==l((function(){}),"length",{value:8}).length})),g=String(String).split("String"),b=Ke.exports=function(t,e,r){"Symbol("===p(f(e),0,7)&&(e="["+h(f(e),/^Symbol\(([^)]*)\).*$/,"$1")+"]"),r&&r.getter&&(e="get "+e),r&&r.setter&&(e="set "+e),(!n(t,"name")||i&&t.name!==e)&&(o?l(t,"name",{value:e,configurable:!0}):t.name=e),v&&r&&n(r,"arity")&&t.length!==r.arity&&l(t,"length",{value:r.arity});try{r&&n(r,"constructor")&&r.constructor?o&&l(t,"prototype",{writable:!1}):t.prototype&&(t.prototype=void 0)}catch(t){}var u=c(t);return n(u,"source")||(u.source=d(g,"string"==typeof e?e:"")),t};return Function.prototype.toString=b((function(){return r(this)&&s(this).source||u(this)}),"toString"),Ke.exports}function rr(){if(We)return qe;We=1;var t=jt(),e=Ae(),r=er(),n=fe();return qe=function(o,i,u,a){a||(a={});var c=a.enumerable,s=void 0!==a.name?a.name:i;if(t(u)&&r(u,s,a),a.global)c?o[i]=u:n(i,u);else{try{a.unsafe?o[i]&&(c=!0):delete o[i]}catch(t){}c?o[i]=u:e.f(o,i,{value:u,enumerable:!1,configurable:!a.nonConfigurable,writable:!a.nonWritable})}return o}}var nr,or,ir,ur,ar,cr,sr,fr,lr,pr,hr,dr,vr,gr,br,yr,mr,kr={};function Sr(){if(ur)return ir;ur=1;var t=function(){if(or)return nr;or=1;var t=Math.ceil,e=Math.floor;return nr=Math.trunc||function(r){var n=+r;return(n>0?e:t)(n)}}();return ir=function(e){var r=+e;return r!=r||0===r?0:t(r)}}function Cr(){if(cr)return ar;cr=1;var t=Sr(),e=Math.max,r=Math.min;return ar=function(n,o){var i=t(n);return i<0?e(i+o,0):r(i,o)}}function wr(){if(fr)return sr;fr=1;var t=Sr(),e=Math.min;return sr=function(r){var n=t(r);return n>0?e(n,9007199254740991):0}}function Or(){if(pr)return lr;pr=1;var t=wr();return lr=function(e){return t(e.length)}}function Ir(){if(dr)return hr;dr=1;var t=xt(),e=Cr(),r=Or(),n=function(n){return function(o,i,u){var a=t(o),c=r(a);if(0===c)return!n&&-1;var s,f=e(u,c);if(n&&i!=i){for(;c>f;)if((s=a[f++])!=s)return!0}else for(;c>f;f++)if((n||f in a)&&a[f]===i)return n||f||0;return!n&&-1}};return hr={includes:n(!0),indexOf:n(!1)}}function xr(){if(gr)return vr;gr=1;var t=St(),e=de(),r=xt(),n=Ir().indexOf,o=Ze(),i=t([].push);return vr=function(t,u){var a,c=r(t),s=0,f=[];for(a in c)!e(o,a)&&e(c,a)&&i(f,a);for(;u.length>s;)e(c,a=u[s++])&&(~n(f,a)||i(f,a));return f}}function jr(){return yr?br:(yr=1,br=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"])}var Er,Pr,Tr,Nr,Ar,_r,Lr,Rr,Vr,Mr,Dr,Br,Fr,$r,Jr,Gr,zr,Hr,Ur,qr,Wr,Kr,Yr,Xr,Qr,Zr,tn,en,rn={};function nn(){return Er||(Er=1,rn.f=Object.getOwnPropertySymbols),rn}function on(){if(Tr)return Pr;Tr=1;var t=Pt(),e=St(),r=function(){if(mr)return kr;mr=1;var t=xr(),e=jr().concat("length","prototype");return kr.f=Object.getOwnPropertyNames||function(r){return t(r,e)},kr}(),n=nn(),o=Ne(),i=e([].concat);return Pr=t("Reflect","ownKeys")||function(t){var e=r.f(o(t)),u=n.f;return u?i(e,u(t)):e}}function un(){if(Ar)return Nr;Ar=1;var t=de(),e=on(),r=Se(),n=Ae();return Nr=function(o,i,u){for(var a=e(i),c=n.f,s=r.f,f=0;f9007199254740991)throw t("Maximum allowed index exceeded");return e}}function fn(){if(Jr)return $r;Jr=1;var t=E(),e=Ae(),r=kt();return $r=function(n,o,i){t?e.f(n,o,r(0,i)):n[o]=i}}function ln(){if(zr)return Gr;zr=1;var t={};return t[ge()("toStringTag")]="z",Gr="[object z]"===String(t)}function pn(){if(Ur)return Hr;Ur=1;var t=ln(),e=jt(),r=Ct(),n=ge()("toStringTag"),o=Object,i="Arguments"===r(function(){return arguments}());return Hr=t?r:function(t){var u,a,c;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(a=function(t,e){try{return t[e]}catch(t){}}(u=o(t),n))?a:i?r(u):"Object"===(c=r(u))&&e(u.callee)?"Arguments":c}}function hn(){if(Wr)return qr;Wr=1;var t=St(),e=j(),r=jt(),n=pn(),o=Pt(),i=Xe(),u=function(){},a=o("Reflect","construct"),c=/^\s*(?:class|function)\b/,s=t(c.exec),f=!c.test(u),l=function(t){if(!r(t))return!1;try{return a(u,[],t),!0}catch(t){return!1}},p=function(t){if(!r(t))return!1;switch(n(t)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return f||!!s(c,i(t))}catch(t){return!0}};return p.sham=!0,qr=!a||e((function(){var t;return l(l.call)||!l(Object)||!l((function(){t=!0}))||t}))?p:l}function dn(){if(Yr)return Kr;Yr=1;var t=cn(),e=hn(),r=Et(),n=ge()("species"),o=Array;return Kr=function(i){var u;return t(i)&&(u=i.constructor,(e(u)&&(u===o||t(u.prototype))||r(u)&&null===(u=u[n]))&&(u=void 0)),void 0===u?o:u}}function vn(){if(Qr)return Xr;Qr=1;var t=dn();return Xr=function(e,r){return new(t(e))(0===r?0:r)}}function gn(){if(tn)return Zr;tn=1;var t=j(),e=ge(),r=Nt(),n=e("species");return Zr=function(e){return r>=51||!t((function(){var t=[];return(t.constructor={})[n]=function(){return{foo:1}},1!==t[e](Boolean).foo}))}}!function(){if(en)return g;en=1;var t=an(),e=j(),r=cn(),n=Et(),o=he(),i=Or(),u=sn(),a=fn(),c=vn(),s=gn(),f=ge(),l=Nt(),p=f("isConcatSpreadable"),h=l>=51||!e((function(){var t=[];return t[p]=!1,t.concat()[0]!==t})),d=function(t){if(!n(t))return!1;var e=t[p];return void 0!==e?!!e:r(t)};t({target:"Array",proto:!0,arity:1,forced:!h||!s("concat")},{concat:function(t){var e,r,n,s,f,l=o(this),p=c(l,0),h=0;for(e=-1,n=arguments.length;eO;O++)if((h||O in S)&&(m=w(y=S[O],O,k),e))if(a)x[O]=m;else if(m)switch(e){case 3:return!0;case 5:return y;case 6:return O;case 2:u(x,y)}else switch(e){case 4:return!1;case 7:u(x,y)}return l?-1:s||f?f:x}};return Sn={forEach:a(0),map:a(1),filter:a(2),some:a(3),every:a(4),find:a(5),findIndex:a(6),filterReject:a(7)}}!function(){if(wn)return On;wn=1;var t=an(),e=xn().filter;t({target:"Array",proto:!0,forced:!gn()("filter")},{filter:function(t){return e(this,t,arguments.length>1?arguments[1]:void 0)}})}();var jn,En,Pn,Tn,Nn,An,_n,Ln,Rn,Vn,Mn={},Dn={};function Bn(){if(En)return jn;En=1;var t=xr(),e=jr();return jn=Object.keys||function(r){return t(r,e)}}function Fn(){if(Nn)return Tn;Nn=1;var t=Pt();return Tn=t("document","documentElement")}function $n(){if(_n)return An;_n=1;var t,e=Ne(),r=function(){if(Pn)return Dn;Pn=1;var t=E(),e=Te(),r=Ae(),n=Ne(),o=xt(),i=Bn();return Dn.f=t&&!e?Object.defineProperties:function(t,e){n(t);for(var u,a=o(e),c=i(e),s=c.length,f=0;s>f;)r.f(t,u=c[f++],a[u]);return t},Dn}(),n=jr(),o=Ze(),i=Fn(),u=me(),a=Qe(),c="prototype",s="script",f=a("IE_PROTO"),l=function(){},p=function(t){return"<"+s+">"+t+""},h=function(t){t.write(p("")),t.close();var e=t.parentWindow.Object;return t=null,e},d=function(){try{t=new ActiveXObject("htmlfile")}catch(t){}var e,r,o;d="undefined"!=typeof document?document.domain&&t?h(t):(r=u("iframe"),o="java"+s+":",r.style.display="none",i.appendChild(r),r.src=String(o),(e=r.contentWindow.document).open(),e.write(p("document.F=Object")),e.close(),e.F):h(t);for(var a=n.length;a--;)delete d[c][n[a]];return d()};return o[f]=!0,An=Object.create||function(t,n){var o;return null!==t?(l[c]=e(t),o=new l,l[c]=null,o[f]=t):o=d(),void 0===n?o:r.f(o,n)}}function Jn(){if(Rn)return Ln;Rn=1;var t=ge(),e=$n(),r=Ae().f,n=t("unscopables"),o=Array.prototype;return void 0===o[n]&&r(o,n,{configurable:!0,value:e(null)}),Ln=function(t){o[n][t]=!0}}!function(){if(Vn)return Mn;Vn=1;var t=an(),e=xn().find,r=Jn(),n="find",o=!0;n in[]&&Array(1)[n]((function(){o=!1})),t({target:"Array",proto:!0,forced:o},{find:function(t){return e(this,t,arguments.length>1?arguments[1]:void 0)}}),r(n)}();var Gn,zn={};!function(){if(Gn)return zn;Gn=1;var t=an(),e=Ir().includes,r=j(),n=Jn();t({target:"Array",proto:!0,forced:r((function(){return!Array(1).includes()}))},{includes:function(t){return e(this,t,arguments.length>1?arguments[1]:void 0)}}),n("includes")}();var Hn,Un,qn,Wn={};function Kn(){if(Un)return Hn;Un=1;var t=j();return Hn=function(e,r){var n=[][e];return!!n&&t((function(){n.call(null,r||function(){return 1},1)}))}}!function(){if(qn)return Wn;qn=1;var t=an(),e=St(),r=wt(),n=xt(),o=Kn(),i=e([].join);t({target:"Array",proto:!0,forced:r!==Object||!o("join",",")},{join:function(t){return i(n(this),void 0===t?",":t)}})}();var Yn,Xn={};!function(){if(Yn)return Xn;Yn=1;var t=an(),e=xn().map;t({target:"Array",proto:!0,forced:!gn()("map")},{map:function(t){return e(this,t,arguments.length>1?arguments[1]:void 0)}})}();var Qn,Zn={};!function(){if(Qn)return Zn;Qn=1;var t=an(),e=j(),r=he(),n=be();t({target:"Date",proto:!0,arity:1,forced:e((function(){return null!==new Date(NaN).toJSON()||1!==Date.prototype.toJSON.call({toISOString:function(){return 1}})}))},{toJSON:function(t){var e=r(this),o=n(e,"number");return"number"!=typeof o||isFinite(o)?e.toISOString():null}})}();var to,eo,ro,no={};!function(){if(ro)return no;ro=1;var t=an(),e=function(){if(eo)return to;eo=1;var t=E(),e=St(),r=T(),n=j(),o=Bn(),i=nn(),u=mt(),a=he(),c=wt(),s=Object.assign,f=Object.defineProperty,l=e([].concat);return to=!s||n((function(){if(t&&1!==s({b:1},s(f({},"a",{enumerable:!0,get:function(){f(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},r={},n=Symbol("assign detection"),i="abcdefghijklmnopqrst";return e[n]=7,i.split("").forEach((function(t){r[t]=t})),7!==s({},e)[n]||o(s({},r)).join("")!==i}))?function(e,n){for(var s=a(e),f=arguments.length,p=1,h=i.f,d=u.f;f>p;)for(var v,g=c(arguments[p++]),b=h?l(o(g),h(g)):o(g),y=b.length,m=0;y>m;)v=b[m++],t&&!r(d,g,v)||(s[v]=g[v]);return s}:s,to}();t({target:"Object",stat:!0,arity:2,forced:Object.assign!==e},{assign:e})}();var oo,io,uo,ao,co,so,fo,lo={};function po(){if(ao)return uo;ao=1;var t=de(),e=jt(),r=he(),n=Qe(),o=function(){if(io)return oo;io=1;var t=j();return oo=!t((function(){function t(){}return t.prototype.constructor=null,Object.getPrototypeOf(new t)!==t.prototype}))}(),i=n("IE_PROTO"),u=Object,a=u.prototype;return uo=o?u.getPrototypeOf:function(n){var o=r(n);if(t(o,i))return o[i];var c=o.constructor;return e(c)&&o instanceof c?c.prototype:o instanceof u?a:null}}!function(){if(fo)return lo;fo=1;var t=an(),e=function(){if(so)return co;so=1;var t=E(),e=j(),r=St(),n=po(),o=Bn(),i=xt(),u=r(mt().f),a=r([].push),c=t&&e((function(){var t=Object.create(null);return t[2]=2,!u(t,2)})),s=function(e){return function(r){for(var s,f=i(r),l=o(f),p=c&&null===n(f),h=l.length,d=0,v=[];h>d;)s=l[d++],t&&!(p?s in f:u(f,s))||a(v,e?[s,f[s]]:f[s]);return v}};return co={entries:s(!0),values:s(!1)}}().entries;t({target:"Object",stat:!0},{entries:function(t){return e(t)}})}();var ho,vo={};!function(){if(ho)return vo;ho=1;var t=an(),e=he(),r=Bn();t({target:"Object",stat:!0,forced:j()((function(){r(1)}))},{keys:function(t){return r(e(t))}})}();var go,bo,yo,mo={};!function(){if(yo)return mo;yo=1;var t=ln(),e=rr(),r=function(){if(bo)return go;bo=1;var t=ln(),e=pn();return go=t?{}.toString:function(){return"[object "+e(this)+"]"}}();t||e(Object.prototype,"toString",r,{unsafe:!0})}();var ko,So,Co,wo,Oo,Io,xo,jo,Eo,Po,To,No,Ao,_o={};function Lo(){if(So)return ko;So=1;var t=pn(),e=String;return ko=function(r){if("Symbol"===t(r))throw new TypeError("Cannot convert a Symbol value to a string");return e(r)}}function Ro(){if(wo)return Co;wo=1;var t=Ne();return Co=function(){var e=t(this),r="";return e.hasIndices&&(r+="d"),e.global&&(r+="g"),e.ignoreCase&&(r+="i"),e.multiline&&(r+="m"),e.dotAll&&(r+="s"),e.unicode&&(r+="u"),e.unicodeSets&&(r+="v"),e.sticky&&(r+="y"),r}}function Vo(){if(No)return To;No=1;var t,e,r=T(),n=St(),o=Lo(),i=Ro(),u=function(){if(Io)return Oo;Io=1;var t=j(),e=b().RegExp,r=t((function(){var t=e("a","y");return t.lastIndex=2,null!==t.exec("abcd")})),n=r||t((function(){return!e("a","y").sticky})),o=r||t((function(){var t=e("^r","gy");return t.lastIndex=2,null!==t.exec("str")}));return Oo={BROKEN_CARET:o,MISSED_STICKY:n,UNSUPPORTED_Y:r}}(),a=pe(),c=$n(),s=tr().get,f=function(){if(jo)return xo;jo=1;var t=j(),e=b().RegExp;return xo=t((function(){var t=e(".","s");return!(t.dotAll&&t.test("\n")&&"s"===t.flags)}))}(),l=function(){if(Po)return Eo;Po=1;var t=j(),e=b().RegExp;return Eo=t((function(){var t=e("(?b)","g");return"b"!==t.exec("b").groups.a||"bc"!=="b".replace(t,"$c")}))}(),p=a("native-string-replace",String.prototype.replace),h=RegExp.prototype.exec,d=h,v=n("".charAt),g=n("".indexOf),y=n("".replace),m=n("".slice),k=(e=/b*/g,r(h,t=/a/,"a"),r(h,e,"a"),0!==t.lastIndex||0!==e.lastIndex),S=u.BROKEN_CARET,C=void 0!==/()??/.exec("")[1];return(k||C||S||f||l)&&(d=function(t){var e,n,u,a,f,l,b,w=this,O=s(w),I=o(t),x=O.raw;if(x)return x.lastIndex=w.lastIndex,e=r(d,x,I),w.lastIndex=x.lastIndex,e;var j=O.groups,E=S&&w.sticky,P=r(i,w),T=w.source,N=0,A=I;if(E&&(P=y(P,"y",""),-1===g(P,"g")&&(P+="g"),A=m(I,w.lastIndex),w.lastIndex>0&&(!w.multiline||w.multiline&&"\n"!==v(I,w.lastIndex-1))&&(T="(?: "+T+")",A=" "+A,N++),n=new RegExp("^(?:"+T+")",P)),C&&(n=new RegExp("^"+T+"$(?!\\s)",P)),k&&(u=w.lastIndex),a=r(h,E?n:w,A),E?a?(a.input=m(a.input,N),a[0]=m(a[0],N),a.index=w.lastIndex,w.lastIndex+=a[0].length):w.lastIndex=0:k&&a&&(w.lastIndex=w.global?a.index+a[0].length:u),C&&a&&a.length>1&&r(p,a[0],n,(function(){for(f=1;f1?arguments[1]:void 0)}})}();var Xo,Qo,Zo,ti,ei,ri,ni,oi,ii,ui,ai,ci,si,fi={};function li(){if(ti)return Zo;ti=1,Mo();var t=T(),e=rr(),r=Vo(),n=j(),o=ge(),i=_e(),u=o("species"),a=RegExp.prototype;return Zo=function(c,s,f,l){var p=o(c),h=!n((function(){var t={};return t[p]=function(){return 7},7!==""[c](t)})),d=h&&!n((function(){var t=!1,e=/a/;return"split"===c&&((e={}).constructor={},e.constructor[u]=function(){return e},e.flags="",e[p]=/./[p]),e.exec=function(){return t=!0,null},e[p](""),!t}));if(!h||!d||f){var v=/./[p],g=s(p,""[c],(function(e,n,o,i,u){var c=n.exec;return c===r||c===a.exec?h&&!u?{done:!0,value:t(v,n,o,i)}:{done:!0,value:t(e,o,n,i)}:{done:!1}}));e(String.prototype,c,g[0]),e(a,p,g[1])}l&&i(a[p],"sham",!0)}}function pi(){if(oi)return ni;oi=1;var t=function(){if(ri)return ei;ri=1;var t=St(),e=Sr(),r=Lo(),n=It(),o=t("".charAt),i=t("".charCodeAt),u=t("".slice),a=function(t){return function(a,c){var s,f,l=r(n(a)),p=e(c),h=l.length;return p<0||p>=h?t?"":void 0:(s=i(l,p))<55296||s>56319||p+1===h||(f=i(l,p+1))<56320||f>57343?t?o(l,p):s:t?u(l,p,p+2):f-56320+(s-55296<<10)+65536}};return ei={codeAt:a(!1),charAt:a(!0)}}().charAt;return ni=function(e,r,n){return r+(n?t(e,r).length:1)}}function hi(){if(ui)return ii;ui=1;var t=St(),e=he(),r=Math.floor,n=t("".charAt),o=t("".replace),i=t("".slice),u=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,a=/\$([$&'`]|\d{1,2})/g;return ii=function(t,c,s,f,l,p){var h=s+t.length,d=f.length,v=a;return void 0!==l&&(l=e(l),v=u),o(p,v,(function(e,o){var u;switch(n(o,0)){case"$":return"$";case"&":return t;case"`":return i(c,0,s);case"'":return i(c,h);case"<":u=l[i(o,1,-1)];break;default:var a=+o;if(0===a)return e;if(a>d){var p=r(a/10);return 0===p?e:p<=d?void 0===f[p-1]?n(o,1):f[p-1]+n(o,1):e}u=f[a-1]}return void 0===u?"":u}))}}function di(){if(ci)return ai;ci=1;var t=T(),e=Ne(),r=jt(),n=Ct(),o=Vo(),i=TypeError;return ai=function(u,a){var c=u.exec;if(r(c)){var s=t(c,u,a);return null!==s&&e(s),s}if("RegExp"===n(u))return t(o,u,a);throw new i("RegExp#exec called on incompatible receiver")}}!function(){if(si)return fi;si=1;var t=function(){if(Qo)return Xo;Qo=1;var t=P(),e=Function.prototype,r=e.apply,n=e.call;return Xo="object"==typeof Reflect&&Reflect.apply||(t?n.bind(r):function(){return n.apply(r,arguments)}),Xo}(),e=T(),r=St(),n=li(),o=j(),i=Ne(),u=jt(),a=Ot(),c=Sr(),s=wr(),f=Lo(),l=It(),p=pi(),h=Mt(),d=hi(),v=di(),g=ge()("replace"),b=Math.max,y=Math.min,m=r([].concat),k=r([].push),S=r("".indexOf),C=r("".slice),w="$0"==="a".replace(/./,"$0"),O=!!/./[g]&&""===/./[g]("a","$0");n("replace",(function(r,n,o){var w=O?"$":"$0";return[function(t,r){var o=l(this),i=a(t)?void 0:h(t,g);return i?e(i,t,o,r):e(n,f(o),t,r)},function(e,r){var a=i(this),l=f(e);if("string"==typeof r&&-1===S(r,w)&&-1===S(r,"$<")){var h=o(n,a,l,r);if(h.done)return h.value}var g=u(r);g||(r=f(r));var O,I=a.global;I&&(O=a.unicode,a.lastIndex=0);for(var x,j=[];null!==(x=v(a,l))&&(k(j,x),I);){""===f(x[0])&&(a.lastIndex=p(l,s(a.lastIndex),O))}for(var E,P="",T=0,N=0;N=T&&(P+=C(l,T,L)+A,T=L+_.length)}return P+C(l,T)}]}),!!o((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$")}))||!w||O)}();var vi,gi,bi,yi={};function mi(){return gi?vi:(gi=1,vi=Object.is||function(t,e){return t===e?0!==t||1/t==1/e:t!=t&&e!=e})}!function(){if(bi)return yi;bi=1;var t=T(),e=li(),r=Ne(),n=Ot(),o=It(),i=mi(),u=Lo(),a=Mt(),c=di();e("search",(function(e,s,f){return[function(r){var i=o(this),c=n(r)?void 0:a(r,e);return c?t(c,r,i):new RegExp(r)[e](u(i))},function(t){var e=r(this),n=u(t),o=f(s,e,n);if(o.done)return o.value;var a=e.lastIndex;i(a,0)||(e.lastIndex=0);var l=c(e,n);return i(e.lastIndex,a)||(e.lastIndex=a),null===l?-1:l.index}]}))}();var ki,Si,Ci,wi,Oi,Ii,xi,ji={};!function(){if(xi)return ji;xi=1;var t=b(),e=Si?ki:(Si=1,ki={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}),r=function(){if(wi)return Ci;wi=1;var t=me()("span").classList,e=t&&t.constructor&&t.constructor.prototype;return Ci=e===Object.prototype?void 0:e}(),n=function(){if(Ii)return Oi;Ii=1;var t=xn().forEach,e=Kn()("forEach");return Oi=e?[].forEach:function(e){return t(this,e,arguments.length>1?arguments[1]:void 0)},Oi}(),o=_e(),i=function(t){if(t&&t.forEach!==n)try{o(t,"forEach",n)}catch(e){t.forEach=n}};for(var u in e)e[u]&&i(t[u]&&t[u].prototype);i(r)}();var Ei=t.fn.bootstrapTable.utils,Pi={cookieIds:{sortOrder:"bs.table.sortOrder",sortName:"bs.table.sortName",sortPriority:"bs.table.sortPriority",pageNumber:"bs.table.pageNumber",pageList:"bs.table.pageList",hiddenColumns:"bs.table.hiddenColumns",columns:"bs.table.columns",cardView:"bs.table.cardView",customView:"bs.table.customView",searchText:"bs.table.searchText",reorderColumns:"bs.table.reorderColumns",filterControl:"bs.table.filterControl",filterBy:"bs.table.filterBy"},getCurrentHeader:function(t){return t.options.height?t.$tableHeader:t.$header},getCurrentSearchControls:function(t){return t.options.height?"table select, table input":"select, input"},isCookieSupportedByBrowser:function(){return navigator.cookieEnabled},isCookieEnabled:function(t,e){return"bs.table.columns"===e?t.options.cookiesEnabled.includes("bs.table.hiddenColumns"):t.options.cookiesEnabled.includes(e)},setCookie:function(t,e,r){if(t.options.cookie&&Pi.isCookieEnabled(t,e))return t._storage.setItem("".concat(t.options.cookieIdTable,".").concat(e),r)},getCookie:function(t,e){return e&&Pi.isCookieEnabled(t,e)?t._storage.getItem("".concat(t.options.cookieIdTable,".").concat(e)):null},deleteCookie:function(t,e){return t._storage.removeItem("".concat(t.options.cookieIdTable,".").concat(e))},calculateExpiration:function(t){var e=t.replace(/[0-9]*/,"");switch(t=t.replace(/[A-Za-z]{1,2}/,""),e.toLowerCase()){case"s":t=+t;break;case"mi":t*=60;break;case"h":t=60*t*60;break;case"d":t=24*t*60*60;break;case"m":t=30*t*24*60*60;break;case"y":t=365*t*24*60*60;break;default:t=void 0}if(!t)return"";var r=new Date;return r.setTime(r.getTime()+1e3*t),r.toGMTString()},initCookieFilters:function(e){setTimeout((function(){var r=JSON.parse(Pi.getCookie(e,Pi.cookieIds.filterControl));if(!e._filterControlValuesLoaded&&r){var n={},i=Pi.getCurrentHeader(e),u=Pi.getCurrentSearchControls(e),a=i;e.options.filterControlContainer&&(a=t("".concat(e.options.filterControlContainer))),a.find(u).each((function(){var i=t(this).closest("[data-field]").data("field");!function(t,r){r.forEach((function(r){var i=t.value.toString(),u=r.text;if(""!==u&&("radio"!==t.type||i===u))if("INPUT"===t.tagName&&"radio"===t.type&&i===u)t.checked=!0,n[r.field]=u;else if("INPUT"===t.tagName)t.value=u,n[r.field]=u;else if("SELECT"===t.tagName&&e.options.filterControlContainer)t.value=u,n[r.field]=u;else if(""!==u&&"SELECT"===t.tagName){n[r.field]=u;var a,c=o(t);try{for(c.s();!(a=c.n()).done;){var s=a.value;if(s.value===u)return void(s.selected=!0)}}catch(t){c.e(t)}finally{c.f()}var f=document.createElement("option");f.value=u,f.text=u,t.add(f,t[1]),t.selectedIndex=1}}))}(this,r.filter((function(t){return t.field===i})))})),e.initColumnSearch(n),e._filterControlValuesLoaded=!0,e.initServer()}}),250)}};Object.assign(t.fn.bootstrapTable.defaults,{cookie:!1,cookieExpire:"2h",cookiePath:null,cookieDomain:null,cookieSecure:null,cookieSameSite:"Lax",cookieIdTable:"",cookiesEnabled:["bs.table.sortOrder","bs.table.sortName","bs.table.sortPriority","bs.table.pageNumber","bs.table.pageList","bs.table.hiddenColumns","bs.table.searchText","bs.table.filterControl","bs.table.filterBy","bs.table.reorderColumns","bs.table.cardView","bs.table.customView"],cookieStorage:"cookieStorage",cookieCustomStorageGet:null,cookieCustomStorageSet:null,cookieCustomStorageDelete:null,_filterControls:[],_filterControlValuesLoaded:!1,_storage:{setItem:void 0,getItem:void 0,removeItem:void 0}}),t.fn.bootstrapTable.methods.push("getCookies"),t.fn.bootstrapTable.methods.push("deleteCookie"),Object.assign(t.fn.bootstrapTable.utils,{setCookie:Pi.setCookie,getCookie:Pi.getCookie}),t.BootstrapTable=function(t){function e(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),r(this,e,arguments)}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&c(t,e)}(e,t),n(e,[{key:"init",value:function(){var t=this;if(this.options.cookie){if("cookieStorage"===this.options.cookieStorage&&!Pi.isCookieSupportedByBrowser())throw new Error("Cookies are not enabled in this browser.");this.configureStorage();var r=Pi.getCookie(this,Pi.cookieIds.filterBy);if("boolean"==typeof r&&!r)throw new Error("The cookie value of filterBy must be a json!");var n={};try{n=JSON.parse(r)}catch(t){throw console.error(t),new Error("Could not parse the json of the filterBy cookie!")}this.filterColumns=n||{},this._filterControls=[],this._filterControlValuesLoaded=!1,this.options.cookiesEnabled="string"==typeof this.options.cookiesEnabled?this.options.cookiesEnabled.replace("[","").replace("]","").replace(/'/g,"").replace(/ /g,"").split(","):this.options.cookiesEnabled,this.options.filterControl&&this.$el.on("column-search.bs.table",(function(e,r,n){for(var o=!0,i=0;i1)||arguments[1]]),this.options.cookie&&(this.options.search&&Pi.setCookie(this,Pi.cookieIds.searchText,this.searchText),Pi.setCookie(this,Pi.cookieIds.pageNumber,this.options.pageNumber))}},{key:"initHeader",value:function(){this.options.reorderableColumns&&this.options.cookie&&(this.columnsSortOrder=JSON.parse(Pi.getCookie(this,Pi.cookieIds.reorderColumns)));for(var t=arguments.length,r=new Array(t),n=0;n (http://wenzhixin.net.cn/) + * @license MIT + */ + +!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(require("jquery")):"function"==typeof define&&define.amd?define(["jquery"],n):n((t="undefined"!=typeof globalThis?globalThis:t||self).jQuery)}(this,(function(t){"use strict";var n,r,o="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},e={};function a(){if(r)return n;r=1;var t=function(t){return t&&t.Math===Math&&t};return n=t("object"==typeof globalThis&&globalThis)||t("object"==typeof window&&window)||t("object"==typeof self&&self)||t("object"==typeof o&&o)||t("object"==typeof n&&n)||function(){return this}()||Function("return this")()}var i,u,c,f,l,s,m,g,d={};function h(){return u?i:(u=1,i=function(t){try{return!!t()}catch(t){return!0}})}function p(){if(f)return c;f=1;var t=h();return c=!t((function(){return 7!==Object.defineProperty({},1,{get:function(){return 7}})[1]}))}function S(){if(s)return l;s=1;var t=h();return l=!t((function(){var t=function(){}.bind();return"function"!=typeof t||t.hasOwnProperty("prototype")}))}function w(){if(g)return m;g=1;var t=S(),n=Function.prototype.call;return m=t?n.bind(n):function(){return n.apply(n,arguments)},m}var P,T,b,v,C,R,A,x,y,O,k,F,M,j,D,N,E,H,z,L,B,U,V,G,J,Z,I,K,q,W,Y,_,X,Q,$,tt,nt,rt,ot,et,at,it={};function ut(){if(P)return it;P=1;var t={}.propertyIsEnumerable,n=Object.getOwnPropertyDescriptor,r=n&&!t.call({1:2},1);return it.f=r?function(t){var r=n(this,t);return!!r&&r.enumerable}:t,it}function ct(){return b?T:(b=1,T=function(t,n){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:n}})}function ft(){if(C)return v;C=1;var t=S(),n=Function.prototype,r=n.call,o=t&&n.bind.bind(r,r);return v=t?o:function(t){return function(){return r.apply(t,arguments)}},v}function lt(){if(A)return R;A=1;var t=ft(),n=t({}.toString),r=t("".slice);return R=function(t){return r(n(t),8,-1)}}function st(){if(y)return x;y=1;var t=ft(),n=h(),r=lt(),o=Object,e=t("".split);return x=n((function(){return!o("z").propertyIsEnumerable(0)}))?function(t){return"String"===r(t)?e(t,""):o(t)}:o}function mt(){return k?O:(k=1,O=function(t){return null==t})}function gt(){if(M)return F;M=1;var t=mt(),n=TypeError;return F=function(r){if(t(r))throw new n("Can't call method on "+r);return r}}function dt(){if(D)return j;D=1;var t=st(),n=gt();return j=function(r){return t(n(r))}}function ht(){if(E)return N;E=1;var t="object"==typeof document&&document.all;return N=void 0===t&&void 0!==t?function(n){return"function"==typeof n||n===t}:function(t){return"function"==typeof t}}function pt(){if(z)return H;z=1;var t=ht();return H=function(n){return"object"==typeof n?null!==n:t(n)}}function St(){if(B)return L;B=1;var t=a(),n=ht();return L=function(r,o){return arguments.length<2?(e=t[r],n(e)?e:void 0):t[r]&&t[r][o];var e},L}function wt(){if(I)return Z;I=1;var t,n,r=a(),o=function(){if(J)return G;J=1;var t=a().navigator,n=t&&t.userAgent;return G=n?String(n):""}(),e=r.process,i=r.Deno,u=e&&e.versions||i&&i.version,c=u&&u.v8;return c&&(n=(t=c.split("."))[0]>0&&t[0]<4?1:+(t[0]+t[1])),!n&&o&&(!(t=o.match(/Edge\/(\d+)/))||t[1]>=74)&&(t=o.match(/Chrome\/(\d+)/))&&(n=+t[1]),Z=n}function Pt(){if(q)return K;q=1;var t=wt(),n=h(),r=a().String;return K=!!Object.getOwnPropertySymbols&&!n((function(){var n=Symbol("symbol detection");return!r(n)||!(Object(n)instanceof Symbol)||!Symbol.sham&&t&&t<41}))}function Tt(){if(Y)return W;Y=1;var t=Pt();return W=t&&!Symbol.sham&&"symbol"==typeof Symbol.iterator}function bt(){if(X)return _;X=1;var t=St(),n=ht(),r=function(){if(V)return U;V=1;var t=ft();return U=t({}.isPrototypeOf)}(),o=Tt(),e=Object;return _=o?function(t){return"symbol"==typeof t}:function(o){var a=t("Symbol");return n(a)&&r(a.prototype,e(o))}}function vt(){if($)return Q;$=1;var t=String;return Q=function(n){try{return t(n)}catch(t){return"Object"}}}function Ct(){if(nt)return tt;nt=1;var t=ht(),n=vt(),r=TypeError;return tt=function(o){if(t(o))return o;throw new r(n(o)+" is not a function")}}function Rt(){if(ot)return rt;ot=1;var t=Ct(),n=mt();return rt=function(r,o){var e=r[o];return n(e)?void 0:t(e)}}function At(){if(at)return et;at=1;var t=w(),n=ht(),r=pt(),o=TypeError;return et=function(e,a){var i,u;if("string"===a&&n(i=e.toString)&&!r(u=t(i,e)))return u;if(n(i=e.valueOf)&&!r(u=t(i,e)))return u;if("string"!==a&&n(i=e.toString)&&!r(u=t(i,e)))return u;throw new o("Can't convert object to primitive value")}}var xt,yt,Ot,kt,Ft,Mt,jt,Dt,Nt,Et,Ht,zt,Lt,Bt,Ut,Vt,Gt,Jt,Zt,It,Kt,qt,Wt,Yt,_t={exports:{}};function Xt(){if(kt)return Ot;kt=1;var t=a(),n=Object.defineProperty;return Ot=function(r,o){try{n(t,r,{value:o,configurable:!0,writable:!0})}catch(n){t[r]=o}return o}}function Qt(){if(Ft)return _t.exports;Ft=1;var t=yt?xt:(yt=1,xt=!1),n=a(),r=Xt(),o="__core-js_shared__",e=_t.exports=n[o]||r(o,{});return(e.versions||(e.versions=[])).push({version:"3.39.0",mode:t?"pure":"global",copyright:"© 2014-2024 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.39.0/LICENSE",source:"https://github.com/zloirock/core-js"}),_t.exports}function $t(){if(jt)return Mt;jt=1;var t=Qt();return Mt=function(n,r){return t[n]||(t[n]=r||{})}}function tn(){if(Nt)return Dt;Nt=1;var t=gt(),n=Object;return Dt=function(r){return n(t(r))}}function nn(){if(Ht)return Et;Ht=1;var t=ft(),n=tn(),r=t({}.hasOwnProperty);return Et=Object.hasOwn||function(t,o){return r(n(t),o)}}function rn(){if(Lt)return zt;Lt=1;var t=ft(),n=0,r=Math.random(),o=t(1..toString);return zt=function(t){return"Symbol("+(void 0===t?"":t)+")_"+o(++n+r,36)}}function on(){if(Ut)return Bt;Ut=1;var t=a(),n=$t(),r=nn(),o=rn(),e=Pt(),i=Tt(),u=t.Symbol,c=n("wks"),f=i?u.for||u:u&&u.withoutSetter||o;return Bt=function(t){return r(c,t)||(c[t]=e&&r(u,t)?u[t]:f("Symbol."+t)),c[t]}}function en(){if(Gt)return Vt;Gt=1;var t=w(),n=pt(),r=bt(),o=Rt(),e=At(),a=on(),i=TypeError,u=a("toPrimitive");return Vt=function(a,c){if(!n(a)||r(a))return a;var f,l=o(a,u);if(l){if(void 0===c&&(c="default"),f=t(l,a,c),!n(f)||r(f))return f;throw new i("Can't convert object to primitive value")}return void 0===c&&(c="number"),e(a,c)}}function an(){if(Zt)return Jt;Zt=1;var t=en(),n=bt();return Jt=function(r){var o=t(r,"string");return n(o)?o:o+""}}function un(){if(Wt)return qt;Wt=1;var t=p(),n=h(),r=function(){if(Kt)return It;Kt=1;var t=a(),n=pt(),r=t.document,o=n(r)&&n(r.createElement);return It=function(t){return o?r.createElement(t):{}}}();return qt=!t&&!n((function(){return 7!==Object.defineProperty(r("div"),"a",{get:function(){return 7}}).a}))}function cn(){if(Yt)return d;Yt=1;var t=p(),n=w(),r=ut(),o=ct(),e=dt(),a=an(),i=nn(),u=un(),c=Object.getOwnPropertyDescriptor;return d.f=t?c:function(t,f){if(t=e(t),f=a(f),u)try{return c(t,f)}catch(t){}if(i(t,f))return o(!n(r.f,t,f),t[f])},d}var fn,ln,sn,mn,gn,dn,hn,pn={};function Sn(){if(mn)return sn;mn=1;var t=pt(),n=String,r=TypeError;return sn=function(o){if(t(o))return o;throw new r(n(o)+" is not an object")}}function wn(){if(gn)return pn;gn=1;var t=p(),n=un(),r=function(){if(ln)return fn;ln=1;var t=p(),n=h();return fn=t&&n((function(){return 42!==Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype}))}(),o=Sn(),e=an(),a=TypeError,i=Object.defineProperty,u=Object.getOwnPropertyDescriptor,c="enumerable",f="configurable",l="writable";return pn.f=t?r?function(t,n,r){if(o(t),n=e(n),o(r),"function"==typeof t&&"prototype"===n&&"value"in r&&l in r&&!r[l]){var a=u(t,n);a&&a[l]&&(t[n]=r.value,r={configurable:f in r?r[f]:a[f],enumerable:c in r?r[c]:a[c],writable:!1})}return i(t,n,r)}:i:function(t,r,u){if(o(t),r=e(r),o(u),n)try{return i(t,r,u)}catch(t){}if("get"in u||"set"in u)throw new a("Accessors not supported");return"value"in u&&(t[r]=u.value),t},pn}function Pn(){if(hn)return dn;hn=1;var t=p(),n=wn(),r=ct();return dn=t?function(t,o,e){return n.f(t,o,r(1,e))}:function(t,n,r){return t[n]=r,t}}var Tn,bn,vn,Cn,Rn,An,xn,yn,On,kn,Fn,Mn,jn,Dn,Nn,En={exports:{}};function Hn(){if(Cn)return vn;Cn=1;var t=ft(),n=ht(),r=Qt(),o=t(Function.toString);return n(r.inspectSource)||(r.inspectSource=function(t){return o(t)}),vn=r.inspectSource}function zn(){if(yn)return xn;yn=1;var t=$t(),n=rn(),r=t("keys");return xn=function(t){return r[t]||(r[t]=n(t))}}function Ln(){return kn?On:(kn=1,On={})}function Bn(){if(Mn)return Fn;Mn=1;var t,n,r,o=function(){if(An)return Rn;An=1;var t=a(),n=ht(),r=t.WeakMap;return Rn=n(r)&&/native code/.test(String(r))}(),e=a(),i=pt(),u=Pn(),c=nn(),f=Qt(),l=zn(),s=Ln(),m="Object already initialized",g=e.TypeError,d=e.WeakMap;if(o||f.state){var h=f.state||(f.state=new d);h.get=h.get,h.has=h.has,h.set=h.set,t=function(t,n){if(h.has(t))throw new g(m);return n.facade=t,h.set(t,n),n},n=function(t){return h.get(t)||{}},r=function(t){return h.has(t)}}else{var p=l("state");s[p]=!0,t=function(t,n){if(c(t,p))throw new g(m);return n.facade=t,u(t,p,n),n},n=function(t){return c(t,p)?t[p]:{}},r=function(t){return c(t,p)}}return Fn={set:t,get:n,has:r,enforce:function(o){return r(o)?n(o):t(o,{})},getterFor:function(t){return function(r){var o;if(!i(r)||(o=n(r)).type!==t)throw new g("Incompatible receiver, "+t+" required");return o}}}}function Un(){if(jn)return En.exports;jn=1;var t=ft(),n=h(),r=ht(),o=nn(),e=p(),a=function(){if(bn)return Tn;bn=1;var t=p(),n=nn(),r=Function.prototype,o=t&&Object.getOwnPropertyDescriptor,e=n(r,"name"),a=e&&"something"===function(){}.name,i=e&&(!t||t&&o(r,"name").configurable);return Tn={EXISTS:e,PROPER:a,CONFIGURABLE:i}}().CONFIGURABLE,i=Hn(),u=Bn(),c=u.enforce,f=u.get,l=String,s=Object.defineProperty,m=t("".slice),g=t("".replace),d=t([].join),S=e&&!n((function(){return 8!==s((function(){}),"length",{value:8}).length})),w=String(String).split("String"),P=En.exports=function(t,n,r){"Symbol("===m(l(n),0,7)&&(n="["+g(l(n),/^Symbol\(([^)]*)\).*$/,"$1")+"]"),r&&r.getter&&(n="get "+n),r&&r.setter&&(n="set "+n),(!o(t,"name")||a&&t.name!==n)&&(e?s(t,"name",{value:n,configurable:!0}):t.name=n),S&&r&&o(r,"arity")&&t.length!==r.arity&&s(t,"length",{value:r.arity});try{r&&o(r,"constructor")&&r.constructor?e&&s(t,"prototype",{writable:!1}):t.prototype&&(t.prototype=void 0)}catch(t){}var i=c(t);return o(i,"source")||(i.source=d(w,"string"==typeof n?n:"")),t};return Function.prototype.toString=P((function(){return r(this)&&f(this).source||i(this)}),"toString"),En.exports}function Vn(){if(Nn)return Dn;Nn=1;var t=ht(),n=wn(),r=Un(),o=Xt();return Dn=function(e,a,i,u){u||(u={});var c=u.enumerable,f=void 0!==u.name?u.name:a;if(t(i)&&r(i,f,u),u.global)c?e[a]=i:o(a,i);else{try{u.unsafe?e[a]&&(c=!0):delete e[a]}catch(t){}c?e[a]=i:n.f(e,a,{value:i,enumerable:!1,configurable:!u.nonConfigurable,writable:!u.nonWritable})}return e}}var Gn,Jn,Zn,In,Kn,qn,Wn,Yn,_n,Xn,Qn,$n,tr,nr,rr,or,er,ar={};function ir(){if(In)return Zn;In=1;var t=function(){if(Jn)return Gn;Jn=1;var t=Math.ceil,n=Math.floor;return Gn=Math.trunc||function(r){var o=+r;return(o>0?n:t)(o)}}();return Zn=function(n){var r=+n;return r!=r||0===r?0:t(r)}}function ur(){if(qn)return Kn;qn=1;var t=ir(),n=Math.max,r=Math.min;return Kn=function(o,e){var a=t(o);return a<0?n(a+e,0):r(a,e)}}function cr(){if(Yn)return Wn;Yn=1;var t=ir(),n=Math.min;return Wn=function(r){var o=t(r);return o>0?n(o,9007199254740991):0}}function fr(){if(Xn)return _n;Xn=1;var t=cr();return _n=function(n){return t(n.length)}}function lr(){if(nr)return tr;nr=1;var t=ft(),n=nn(),r=dt(),o=function(){if($n)return Qn;$n=1;var t=dt(),n=ur(),r=fr(),o=function(o){return function(e,a,i){var u=t(e),c=r(u);if(0===c)return!o&&-1;var f,l=n(i,c);if(o&&a!=a){for(;c>l;)if((f=u[l++])!=f)return!0}else for(;c>l;l++)if((o||l in u)&&u[l]===a)return o||l||0;return!o&&-1}};return Qn={includes:o(!0),indexOf:o(!1)}}().indexOf,e=Ln(),a=t([].push);return tr=function(t,i){var u,c=r(t),f=0,l=[];for(u in c)!n(e,u)&&n(c,u)&&a(l,u);for(;i.length>f;)n(c,u=i[f++])&&(~o(l,u)||a(l,u));return l}}function sr(){return or?rr:(or=1,rr=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"])}var mr,gr,dr,hr,pr,Sr,wr,Pr,Tr,br,vr,Cr,Rr,Ar,xr,yr,Or,kr,Fr,Mr,jr,Dr,Nr,Er,Hr,zr,Lr,Br,Ur={};function Vr(){return mr||(mr=1,Ur.f=Object.getOwnPropertySymbols),Ur}function Gr(){if(dr)return gr;dr=1;var t=St(),n=ft(),r=function(){if(er)return ar;er=1;var t=lr(),n=sr().concat("length","prototype");return ar.f=Object.getOwnPropertyNames||function(r){return t(r,n)},ar}(),o=Vr(),e=Sn(),a=n([].concat);return gr=t("Reflect","ownKeys")||function(t){var n=r.f(e(t)),i=o.f;return i?a(n,i(t)):n}}function Jr(){if(pr)return hr;pr=1;var t=nn(),n=Gr(),r=cn(),o=wn();return hr=function(e,a,i){for(var u=n(a),c=o.f,f=r.f,l=0;l9007199254740991)throw t("Maximum allowed index exceeded");return n}}function qr(){if(xr)return Ar;xr=1;var t=p(),n=wn(),r=ct();return Ar=function(o,e,a){t?n.f(o,e,r(0,a)):o[e]=a}}function Wr(){if(Fr)return kr;Fr=1;var t=function(){if(Or)return yr;Or=1;var t={};return t[on()("toStringTag")]="z",yr="[object z]"===String(t)}(),n=ht(),r=lt(),o=on()("toStringTag"),e=Object,a="Arguments"===r(function(){return arguments}());return kr=t?r:function(t){var i,u,c;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(u=function(t,n){try{return t[n]}catch(t){}}(i=e(t),o))?u:a?r(i):"Object"===(c=r(i))&&n(i.callee)?"Arguments":c}}function Yr(){if(jr)return Mr;jr=1;var t=ft(),n=h(),r=ht(),o=Wr(),e=St(),a=Hn(),i=function(){},u=e("Reflect","construct"),c=/^\s*(?:class|function)\b/,f=t(c.exec),l=!c.test(i),s=function(t){if(!r(t))return!1;try{return u(i,[],t),!0}catch(t){return!1}},m=function(t){if(!r(t))return!1;switch(o(t)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return l||!!f(c,a(t))}catch(t){return!0}};return m.sham=!0,Mr=!u||n((function(){var t;return s(s.call)||!s(Object)||!s((function(){t=!0}))||t}))?m:s}function _r(){if(Nr)return Dr;Nr=1;var t=Ir(),n=Yr(),r=pt(),o=on()("species"),e=Array;return Dr=function(a){var i;return t(a)&&(i=a.constructor,(n(i)&&(i===e||t(i.prototype))||r(i)&&null===(i=i[o]))&&(i=void 0)),void 0===i?e:i}}function Xr(){if(Hr)return Er;Hr=1;var t=_r();return Er=function(n,r){return new(t(n))(0===r?0:r)}}function Qr(){if(Lr)return zr;Lr=1;var t=h(),n=on(),r=wt(),o=n("species");return zr=function(n){return r>=51||!t((function(){var t=[];return(t.constructor={})[o]=function(){return{foo:1}},1!==t[n](Boolean).foo}))}}!function(){if(Br)return e;Br=1;var t=Zr(),n=h(),r=Ir(),o=pt(),a=tn(),i=fr(),u=Kr(),c=qr(),f=Xr(),l=Qr(),s=on(),m=wt(),g=s("isConcatSpreadable"),d=m>=51||!n((function(){var t=[];return t[g]=!1,t.concat()[0]!==t})),p=function(t){if(!o(t))return!1;var n=t[g];return void 0!==n?!!n:r(t)};t({target:"Array",proto:!0,arity:1,forced:!d||!l("concat")},{concat:function(t){var n,r,o,e,l,s=a(this),m=f(s,0),g=0;for(n=-1,o=arguments.length;nm;)for(var h,p=c(arguments[m++]),S=g?s(e(p),g(p)):e(p),w=S.length,P=0;w>P;)h=S[P++],t&&!r(d,p,h)||(f[h]=p[h]);return f}:f,no}();t({target:"Object",stat:!0,arity:2,forced:Object.assign!==n},{assign:n})}(),t.fn.bootstrapTable.locales["af-ZA"]=t.fn.bootstrapTable.locales.af={formatCopyRows:function(){return"Kopieer lyne"},formatPrint:function(){return"Druk uit"},formatLoadingMessage:function(){return"Laai tans"},formatRecordsPerPage:function(t){return"".concat(t," reëls per bladsy")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Wys ".concat(t," tot ").concat(n," van ").concat(r," lyne (gefiltreer vanaf ").concat(o," lyne)"):"Wys ".concat(t," tot ").concat(n," van ").concat(r," lyne")},formatSRPaginationPreText:function(){return"vorige bladsy"},formatSRPaginationPageText:function(t){return"na bladsy ".concat(t)},formatSRPaginationNextText:function(){return"volgende bladsy"},formatDetailPagination:function(t){return"".concat(t,"-reël vertoon")},formatClearSearch:function(){return"Duidelike soektog"},formatSearch:function(){return"Navorsing"},formatNoMatches:function(){return"Geen resultate nie"},formatPaginationSwitch:function(){return"Versteek/Wys paginasie"},formatPaginationSwitchDown:function(){return"Wys paginasie"},formatPaginationSwitchUp:function(){return"Versteek paginasie"},formatRefresh:function(){return"Verfris"},formatToggleOn:function(){return"Wys kaartaansig"},formatToggleOff:function(){return"Versteek kaartaansig"},formatColumns:function(){return"Kolomme"},formatColumnsToggleAll:function(){return"Wys alles"},formatFullscreen:function(){return"Volskerm"},formatAllRows:function(){return"Alles"},formatAutoRefresh:function(){return"Verfris outomaties"},formatExport:function(){return"Voer data uit"},formatJumpTo:function(){return"Gaan na"},formatAdvancedSearch:function(){return"Gevorderde soektog"},formatAdvancedCloseButton:function(){return"Maak"},formatFilterControlSwitch:function(){return"Versteek/Wys kontroles"},formatFilterControlSwitchHide:function(){return"Versteek kontroles"},formatFilterControlSwitchShow:function(){return"Wys kontroles"},formatToggleCustomViewOn:function(){return"Wys pasgemaakte aansig"},formatToggleCustomViewOff:function(){return"Versteek pasgemaakte aansig"},formatClearFilters:function(){return"Verwyder filters"},formatAddLevel:function(){return"Voeg 'n vlak by"},formatCancel:function(){return"Kanselleer"},formatColumn:function(){return"Kolom"},formatDeleteLevel:function(){return"Vee 'n vlak uit"},formatDuplicateAlertTitle:function(){return"Duplikaatinskrywings is gevind!"},formatDuplicateAlertDescription:function(){return"Verwyder of wysig asseblief duplikaatinskrywings"},formatMultipleSort:function(){return"Multi-sorteer"},formatOrder:function(){return"Bestelling"},formatSort:function(){return"Rangskik"},formatSortBy:function(){return"Sorteer volgens"},formatSortOrders:function(){return{asc:"Stygende",desc:"Dalende"}},formatThenBy:function(){return"Dan deur"}},Object.assign(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["af-ZA"]),t.fn.bootstrapTable.locales["ca-ES"]=t.fn.bootstrapTable.locales.ca={formatCopyRows:function(){return"Copia resultats"},formatPrint:function(){return"Imprimeix"},formatLoadingMessage:function(){return"Espereu, si us plau"},formatRecordsPerPage:function(t){return"".concat(t," resultats per pàgina")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Mostrant resultats ".concat(t," fins ").concat(n," - ").concat(r," resultats (filtrats d'un total de ").concat(o," resultats)"):"Mostrant resultats ".concat(t," fins ").concat(n," - ").concat(r," resultats en total")},formatSRPaginationPreText:function(){return"Pàgina anterior"},formatSRPaginationPageText:function(t){return"A la pàgina ".concat(t)},formatSRPaginationNextText:function(){return"Pàgina següent"},formatDetailPagination:function(t){return"Mostrant ".concat(t," resultats")},formatClearSearch:function(){return"Neteja cerca"},formatSearch:function(){return"Cerca"},formatNoMatches:function(){return"No s'han trobat resultats"},formatPaginationSwitch:function(){return"Amaga/Mostra paginació"},formatPaginationSwitchDown:function(){return"Mostra paginació"},formatPaginationSwitchUp:function(){return"Amaga paginació"},formatRefresh:function(){return"Refresca"},formatToggleOn:function(){return"Mostra vista de tarjeta"},formatToggleOff:function(){return"Amaga vista de tarjeta"},formatColumns:function(){return"Columnes"},formatColumnsToggleAll:function(){return"Alterna totes"},formatFullscreen:function(){return"Pantalla completa"},formatAllRows:function(){return"Tots"},formatAutoRefresh:function(){return"Auto Refresca"},formatExport:function(){return"Exporta dades"},formatJumpTo:function(){return"GO"},formatAdvancedSearch:function(){return"Cerca avançada"},formatAdvancedCloseButton:function(){return"Tanca"},formatFilterControlSwitch:function(){return"Mostra/Amaga controls"},formatFilterControlSwitchHide:function(){return"Mostra controls"},formatFilterControlSwitchShow:function(){return"Amaga controls"}},Object.assign(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["ca-ES"]),t.fn.bootstrapTable.locales["ar-SA"]=t.fn.bootstrapTable.locales.ar={formatCopyRows:function(){return"نسخ الصفوف"},formatPrint:function(){return"طباعة"},formatLoadingMessage:function(){return"جارٍ التحميل، يرجى الانتظار..."},formatRecordsPerPage:function(t){return"".concat(t," صف لكل صفحة")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"الظاهر ".concat(t," إلى ").concat(n," من ").concat(r," سجل ").concat(o," إجمالي الصفوف)"):"الظاهر ".concat(t," إلى ").concat(n," من ").concat(r," سجل")},formatSRPaginationPreText:function(){return"الصفحة السابقة"},formatSRPaginationPageText:function(t){return"إلى الصفحة ".concat(t)},formatSRPaginationNextText:function(){return"الصفحة التالية"},formatDetailPagination:function(t){return"عرض ".concat(t," أعمدة")},formatClearSearch:function(){return"مسح مربع البحث"},formatSearch:function(){return"بحث"},formatNoMatches:function(){return"لا توجد نتائج مطابقة للبحث"},formatPaginationSwitch:function(){return"إخفاء/إظهار ترقيم الصفحات"},formatPaginationSwitchDown:function(){return"إظهار ترقيم الصفحات"},formatPaginationSwitchUp:function(){return"إخفاء ترقيم الصفحات"},formatRefresh:function(){return"تحديث"},formatToggleOn:function(){return"إظهار كبطاقات"},formatToggleOff:function(){return"إلغاء البطاقات"},formatColumns:function(){return"أعمدة"},formatColumnsToggleAll:function(){return"تبديل الكل"},formatFullscreen:function(){return"الشاشة كاملة"},formatAllRows:function(){return"الكل"},formatAutoRefresh:function(){return"تحديث تلقائي"},formatExport:function(){return"تصدير البيانات"},formatJumpTo:function(){return"قفز"},formatAdvancedSearch:function(){return"بحث متقدم"},formatAdvancedCloseButton:function(){return"إغلاق"},formatFilterControlSwitch:function(){return"عرض/إخفاء عناصر التصفية"},formatFilterControlSwitchHide:function(){return"إخفاء عناصر التصفية"},formatFilterControlSwitchShow:function(){return"عرض عناصر التصفية"}},Object.assign(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["ar-SA"]),t.fn.bootstrapTable.locales["da-DK"]=t.fn.bootstrapTable.locales.da={formatCopyRows:function(){return"Copy Rows"},formatPrint:function(){return"Print"},formatLoadingMessage:function(){return"Indlæser, vent venligst"},formatRecordsPerPage:function(t){return"".concat(t," poster pr side")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Viser ".concat(t," til ").concat(n," af ").concat(r," række").concat(r>1?"r":""," (filtered from ").concat(o," total rows)"):"Viser ".concat(t," til ").concat(n," af ").concat(r," række").concat(r>1?"r":"")},formatSRPaginationPreText:function(){return"previous page"},formatSRPaginationPageText:function(t){return"to page ".concat(t)},formatSRPaginationNextText:function(){return"next page"},formatDetailPagination:function(t){return"Viser ".concat(t," række").concat(t>1?"r":"")},formatClearSearch:function(){return"Ryd filtre"},formatSearch:function(){return"Søg"},formatNoMatches:function(){return"Ingen poster fundet"},formatPaginationSwitch:function(){return"Skjul/vis nummerering"},formatPaginationSwitchDown:function(){return"Show pagination"},formatPaginationSwitchUp:function(){return"Hide pagination"},formatRefresh:function(){return"Opdater"},formatToggleOn:function(){return"Show card view"},formatToggleOff:function(){return"Hide card view"},formatColumns:function(){return"Kolonner"},formatColumnsToggleAll:function(){return"Toggle all"},formatFullscreen:function(){return"Fullscreen"},formatAllRows:function(){return"Alle"},formatAutoRefresh:function(){return"Auto Refresh"},formatExport:function(){return"Eksporter"},formatJumpTo:function(){return"GO"},formatAdvancedSearch:function(){return"Advanced search"},formatAdvancedCloseButton:function(){return"Close"},formatFilterControlSwitch:function(){return"Hide/Show controls"},formatFilterControlSwitchHide:function(){return"Hide controls"},formatFilterControlSwitchShow:function(){return"Show controls"}},Object.assign(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["da-DK"]),t.fn.bootstrapTable.locales["bg-BG"]=t.fn.bootstrapTable.locales.bg={formatCopyRows:function(){return"Копиране на редове"},formatPrint:function(){return"Печат"},formatLoadingMessage:function(){return"Зареждане, моля изчакайте"},formatRecordsPerPage:function(t){return"".concat(t," реда на страница")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Показани редове от ".concat(t," до ").concat(n," от ").concat(r," (филтрирани от общо ").concat(o,")"):"Показани редове от ".concat(t," до ").concat(n," от общо ").concat(r)},formatSRPaginationPreText:function(){return"предишна страница"},formatSRPaginationPageText:function(t){return"до страница ".concat(t)},formatSRPaginationNextText:function(){return"следваща страница"},formatDetailPagination:function(t){return"Показани ".concat(t," реда")},formatClearSearch:function(){return"Изчистване на търсенето"},formatSearch:function(){return"Търсене"},formatNoMatches:function(){return"Не са намерени съвпадащи записи"},formatPaginationSwitch:function(){return"Скриване/Показване на странициране"},formatPaginationSwitchDown:function(){return"Показване на странициране"},formatPaginationSwitchUp:function(){return"Скриване на странициране"},formatRefresh:function(){return"Обновяване"},formatToggleOn:function(){return"Показване на изглед карта"},formatToggleOff:function(){return"Скриване на изглед карта"},formatColumns:function(){return"Колони"},formatColumnsToggleAll:function(){return"Превключване на всички"},formatFullscreen:function(){return"Цял екран"},formatAllRows:function(){return"Всички"},formatAutoRefresh:function(){return"Автоматично обновяване"},formatExport:function(){return"Експорт на данни"},formatJumpTo:function(){return"ОТИДИ"},formatAdvancedSearch:function(){return"Разширено търсене"},formatAdvancedCloseButton:function(){return"Затваряне"},formatFilterControlSwitch:function(){return"Скрива/показва контроли"},formatFilterControlSwitchHide:function(){return"Скрива контроли"},formatFilterControlSwitchShow:function(){return"Показва контроли"}},Object.assign(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["bg-BG"]),t.fn.bootstrapTable.locales["de-DE"]=t.fn.bootstrapTable.locales.de={formatCopyRows:function(){return"Zeilen kopieren"},formatPrint:function(){return"Drucken"},formatLoadingMessage:function(){return"Lade, bitte warten"},formatRecordsPerPage:function(t){return"".concat(t," Zeilen pro Seite.")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Zeige Zeile ".concat(t," bis ").concat(n," von ").concat(r," Zeile").concat(r>1?"n":""," (Gefiltert von ").concat(o," Zeile").concat(o>1?"n":"",")"):"Zeige Zeile ".concat(t," bis ").concat(n," von ").concat(r," Zeile").concat(r>1?"n":"",".")},formatSRPaginationPreText:function(){return"Vorherige Seite"},formatSRPaginationPageText:function(t){return"Zu Seite ".concat(t)},formatSRPaginationNextText:function(){return"Nächste Seite"},formatDetailPagination:function(t){return"Zeige ".concat(t," Zeile").concat(t>1?"n":"",".")},formatClearSearch:function(){return"Lösche Filter"},formatSearch:function(){return"Suchen"},formatNoMatches:function(){return"Keine passenden Ergebnisse gefunden"},formatPaginationSwitch:function(){return"Verstecke/Zeige Nummerierung"},formatPaginationSwitchDown:function(){return"Zeige Nummerierung"},formatPaginationSwitchUp:function(){return"Verstecke Nummerierung"},formatRefresh:function(){return"Neu laden"},formatToggleOn:function(){return"Normale Ansicht"},formatToggleOff:function(){return"Kartenansicht"},formatColumns:function(){return"Spalten"},formatColumnsToggleAll:function(){return"Alle umschalten"},formatFullscreen:function(){return"Vollbild"},formatAllRows:function(){return"Alle"},formatAutoRefresh:function(){return"Automatisches Neuladen"},formatExport:function(){return"Datenexport"},formatJumpTo:function(){return"Springen"},formatAdvancedSearch:function(){return"Erweiterte Suche"},formatAdvancedCloseButton:function(){return"Schließen"},formatFilterControlSwitch:function(){return"Verstecke/Zeige Filter"},formatFilterControlSwitchHide:function(){return"Verstecke Filter"},formatFilterControlSwitchShow:function(){return"Zeige Filter"},formatAddLevel:function(){return"Ebene hinzufügen"},formatCancel:function(){return"Abbrechen"},formatColumn:function(){return"Spalte"},formatDeleteLevel:function(){return"Ebene entfernen"},formatDuplicateAlertTitle:function(){return"Doppelte Einträge gefunden!"},formatDuplicateAlertDescription:function(){return"Bitte doppelte Spalten entfenen oder ändern"},formatMultipleSort:function(){return"Mehrfachsortierung"},formatOrder:function(){return"Reihenfolge"},formatSort:function(){return"Sortieren"},formatSortBy:function(){return"Sortieren nach"},formatThenBy:function(){return"anschließend"},formatSortOrders:function(){return{asc:"Aufsteigend",desc:"Absteigend"}}},Object.assign(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["de-DE"]),t.fn.bootstrapTable.locales["el-GR"]=t.fn.bootstrapTable.locales.el={formatCopyRows:function(){return"Copy Rows"},formatPrint:function(){return"Print"},formatLoadingMessage:function(){return"Φορτώνει, παρακαλώ περιμένετε"},formatRecordsPerPage:function(t){return"".concat(t," αποτελέσματα ανά σελίδα")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Εμφανίζονται από την ".concat(t," ως την ").concat(n," από σύνολο ").concat(r," σειρών (filtered from ").concat(o," total rows)"):"Εμφανίζονται από την ".concat(t," ως την ").concat(n," από σύνολο ").concat(r," σειρών")},formatSRPaginationPreText:function(){return"previous page"},formatSRPaginationPageText:function(t){return"to page ".concat(t)},formatSRPaginationNextText:function(){return"next page"},formatDetailPagination:function(t){return"Showing ".concat(t," rows")},formatClearSearch:function(){return"Clear Search"},formatSearch:function(){return"Αναζητήστε"},formatNoMatches:function(){return"Δεν βρέθηκαν αποτελέσματα"},formatPaginationSwitch:function(){return"Hide/Show pagination"},formatPaginationSwitchDown:function(){return"Show pagination"},formatPaginationSwitchUp:function(){return"Hide pagination"},formatRefresh:function(){return"Refresh"},formatToggleOn:function(){return"Show card view"},formatToggleOff:function(){return"Hide card view"},formatColumns:function(){return"Columns"},formatColumnsToggleAll:function(){return"Toggle all"},formatFullscreen:function(){return"Fullscreen"},formatAllRows:function(){return"All"},formatAutoRefresh:function(){return"Auto Refresh"},formatExport:function(){return"Export data"},formatJumpTo:function(){return"GO"},formatAdvancedSearch:function(){return"Advanced search"},formatAdvancedCloseButton:function(){return"Close"},formatFilterControlSwitch:function(){return"Hide/Show controls"},formatFilterControlSwitchHide:function(){return"Hide controls"},formatFilterControlSwitchShow:function(){return"Show controls"}},Object.assign(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["el-GR"]),t.fn.bootstrapTable.locales["es-CR"]={formatCopyRows:function(){return"Copiar filas"},formatPrint:function(){return"Imprimir"},formatLoadingMessage:function(){return"Cargando, por favor espere"},formatRecordsPerPage:function(t){return"".concat(t," filas por página")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Mostrando ".concat(t," a ").concat(n," de ").concat(r," filas (filtrado de un total de ").concat(o," filas)"):"Mostrando ".concat(t," a ").concat(n," de ").concat(r," filas")},formatSRPaginationPreText:function(){return"página anterior"},formatSRPaginationPageText:function(t){return"ir a la página ".concat(t)},formatSRPaginationNextText:function(){return"página siguiente"},formatDetailPagination:function(t){return"Mostrando ".concat(t," filas")},formatClearSearch:function(){return"Limpiar búsqueda"},formatSearch:function(){return"Buscar"},formatNoMatches:function(){return"No se encontraron resultados"},formatPaginationSwitch:function(){return"Mostrar/ocultar paginación"},formatPaginationSwitchDown:function(){return"Mostrar paginación"},formatPaginationSwitchUp:function(){return"Ocultar paginación"},formatRefresh:function(){return"Actualizar"},formatToggleOn:function(){return"Mostrar vista en tarjetas"},formatToggleOff:function(){return"Ocultar vista en tarjetas"},formatColumns:function(){return"Columnas"},formatColumnsToggleAll:function(){return"Alternar todo"},formatFullscreen:function(){return"Pantalla completa"},formatAllRows:function(){return"Todas las filas"},formatAutoRefresh:function(){return"Actualización automática"},formatExport:function(){return"Exportar"},formatJumpTo:function(){return"Ver"},formatAdvancedSearch:function(){return"Búsqueda avanzada"},formatAdvancedCloseButton:function(){return"Cerrar"},formatFilterControlSwitch:function(){return"Mostrar/ocultar controles"},formatFilterControlSwitchHide:function(){return"Ocultar controles"},formatFilterControlSwitchShow:function(){return"Mostrar controles"}},Object.assign(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["es-CR"]),t.fn.bootstrapTable.locales["en-US"]=t.fn.bootstrapTable.locales.en={formatCopyRows:function(){return"Copy Rows"},formatPrint:function(){return"Print"},formatLoadingMessage:function(){return"Loading, please wait"},formatRecordsPerPage:function(t){return"".concat(t," rows per page")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Showing ".concat(t," to ").concat(n," of ").concat(r," rows (filtered from ").concat(o," total rows)"):"Showing ".concat(t," to ").concat(n," of ").concat(r," rows")},formatSRPaginationPreText:function(){return"previous page"},formatSRPaginationPageText:function(t){return"to page ".concat(t)},formatSRPaginationNextText:function(){return"next page"},formatDetailPagination:function(t){return"Showing ".concat(t," rows")},formatClearSearch:function(){return"Clear Search"},formatSearch:function(){return"Search"},formatNoMatches:function(){return"No matching records found"},formatPaginationSwitch:function(){return"Hide/Show pagination"},formatPaginationSwitchDown:function(){return"Show pagination"},formatPaginationSwitchUp:function(){return"Hide pagination"},formatRefresh:function(){return"Refresh"},formatToggleOn:function(){return"Show card view"},formatToggleOff:function(){return"Hide card view"},formatColumns:function(){return"Columns"},formatColumnsToggleAll:function(){return"Toggle all"},formatFullscreen:function(){return"Fullscreen"},formatAllRows:function(){return"All"},formatAutoRefresh:function(){return"Auto Refresh"},formatExport:function(){return"Export data"},formatJumpTo:function(){return"GO"},formatAdvancedSearch:function(){return"Advanced search"},formatAdvancedCloseButton:function(){return"Close"},formatFilterControlSwitch:function(){return"Hide/Show controls"},formatFilterControlSwitchHide:function(){return"Hide controls"},formatFilterControlSwitchShow:function(){return"Show controls"}},Object.assign(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["en-US"]),t.fn.bootstrapTable.locales["es-CL"]={formatCopyRows:function(){return"Copiar Filas"},formatPrint:function(){return"Imprimir"},formatLoadingMessage:function(){return"Cargando, espere por favor"},formatRecordsPerPage:function(t){return"".concat(t," filas por página")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Mostrando ".concat(t," a ").concat(n," de ").concat(r," filas (filtrado de ").concat(o," filas totales)"):"Mostrando ".concat(t," a ").concat(n," de ").concat(r," filas")},formatSRPaginationPreText:function(){return"página anterior"},formatSRPaginationPageText:function(t){return"a la página ".concat(t)},formatSRPaginationNextText:function(){return"siguiente página"},formatDetailPagination:function(t){return"Mostrando ".concat(t," filas")},formatClearSearch:function(){return"Limpiar búsqueda"},formatSearch:function(){return"Buscar"},formatNoMatches:function(){return"No se encontraron registros"},formatPaginationSwitch:function(){return"Ocultar/Mostrar paginación"},formatPaginationSwitchDown:function(){return"Mostrar paginación"},formatPaginationSwitchUp:function(){return"Ocultar paginación"},formatRefresh:function(){return"Refrescar"},formatToggleOn:function(){return"Mostrar vista de carta"},formatToggleOff:function(){return"Ocultar vista de carta"},formatColumns:function(){return"Columnas"},formatColumnsToggleAll:function(){return"Cambiar todo"},formatFullscreen:function(){return"Pantalla completa"},formatAllRows:function(){return"Todo"},formatAutoRefresh:function(){return"Auto Recargar"},formatExport:function(){return"Exportar datos"},formatJumpTo:function(){return"IR"},formatAdvancedSearch:function(){return"Búsqueda avanzada"},formatAdvancedCloseButton:function(){return"Cerrar"},formatFilterControlSwitch:function(){return"Ocultar/Mostrar controles"},formatFilterControlSwitchHide:function(){return"Ocultar controles"},formatFilterControlSwitchShow:function(){return"Mostrar controles"}},Object.assign(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["es-CL"]),t.fn.bootstrapTable.locales["es-ES"]=t.fn.bootstrapTable.locales.es={formatCopyRows:function(){return"Copiar filas"},formatPrint:function(){return"Imprimir"},formatLoadingMessage:function(){return"Cargando, por favor espere"},formatRecordsPerPage:function(t){return"".concat(t," resultados por página")},formatShowingRows:function(t,n,r,o){var e=r>1?"s":"";return void 0!==o&&o>0&&o>r?"Mostrando desde ".concat(t," hasta ").concat(n," - En total ").concat(r," resultado").concat(e," (filtrado de un total de ").concat(o," fila").concat(e,")"):"Mostrando desde ".concat(t," hasta ").concat(n," - En total ").concat(r," resultado").concat(e)},formatSRPaginationPreText:function(){return"página anterior"},formatSRPaginationPageText:function(t){return"a la página ".concat(t)},formatSRPaginationNextText:function(){return"siguiente página"},formatDetailPagination:function(t){return"Mostrando ".concat(t," fila").concat(t>1?"s":"")},formatClearSearch:function(){return"Limpiar búsqueda"},formatSearch:function(){return"Buscar"},formatNoMatches:function(){return"No se encontraron resultados coincidentes"},formatPaginationSwitch:function(){return"Ocultar/Mostrar paginación"},formatPaginationSwitchDown:function(){return"Mostrar paginación"},formatPaginationSwitchUp:function(){return"Ocultar paginación"},formatRefresh:function(){return"Recargar"},formatToggleOn:function(){return"Mostrar vista de carta"},formatToggleOff:function(){return"Ocultar vista de carta"},formatColumns:function(){return"Columnas"},formatColumnsToggleAll:function(){return"Cambiar todo"},formatFullscreen:function(){return"Pantalla completa"},formatAllRows:function(){return"Todos"},formatAutoRefresh:function(){return"Auto Recargar"},formatExport:function(){return"Exportar los datos"},formatJumpTo:function(){return"IR"},formatAdvancedSearch:function(){return"Búsqueda avanzada"},formatAdvancedCloseButton:function(){return"Cerrar"},formatFilterControlSwitch:function(){return"Ocultar/Exibir controles"},formatFilterControlSwitchHide:function(){return"Ocultar controles"},formatFilterControlSwitchShow:function(){return"Mostrar controles"},formatAddLevel:function(){return"Agregar nivel"},formatCancel:function(){return"Cancelar"},formatColumn:function(){return"Columna"},formatDeleteLevel:function(){return"Eliminar nivel"},formatDuplicateAlertTitle:function(){return"¡Se encontraron entradas duplicadas!"},formatDuplicateAlertDescription:function(){return"Por favor, elimine o modifique las columnas duplicadas"},formatMultipleSort:function(){return"Ordenación múltiple"},formatOrder:function(){return"Orden"},formatSort:function(){return"Ordenar"},formatSortBy:function(){return"Ordenar por"},formatThenBy:function(){return"a continuación"},formatSortOrders:function(){return{asc:"Ascendente",desc:"Descendente"}}},Object.assign(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["es-ES"]),t.fn.bootstrapTable.locales["es-MX"]={formatCopyRows:function(){return"Copiar Filas"},formatPrint:function(){return"Imprimir"},formatLoadingMessage:function(){return"Cargando, espere por favor"},formatRecordsPerPage:function(t){return"".concat(t," resultados por página")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Mostrando ".concat(t," a ").concat(n," de ").concat(r," filas (filtrado de ").concat(o," filas totales)"):"Mostrando ".concat(t," a ").concat(n," de ").concat(r," filas")},formatSRPaginationPreText:function(){return"página anterior"},formatSRPaginationPageText:function(t){return"ir a la página ".concat(t)},formatSRPaginationNextText:function(){return"página siguiente"},formatDetailPagination:function(t){return"Mostrando ".concat(t," filas")},formatClearSearch:function(){return"Limpiar búsqueda"},formatSearch:function(){return"Buscar"},formatNoMatches:function(){return"No se encontraron registros que coincidan"},formatPaginationSwitch:function(){return"Mostrar/ocultar paginación"},formatPaginationSwitchDown:function(){return"Mostrar paginación"},formatPaginationSwitchUp:function(){return"Ocultar paginación"},formatRefresh:function(){return"Actualizar"},formatToggleOn:function(){return"Mostrar vista"},formatToggleOff:function(){return"Ocultar vista"},formatColumns:function(){return"Columnas"},formatColumnsToggleAll:function(){return"Alternar todo"},formatFullscreen:function(){return"Pantalla completa"},formatAllRows:function(){return"Todo"},formatAutoRefresh:function(){return"Auto actualizar"},formatExport:function(){return"Exportar datos"},formatJumpTo:function(){return"IR"},formatAdvancedSearch:function(){return"Búsqueda avanzada"},formatAdvancedCloseButton:function(){return"Cerrar"},formatFilterControlSwitch:function(){return"Ocultar/Mostrar controles"},formatFilterControlSwitchHide:function(){return"Ocultar controles"},formatFilterControlSwitchShow:function(){return"Mostrar controles"}},Object.assign(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["es-MX"]),t.fn.bootstrapTable.locales["es-NI"]={formatCopyRows:function(){return"Copy Rows"},formatPrint:function(){return"Print"},formatLoadingMessage:function(){return"Cargando, por favor espere"},formatRecordsPerPage:function(t){return"".concat(t," registros por página")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Mostrando de ".concat(t," a ").concat(n," registros de ").concat(r," registros en total (filtered from ").concat(o," total rows)"):"Mostrando de ".concat(t," a ").concat(n," registros de ").concat(r," registros en total")},formatSRPaginationPreText:function(){return"previous page"},formatSRPaginationPageText:function(t){return"to page ".concat(t)},formatSRPaginationNextText:function(){return"next page"},formatDetailPagination:function(t){return"Showing ".concat(t," rows")},formatClearSearch:function(){return"Limpiar búsqueda"},formatSearch:function(){return"Buscar"},formatNoMatches:function(){return"No se encontraron registros"},formatPaginationSwitch:function(){return"Hide/Show pagination"},formatPaginationSwitchDown:function(){return"Show pagination"},formatPaginationSwitchUp:function(){return"Hide pagination"},formatRefresh:function(){return"Refrescar"},formatToggleOn:function(){return"Show card view"},formatToggleOff:function(){return"Hide card view"},formatColumns:function(){return"Columnas"},formatColumnsToggleAll:function(){return"Toggle all"},formatFullscreen:function(){return"Fullscreen"},formatAllRows:function(){return"Todo"},formatAutoRefresh:function(){return"Auto Refresh"},formatExport:function(){return"Export data"},formatJumpTo:function(){return"GO"},formatAdvancedSearch:function(){return"Advanced search"},formatAdvancedCloseButton:function(){return"Close"},formatFilterControlSwitch:function(){return"Ocultar/Mostrar controles"},formatFilterControlSwitchHide:function(){return"Ocultar controles"},formatFilterControlSwitchShow:function(){return"Mostrar controles"}},Object.assign(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["es-NI"]),t.fn.bootstrapTable.locales["es-SP"]={formatCopyRows:function(){return"Copy Rows"},formatPrint:function(){return"Print"},formatLoadingMessage:function(){return"Cargando, por favor espera"},formatRecordsPerPage:function(t){return"".concat(t," registros por página.")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"".concat(t," - ").concat(n," de ").concat(r," registros (filtered from ").concat(o," total rows)"):"".concat(t," - ").concat(n," de ").concat(r," registros.")},formatSRPaginationPreText:function(){return"previous page"},formatSRPaginationPageText:function(t){return"to page ".concat(t)},formatSRPaginationNextText:function(){return"next page"},formatDetailPagination:function(t){return"Showing ".concat(t," rows")},formatClearSearch:function(){return"Limpiar búsqueda"},formatSearch:function(){return"Buscar"},formatNoMatches:function(){return"No se han encontrado registros."},formatPaginationSwitch:function(){return"Hide/Show pagination"},formatPaginationSwitchDown:function(){return"Show pagination"},formatPaginationSwitchUp:function(){return"Hide pagination"},formatRefresh:function(){return"Actualizar"},formatToggleOn:function(){return"Show card view"},formatToggleOff:function(){return"Hide card view"},formatColumns:function(){return"Columnas"},formatColumnsToggleAll:function(){return"Toggle all"},formatFullscreen:function(){return"Fullscreen"},formatAllRows:function(){return"Todo"},formatAutoRefresh:function(){return"Auto Refresh"},formatExport:function(){return"Export data"},formatJumpTo:function(){return"GO"},formatAdvancedSearch:function(){return"Advanced search"},formatAdvancedCloseButton:function(){return"Close"},formatFilterControlSwitch:function(){return"Ocultar/Mostrar controles"},formatFilterControlSwitchHide:function(){return"Ocultar controles"},formatFilterControlSwitchShow:function(){return"Mostrar controles"}},Object.assign(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["es-SP"]),t.fn.bootstrapTable.locales["eu-EU"]=t.fn.bootstrapTable.locales.eu={formatCopyRows:function(){return"Copy Rows"},formatPrint:function(){return"Print"},formatLoadingMessage:function(){return"Itxaron mesedez"},formatRecordsPerPage:function(t){return"".concat(t," emaitza orriko.")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"".concat(r," erregistroetatik ").concat(t,"etik ").concat(n,"erakoak erakusten (filtered from ").concat(o," total rows)"):"".concat(r," erregistroetatik ").concat(t,"etik ").concat(n,"erakoak erakusten.")},formatSRPaginationPreText:function(){return"previous page"},formatSRPaginationPageText:function(t){return"to page ".concat(t)},formatSRPaginationNextText:function(){return"next page"},formatDetailPagination:function(t){return"Showing ".concat(t," rows")},formatClearSearch:function(){return"Clear Search"},formatSearch:function(){return"Bilatu"},formatNoMatches:function(){return"Ez da emaitzarik aurkitu"},formatPaginationSwitch:function(){return"Ezkutatu/Erakutsi orrikatzea"},formatPaginationSwitchDown:function(){return"Show pagination"},formatPaginationSwitchUp:function(){return"Hide pagination"},formatRefresh:function(){return"Eguneratu"},formatToggleOn:function(){return"Show card view"},formatToggleOff:function(){return"Hide card view"},formatColumns:function(){return"Zutabeak"},formatColumnsToggleAll:function(){return"Toggle all"},formatFullscreen:function(){return"Fullscreen"},formatAllRows:function(){return"Guztiak"},formatAutoRefresh:function(){return"Auto Refresh"},formatExport:function(){return"Export data"},formatJumpTo:function(){return"GO"},formatAdvancedSearch:function(){return"Advanced search"},formatAdvancedCloseButton:function(){return"Close"},formatFilterControlSwitch:function(){return"Hide/Show controls"},formatFilterControlSwitchHide:function(){return"Hide controls"},formatFilterControlSwitchShow:function(){return"Show controls"}},Object.assign(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["eu-EU"]),t.fn.bootstrapTable.locales["cs-CZ"]=t.fn.bootstrapTable.locales.cs={formatCopyRows:function(){return"Kopírovat řádky"},formatPrint:function(){return"Tisk"},formatLoadingMessage:function(){return"Čekejte, prosím"},formatRecordsPerPage:function(t){return"".concat(t," položek na stránku")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Zobrazena ".concat(t,". - ").concat(n," . položka z celkových ").concat(r," (filtered from ").concat(o," total rows)"):"Zobrazena ".concat(t,". - ").concat(n," . položka z celkových ").concat(r)},formatSRPaginationPreText:function(){return"předchozí strana"},formatSRPaginationPageText:function(t){return"na stranu ".concat(t)},formatSRPaginationNextText:function(){return"další strana"},formatDetailPagination:function(t){return"Zobrazuji ".concat(t," řádek")},formatClearSearch:function(){return"Smazat hledání"},formatSearch:function(){return"Vyhledávání"},formatNoMatches:function(){return"Nenalezena žádná vyhovující položka"},formatPaginationSwitch:function(){return"Skrýt/Zobrazit stránkování"},formatPaginationSwitchDown:function(){return"Zobrazit stránkování"},formatPaginationSwitchUp:function(){return"Skrýt stránkování"},formatRefresh:function(){return"Aktualizovat"},formatToggleOn:function(){return"Zobrazit karty"},formatToggleOff:function(){return"Zobrazit tabulku"},formatColumns:function(){return"Sloupce"},formatColumnsToggleAll:function(){return"Zobrazit/Skrýt vše"},formatFullscreen:function(){return"Zapnout/Vypnout fullscreen"},formatAllRows:function(){return"Vše"},formatAutoRefresh:function(){return"Automatické obnovení"},formatExport:function(){return"Export dat"},formatJumpTo:function(){return"GO"},formatAdvancedSearch:function(){return"Pokročilé hledání"},formatAdvancedCloseButton:function(){return"Zavřít"},formatFilterControlSwitch:function(){return"Skrýt/Zobrazit ovladače"},formatFilterControlSwitchHide:function(){return"Skrýt ovladače"},formatFilterControlSwitchShow:function(){return"Zobrazit ovladače"}},Object.assign(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["cs-CZ"]),t.fn.bootstrapTable.locales["et-EE"]=t.fn.bootstrapTable.locales.et={formatCopyRows:function(){return"Copy Rows"},formatPrint:function(){return"Print"},formatLoadingMessage:function(){return"Päring käib, palun oota"},formatRecordsPerPage:function(t){return"".concat(t," rida lehe kohta")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Näitan tulemusi ".concat(t," kuni ").concat(n," - kokku ").concat(r," tulemust (filtered from ").concat(o," total rows)"):"Näitan tulemusi ".concat(t," kuni ").concat(n," - kokku ").concat(r," tulemust")},formatSRPaginationPreText:function(){return"previous page"},formatSRPaginationPageText:function(t){return"to page ".concat(t)},formatSRPaginationNextText:function(){return"next page"},formatDetailPagination:function(t){return"Showing ".concat(t," rows")},formatClearSearch:function(){return"Clear Search"},formatSearch:function(){return"Otsi"},formatNoMatches:function(){return"Päringu tingimustele ei vastanud ühtegi tulemust"},formatPaginationSwitch:function(){return"Näita/Peida lehtedeks jagamine"},formatPaginationSwitchDown:function(){return"Show pagination"},formatPaginationSwitchUp:function(){return"Hide pagination"},formatRefresh:function(){return"Värskenda"},formatToggleOn:function(){return"Show card view"},formatToggleOff:function(){return"Hide card view"},formatColumns:function(){return"Veerud"},formatColumnsToggleAll:function(){return"Toggle all"},formatFullscreen:function(){return"Fullscreen"},formatAllRows:function(){return"Kõik"},formatAutoRefresh:function(){return"Auto Refresh"},formatExport:function(){return"Export data"},formatJumpTo:function(){return"GO"},formatAdvancedSearch:function(){return"Advanced search"},formatAdvancedCloseButton:function(){return"Close"},formatFilterControlSwitch:function(){return"Hide/Show controls"},formatFilterControlSwitchHide:function(){return"Hide controls"},formatFilterControlSwitchShow:function(){return"Show controls"}},Object.assign(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["et-EE"]),t.fn.bootstrapTable.locales["fi-FI"]=t.fn.bootstrapTable.locales.fi={formatCopyRows:function(){return"Copy Rows"},formatPrint:function(){return"Print"},formatLoadingMessage:function(){return"Ladataan, ole hyvä ja odota"},formatRecordsPerPage:function(t){return"".concat(t," riviä sivulla")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Näytetään rivit ".concat(t," - ").concat(n," / ").concat(r," (filtered from ").concat(o," total rows)"):"Näytetään rivit ".concat(t," - ").concat(n," / ").concat(r)},formatSRPaginationPreText:function(){return"previous page"},formatSRPaginationPageText:function(t){return"to page ".concat(t)},formatSRPaginationNextText:function(){return"next page"},formatDetailPagination:function(t){return"Showing ".concat(t," rows")},formatClearSearch:function(){return"Poista suodattimet"},formatSearch:function(){return"Hae"},formatNoMatches:function(){return"Hakuehtoja vastaavia tuloksia ei löytynyt"},formatPaginationSwitch:function(){return"Näytä/Piilota sivutus"},formatPaginationSwitchDown:function(){return"Show pagination"},formatPaginationSwitchUp:function(){return"Hide pagination"},formatRefresh:function(){return"Päivitä"},formatToggleOn:function(){return"Show card view"},formatToggleOff:function(){return"Hide card view"},formatColumns:function(){return"Sarakkeet"},formatColumnsToggleAll:function(){return"Toggle all"},formatFullscreen:function(){return"Fullscreen"},formatAllRows:function(){return"Kaikki"},formatAutoRefresh:function(){return"Auto Refresh"},formatExport:function(){return"Vie tiedot"},formatJumpTo:function(){return"GO"},formatAdvancedSearch:function(){return"Advanced search"},formatAdvancedCloseButton:function(){return"Close"},formatFilterControlSwitch:function(){return"Hide/Show controls"},formatFilterControlSwitchHide:function(){return"Hide controls"},formatFilterControlSwitchShow:function(){return"Show controls"}},Object.assign(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["fi-FI"]),t.fn.bootstrapTable.locales["fa-IR"]=t.fn.bootstrapTable.locales.fa={formatCopyRows:function(){return"کپی ردیف ها"},formatPrint:function(){return"پرینت"},formatLoadingMessage:function(){return"در حال بارگذاری, لطفا صبر کنید"},formatRecordsPerPage:function(t){return"".concat(t," رکورد در صفحه")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"نمایش ".concat(t," تا ").concat(n," از ").concat(r," ردیف (filtered from ").concat(o," total rows)"):"نمایش ".concat(t," تا ").concat(n," از ").concat(r," ردیف")},formatSRPaginationPreText:function(){return"صفحه قبلی"},formatSRPaginationPageText:function(t){return"به صفحه ".concat(t)},formatSRPaginationNextText:function(){return"صفحه بعدی"},formatDetailPagination:function(t){return"نمایش ".concat(t," سطرها")},formatClearSearch:function(){return"پاک کردن جستجو"},formatSearch:function(){return"جستجو"},formatNoMatches:function(){return"رکوردی یافت نشد."},formatPaginationSwitch:function(){return"نمایش/مخفی صفحه بندی"},formatPaginationSwitchDown:function(){return"نمایش صفحه بندی"},formatPaginationSwitchUp:function(){return"پنهان کردن صفحه بندی"},formatRefresh:function(){return"به روز رسانی"},formatToggleOn:function(){return"Show card view"},formatToggleOff:function(){return"Hide card view"},formatColumns:function(){return"سطر ها"},formatColumnsToggleAll:function(){return"تغییر وضعیت همه"},formatFullscreen:function(){return"تمام صفحه"},formatAllRows:function(){return"همه"},formatAutoRefresh:function(){return"رفرش اتوماتیک"},formatExport:function(){return"خروجی دیتا"},formatJumpTo:function(){return"برو"},formatAdvancedSearch:function(){return"جستجوی پیشرفته"},formatAdvancedCloseButton:function(){return"بستن"},formatFilterControlSwitch:function(){return"پنهان/نمایش دادن کنترل ها"},formatFilterControlSwitchHide:function(){return"پنهان کردن کنترل ها"},formatFilterControlSwitchShow:function(){return"نمایش کنترل ها"}},Object.assign(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["fa-IR"]),t.fn.bootstrapTable.locales["fr-BE"]={formatCopyRows:function(){return"Copier les lignes"},formatPrint:function(){return"Imprimer"},formatLoadingMessage:function(){return"Chargement en cours"},formatRecordsPerPage:function(t){return"".concat(t," lignes par page")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Affichage de ".concat(t," à ").concat(n," sur ").concat(r," lignes (filtrées à partir de ").concat(o," lignes)"):"Affichage de ".concat(t," à ").concat(n," sur ").concat(r," lignes")},formatSRPaginationPreText:function(){return"page précédente"},formatSRPaginationPageText:function(t){return"vers la page ".concat(t)},formatSRPaginationNextText:function(){return"page suivante"},formatDetailPagination:function(t){return"Affichage de ".concat(t," lignes")},formatClearSearch:function(){return"Effacer la recherche"},formatSearch:function(){return"Rechercher"},formatNoMatches:function(){return"Aucun résultat"},formatPaginationSwitch:function(){return"Masquer/Afficher la pagination"},formatPaginationSwitchDown:function(){return"Afficher la pagination"},formatPaginationSwitchUp:function(){return"Masquer la pagination"},formatRefresh:function(){return"Actualiser"},formatToggleOn:function(){return"Afficher la vue en cartes"},formatToggleOff:function(){return"Cacher la vue en cartes"},formatColumns:function(){return"Colonnes"},formatColumnsToggleAll:function(){return"Tout afficher"},formatFullscreen:function(){return"Plein écran"},formatAllRows:function(){return"Tout"},formatAutoRefresh:function(){return"Actualiser automatiquement"},formatExport:function(){return"Exporter"},formatJumpTo:function(){return"Aller à"},formatAdvancedSearch:function(){return"Recherche avancée"},formatAdvancedCloseButton:function(){return"Fermer"},formatFilterControlSwitch:function(){return"Masquer/Afficher les contrôles"},formatFilterControlSwitchHide:function(){return"Masquer les contrôles"},formatFilterControlSwitchShow:function(){return"Afficher les contrôles"},formatToggleCustomViewOn:function(){return"Afficher la vue personnalisée"},formatToggleCustomViewOff:function(){return"Cacher la vue personnalisée"},formatClearFilters:function(){return"Retirer les filtres"},formatAddLevel:function(){return"Ajouter un niveau"},formatCancel:function(){return"Annuler"},formatColumn:function(){return"Colonne"},formatDeleteLevel:function(){return"Supprimer un niveau"},formatDuplicateAlertTitle:function(){return"Des entrées en double ont été trouvées !"},formatDuplicateAlertDescription:function(){return"Veuillez supprimer ou modifier les entrées en double"},formatMultipleSort:function(){return"Tri multiple"},formatOrder:function(){return"Ordre"},formatSort:function(){return"Trier"},formatSortBy:function(){return"Trier par"},formatSortOrders:function(){return{asc:"Ascendant",desc:"Descendant"}},formatThenBy:function(){return"Puis par"}},Object.assign(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["fr-BE"]),t.fn.bootstrapTable.locales["fr-CH"]={formatCopyRows:function(){return"Copier les lignes"},formatPrint:function(){return"Imprimer"},formatLoadingMessage:function(){return"Chargement en cours"},formatRecordsPerPage:function(t){return"".concat(t," lignes par page")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Affichage de ".concat(t," à ").concat(n," sur ").concat(r," lignes (filtrées à partir de ").concat(o," lignes)"):"Affichage de ".concat(t," à ").concat(n," sur ").concat(r," lignes")},formatSRPaginationPreText:function(){return"page précédente"},formatSRPaginationPageText:function(t){return"vers la page ".concat(t)},formatSRPaginationNextText:function(){return"page suivante"},formatDetailPagination:function(t){return"Affichage de ".concat(t," lignes")},formatClearSearch:function(){return"Effacer la recherche"},formatSearch:function(){return"Rechercher"},formatNoMatches:function(){return"Aucun résultat"},formatPaginationSwitch:function(){return"Masquer/Afficher la pagination"},formatPaginationSwitchDown:function(){return"Afficher la pagination"},formatPaginationSwitchUp:function(){return"Masquer la pagination"},formatRefresh:function(){return"Actualiser"},formatToggleOn:function(){return"Afficher la vue en cartes"},formatToggleOff:function(){return"Cacher la vue en cartes"},formatColumns:function(){return"Colonnes"},formatColumnsToggleAll:function(){return"Tout afficher"},formatFullscreen:function(){return"Plein écran"},formatAllRows:function(){return"Tout"},formatAutoRefresh:function(){return"Actualiser automatiquement"},formatExport:function(){return"Exporter"},formatJumpTo:function(){return"Aller à"},formatAdvancedSearch:function(){return"Recherche avancée"},formatAdvancedCloseButton:function(){return"Fermer"},formatFilterControlSwitch:function(){return"Masquer/Afficher les contrôles"},formatFilterControlSwitchHide:function(){return"Masquer les contrôles"},formatFilterControlSwitchShow:function(){return"Afficher les contrôles"},formatToggleCustomViewOn:function(){return"Afficher la vue personnalisée"},formatToggleCustomViewOff:function(){return"Cacher la vue personnalisée"},formatClearFilters:function(){return"Retirer les filtres"},formatAddLevel:function(){return"Ajouter un niveau"},formatCancel:function(){return"Annuler"},formatColumn:function(){return"Colonne"},formatDeleteLevel:function(){return"Supprimer un niveau"},formatDuplicateAlertTitle:function(){return"Des entrées en double ont été trouvées !"},formatDuplicateAlertDescription:function(){return"Veuillez supprimer ou modifier les entrées en double"},formatMultipleSort:function(){return"Tri multiple"},formatOrder:function(){return"Ordre"},formatSort:function(){return"Trier"},formatSortBy:function(){return"Trier par"},formatSortOrders:function(){return{asc:"Ascendant",desc:"Descendant"}},formatThenBy:function(){return"Puis par"}},Object.assign(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["fr-CH"]),t.fn.bootstrapTable.locales["fr-FR"]=t.fn.bootstrapTable.locales.fr={formatCopyRows:function(){return"Copier les lignes"},formatPrint:function(){return"Imprimer"},formatLoadingMessage:function(){return"Chargement en cours"},formatRecordsPerPage:function(t){return"".concat(t," lignes par page")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Affichage de ".concat(t," à ").concat(n," sur ").concat(r," lignes (filtrées à partir de ").concat(o," lignes)"):"Affichage de ".concat(t," à ").concat(n," sur ").concat(r," lignes")},formatSRPaginationPreText:function(){return"page précédente"},formatSRPaginationPageText:function(t){return"vers la page ".concat(t)},formatSRPaginationNextText:function(){return"page suivante"},formatDetailPagination:function(t){return"Affichage de ".concat(t," lignes")},formatClearSearch:function(){return"Effacer la recherche"},formatSearch:function(){return"Rechercher"},formatNoMatches:function(){return"Aucun résultat"},formatPaginationSwitch:function(){return"Masquer/Afficher la pagination"},formatPaginationSwitchDown:function(){return"Afficher la pagination"},formatPaginationSwitchUp:function(){return"Masquer la pagination"},formatRefresh:function(){return"Actualiser"},formatToggleOn:function(){return"Afficher la vue en cartes"},formatToggleOff:function(){return"Cacher la vue en cartes"},formatColumns:function(){return"Colonnes"},formatColumnsToggleAll:function(){return"Tout afficher"},formatFullscreen:function(){return"Plein écran"},formatAllRows:function(){return"Tout"},formatAutoRefresh:function(){return"Actualiser automatiquement"},formatExport:function(){return"Exporter"},formatJumpTo:function(){return"Aller à"},formatAdvancedSearch:function(){return"Recherche avancée"},formatAdvancedCloseButton:function(){return"Fermer"},formatFilterControlSwitch:function(){return"Masquer/Afficher les contrôles"},formatFilterControlSwitchHide:function(){return"Masquer les contrôles"},formatFilterControlSwitchShow:function(){return"Afficher les contrôles"},formatToggleCustomViewOn:function(){return"Afficher la vue personnalisée"},formatToggleCustomViewOff:function(){return"Cacher la vue personnalisée"},formatClearFilters:function(){return"Retirer les filtres"},formatAddLevel:function(){return"Ajouter un niveau"},formatCancel:function(){return"Annuler"},formatColumn:function(){return"Colonne"},formatDeleteLevel:function(){return"Supprimer un niveau"},formatDuplicateAlertTitle:function(){return"Des entrées en double ont été trouvées !"},formatDuplicateAlertDescription:function(){return"Veuillez supprimer ou modifier les entrées en double"},formatMultipleSort:function(){return"Tri multiple"},formatOrder:function(){return"Ordre"},formatSort:function(){return"Trier"},formatSortBy:function(){return"Trier par"},formatSortOrders:function(){return{asc:"Ascendant",desc:"Descendant"}},formatThenBy:function(){return"Puis par"}},Object.assign(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["fr-FR"]),t.fn.bootstrapTable.locales["he-IL"]=t.fn.bootstrapTable.locales.he={formatCopyRows:function(){return"Copy Rows"},formatPrint:function(){return"Print"},formatLoadingMessage:function(){return"טוען, נא להמתין"},formatRecordsPerPage:function(t){return"".concat(t," שורות בעמוד")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"מציג ".concat(t," עד ").concat(n," מ-").concat(r,"שורות").concat(o," total rows)"):"מציג ".concat(t," עד ").concat(n," מ-").concat(r," שורות")},formatSRPaginationPreText:function(){return"previous page"},formatSRPaginationPageText:function(t){return"to page ".concat(t)},formatSRPaginationNextText:function(){return"next page"},formatDetailPagination:function(t){return"Showing ".concat(t," rows")},formatClearSearch:function(){return"Clear Search"},formatSearch:function(){return"חיפוש"},formatNoMatches:function(){return"לא נמצאו רשומות תואמות"},formatPaginationSwitch:function(){return"הסתר/הצג מספור דפים"},formatPaginationSwitchDown:function(){return"Show pagination"},formatPaginationSwitchUp:function(){return"Hide pagination"},formatRefresh:function(){return"רענן"},formatToggleOn:function(){return"Show card view"},formatToggleOff:function(){return"Hide card view"},formatColumns:function(){return"עמודות"},formatColumnsToggleAll:function(){return"Toggle all"},formatFullscreen:function(){return"Fullscreen"},formatAllRows:function(){return"הכל"},formatAutoRefresh:function(){return"Auto Refresh"},formatExport:function(){return"Export data"},formatJumpTo:function(){return"GO"},formatAdvancedSearch:function(){return"Advanced search"},formatAdvancedCloseButton:function(){return"Close"},formatFilterControlSwitch:function(){return"Hide/Show controls"},formatFilterControlSwitchHide:function(){return"Hide controls"},formatFilterControlSwitchShow:function(){return"Show controls"}},Object.assign(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["he-IL"]),t.fn.bootstrapTable.locales["hi-IN"]={formatCopyRows:function(){return"पंक्तियों की कॉपी करें"},formatPrint:function(){return"प्रिंट"},formatLoadingMessage:function(){return"लोड हो रहा है कृपया प्रतीक्षा करें"},formatRecordsPerPage:function(t){return"".concat(t," प्रति पृष्ठ पंक्तियाँ")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"".concat(t," - ").concat(n," पक्तिया ").concat(r," में से ( ").concat(o," पक्तिया)"):"".concat(t," - ").concat(n," पक्तिया ").concat(r," में से")},formatSRPaginationPreText:function(){return"पिछला पृष्ठ"},formatSRPaginationPageText:function(t){return"".concat(t," पृष्ठ पर")},formatSRPaginationNextText:function(){return"अगला पृष्ठ"},formatDetailPagination:function(t){return"".concat(t," पंक्तियां")},formatClearSearch:function(){return"सर्च क्लिअर करें"},formatSearch:function(){return"सर्च"},formatNoMatches:function(){return"मेल खाते रिकॉर्ड नही मिले"},formatPaginationSwitch:function(){return"छुपाओ/दिखाओ पृष्ठ संख्या"},formatPaginationSwitchDown:function(){return"दिखाओ पृष्ठ संख्या"},formatPaginationSwitchUp:function(){return"छुपाओ पृष्ठ संख्या"},formatRefresh:function(){return"रिफ्रेश"},formatToggleOn:function(){return"कार्ड दृश्य दिखाएं"},formatToggleOff:function(){return"कार्ड दृश्य छुपाएं"},formatColumns:function(){return"कॉलम"},formatColumnsToggleAll:function(){return"टॉगल आल"},formatFullscreen:function(){return"पूर्ण स्क्रीन"},formatAllRows:function(){return"सब"},formatAutoRefresh:function(){return"ऑटो रिफ्रेश"},formatExport:function(){return"एक्सपोर्ट डाटा"},formatJumpTo:function(){return"जाओ"},formatAdvancedSearch:function(){return"एडवांस सर्च"},formatAdvancedCloseButton:function(){return"बंद करे"},formatFilterControlSwitch:function(){return"छुपाओ/दिखाओ कंट्रोल्स"},formatFilterControlSwitchHide:function(){return"छुपाओ कंट्रोल्स"},formatFilterControlSwitchShow:function(){return"दिखाओ कंट्रोल्स"}},Object.assign(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["hi-IN"]),t.fn.bootstrapTable.locales["hr-HR"]=t.fn.bootstrapTable.locales.hr={formatCopyRows:function(){return"Copy Rows"},formatPrint:function(){return"Print"},formatLoadingMessage:function(){return"Molimo pričekajte"},formatRecordsPerPage:function(t){return"".concat(t," broj zapisa po stranici")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Prikazujem ".concat(t,". - ").concat(n,". od ukupnog broja zapisa ").concat(r," (filtered from ").concat(o," total rows)"):"Prikazujem ".concat(t,". - ").concat(n,". od ukupnog broja zapisa ").concat(r)},formatSRPaginationPreText:function(){return"previous page"},formatSRPaginationPageText:function(t){return"to page ".concat(t)},formatSRPaginationNextText:function(){return"next page"},formatDetailPagination:function(t){return"Showing ".concat(t," rows")},formatClearSearch:function(){return"Clear Search"},formatSearch:function(){return"Pretraži"},formatNoMatches:function(){return"Nije pronađen niti jedan zapis"},formatPaginationSwitch:function(){return"Prikaži/sakrij stranice"},formatPaginationSwitchDown:function(){return"Show pagination"},formatPaginationSwitchUp:function(){return"Hide pagination"},formatRefresh:function(){return"Osvježi"},formatToggleOn:function(){return"Show card view"},formatToggleOff:function(){return"Hide card view"},formatColumns:function(){return"Kolone"},formatColumnsToggleAll:function(){return"Toggle all"},formatFullscreen:function(){return"Fullscreen"},formatAllRows:function(){return"Sve"},formatAutoRefresh:function(){return"Auto Refresh"},formatExport:function(){return"Export data"},formatJumpTo:function(){return"GO"},formatAdvancedSearch:function(){return"Advanced search"},formatAdvancedCloseButton:function(){return"Close"},formatFilterControlSwitch:function(){return"Hide/Show controls"},formatFilterControlSwitchHide:function(){return"Hide controls"},formatFilterControlSwitchShow:function(){return"Show controls"}},Object.assign(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["hr-HR"]),t.fn.bootstrapTable.locales["hu-HU"]=t.fn.bootstrapTable.locales.hu={formatCopyRows:function(){return"Copy Rows"},formatPrint:function(){return"Print"},formatLoadingMessage:function(){return"Betöltés, kérem várjon"},formatRecordsPerPage:function(t){return"".concat(t," rekord per oldal")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Megjelenítve ".concat(t," - ").concat(n," / ").concat(r," összesen (filtered from ").concat(o," total rows)"):"Megjelenítve ".concat(t," - ").concat(n," / ").concat(r," összesen")},formatSRPaginationPreText:function(){return"previous page"},formatSRPaginationPageText:function(t){return"to page ".concat(t)},formatSRPaginationNextText:function(){return"next page"},formatDetailPagination:function(t){return"Showing ".concat(t," rows")},formatClearSearch:function(){return"Clear Search"},formatSearch:function(){return"Keresés"},formatNoMatches:function(){return"Nincs találat"},formatPaginationSwitch:function(){return"Lapozó elrejtése/megjelenítése"},formatPaginationSwitchDown:function(){return"Show pagination"},formatPaginationSwitchUp:function(){return"Hide pagination"},formatRefresh:function(){return"Frissítés"},formatToggleOn:function(){return"Show card view"},formatToggleOff:function(){return"Hide card view"},formatColumns:function(){return"Oszlopok"},formatColumnsToggleAll:function(){return"Toggle all"},formatFullscreen:function(){return"Fullscreen"},formatAllRows:function(){return"Összes"},formatAutoRefresh:function(){return"Auto Refresh"},formatExport:function(){return"Export data"},formatJumpTo:function(){return"GO"},formatAdvancedSearch:function(){return"Advanced search"},formatAdvancedCloseButton:function(){return"Close"},formatFilterControlSwitch:function(){return"Hide/Show controls"},formatFilterControlSwitchHide:function(){return"Hide controls"},formatFilterControlSwitchShow:function(){return"Show controls"}},Object.assign(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["hu-HU"]),t.fn.bootstrapTable.locales["it-IT"]=t.fn.bootstrapTable.locales.it={formatCopyRows:function(){return"Copy Rows"},formatPrint:function(){return"Print"},formatLoadingMessage:function(){return"Caricamento in corso"},formatRecordsPerPage:function(t){return"".concat(t," elementi per pagina")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Visualizzazione da ".concat(t," a ").concat(n," di ").concat(r," elementi (filtrati da ").concat(o," elementi totali)"):"Visualizzazione da ".concat(t," a ").concat(n," di ").concat(r," elementi")},formatSRPaginationPreText:function(){return"pagina precedente"},formatSRPaginationPageText:function(t){return"alla pagina ".concat(t)},formatSRPaginationNextText:function(){return"pagina successiva"},formatDetailPagination:function(t){return"Mostrando ".concat(t," elementi")},formatClearSearch:function(){return"Pulisci filtri"},formatSearch:function(){return"Cerca"},formatNoMatches:function(){return"Nessun elemento trovato"},formatPaginationSwitch:function(){return"Nascondi/Mostra paginazione"},formatPaginationSwitchDown:function(){return"Mostra paginazione"},formatPaginationSwitchUp:function(){return"Nascondi paginazione"},formatRefresh:function(){return"Aggiorna"},formatToggleOn:function(){return"Mostra visuale a scheda"},formatToggleOff:function(){return"Nascondi visuale a scheda"},formatColumns:function(){return"Colonne"},formatColumnsToggleAll:function(){return"Mostra tutte"},formatFullscreen:function(){return"Schermo intero"},formatAllRows:function(){return"Tutto"},formatAutoRefresh:function(){return"Auto Aggiornamento"},formatExport:function(){return"Esporta dati"},formatJumpTo:function(){return"VAI"},formatAdvancedSearch:function(){return"Filtri avanzati"},formatAdvancedCloseButton:function(){return"Chiudi"},formatFilterControlSwitch:function(){return"Hide/Show controls"},formatFilterControlSwitchHide:function(){return"Hide controls"},formatFilterControlSwitchShow:function(){return"Show controls"}},Object.assign(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["it-IT"]),t.fn.bootstrapTable.locales["fr-LU"]={formatCopyRows:function(){return"Copier les lignes"},formatPrint:function(){return"Imprimer"},formatLoadingMessage:function(){return"Chargement en cours"},formatRecordsPerPage:function(t){return"".concat(t," lignes par page")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Affichage de ".concat(t," à ").concat(n," sur ").concat(r," lignes (filtrées à partir de ").concat(o," lignes)"):"Affichage de ".concat(t," à ").concat(n," sur ").concat(r," lignes")},formatSRPaginationPreText:function(){return"page précédente"},formatSRPaginationPageText:function(t){return"vers la page ".concat(t)},formatSRPaginationNextText:function(){return"page suivante"},formatDetailPagination:function(t){return"Affichage de ".concat(t," lignes")},formatClearSearch:function(){return"Effacer la recherche"},formatSearch:function(){return"Rechercher"},formatNoMatches:function(){return"Aucun résultat"},formatPaginationSwitch:function(){return"Masquer/Afficher la pagination"},formatPaginationSwitchDown:function(){return"Afficher la pagination"},formatPaginationSwitchUp:function(){return"Masquer la pagination"},formatRefresh:function(){return"Actualiser"},formatToggleOn:function(){return"Afficher la vue en cartes"},formatToggleOff:function(){return"Cacher la vue en cartes"},formatColumns:function(){return"Colonnes"},formatColumnsToggleAll:function(){return"Tout afficher"},formatFullscreen:function(){return"Plein écran"},formatAllRows:function(){return"Tout"},formatAutoRefresh:function(){return"Actualiser automatiquement"},formatExport:function(){return"Exporter"},formatJumpTo:function(){return"Aller à"},formatAdvancedSearch:function(){return"Recherche avancée"},formatAdvancedCloseButton:function(){return"Fermer"},formatFilterControlSwitch:function(){return"Masquer/Afficher les contrôles"},formatFilterControlSwitchHide:function(){return"Masquer les contrôles"},formatFilterControlSwitchShow:function(){return"Afficher les contrôles"},formatToggleCustomViewOn:function(){return"Afficher la vue personnalisée"},formatToggleCustomViewOff:function(){return"Cacher la vue personnalisée"},formatClearFilters:function(){return"Retirer les filtres"},formatAddLevel:function(){return"Ajouter un niveau"},formatCancel:function(){return"Annuler"},formatColumn:function(){return"Colonne"},formatDeleteLevel:function(){return"Supprimer un niveau"},formatDuplicateAlertTitle:function(){return"Des entrées en double ont été trouvées !"},formatDuplicateAlertDescription:function(){return"Veuillez supprimer ou modifier les entrées en double"},formatMultipleSort:function(){return"Tri multiple"},formatOrder:function(){return"Ordre"},formatSort:function(){return"Trier"},formatSortBy:function(){return"Trier par"},formatSortOrders:function(){return{asc:"Ascendant",desc:"Descendant"}},formatThenBy:function(){return"Puis par"}},Object.assign(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["fr-LU"]),t.fn.bootstrapTable.locales["id-ID"]=t.fn.bootstrapTable.locales.id={formatCopyRows:function(){return"Salin baris"},formatPrint:function(){return"Mencetak"},formatLoadingMessage:function(){return"Pemuatan sedang berlangsung"},formatRecordsPerPage:function(t){return"".concat(t," baris per halaman")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Menampilkan dari ".concat(t," hingga ").concat(n," pada ").concat(r," baris (difilter dari ").concat(o," baris)"):"Menampilkan dari ".concat(t," hingga ").concat(n," pada ").concat(r," baris")},formatSRPaginationPreText:function(){return"halaman sebelumnya"},formatSRPaginationPageText:function(t){return"ke halaman ".concat(t)},formatSRPaginationNextText:function(){return"halaman berikutnya"},formatDetailPagination:function(t){return"Tampilan ".concat(t," baris")},formatClearSearch:function(){return"Menghapus pencarian"},formatSearch:function(){return"Pencarian"},formatNoMatches:function(){return"Tidak ada hasil"},formatPaginationSwitch:function(){return"Sembunyikan/Tampilkan penomoran halaman"},formatPaginationSwitchDown:function(){return"Tampilkan penomoran halaman"},formatPaginationSwitchUp:function(){return"Sembunyikan penomoran halaman"},formatRefresh:function(){return"Segarkan"},formatToggleOn:function(){return"Menampilkan tampilan peta"},formatToggleOff:function(){return"Menyembunyikan tampilan peta"},formatColumns:function(){return"Kolom"},formatColumnsToggleAll:function(){return"Tampilkan semua"},formatFullscreen:function(){return"Layar penuh"},formatAllRows:function(){return"Semua"},formatAutoRefresh:function(){return"Penyegaran otomatis"},formatExport:function(){return"Mengekspor data"},formatJumpTo:function(){return"Pergi ke"},formatAdvancedSearch:function(){return"Pencarian lanjutan"},formatAdvancedCloseButton:function(){return"Tutup"},formatFilterControlSwitch:function(){return"Menyembunyikan/Menampilkan kontrol"},formatFilterControlSwitchHide:function(){return"Menyembunyikan kontrol"},formatFilterControlSwitchShow:function(){return"Menampilkan kontrol"},formatToggleCustomViewOn:function(){return"Menampilkan tampilan khusus"},formatToggleCustomViewOff:function(){return"Menyembunyikan tampilan khusus"},formatClearFilters:function(){return"Menghapus filter"},formatAddLevel:function(){return"Menambahkan level"},formatCancel:function(){return"Batal"},formatColumn:function(){return"Kolom"},formatDeleteLevel:function(){return"Menghapus level"},formatDuplicateAlertTitle:function(){return"Entri duplikat telah ditemukan!"},formatDuplicateAlertDescription:function(){return"Harap hapus atau ubah entri duplikat"},formatMultipleSort:function(){return"Penyortiran ganda"},formatOrder:function(){return"Urutan"},formatSort:function(){return"Penyortiran"},formatSortBy:function(){return"Urutkan berdasarkan"},formatSortOrders:function(){return{asc:"Menaik",desc:"Menurun"}},formatThenBy:function(){return"Kemudian oleh"}},Object.assign(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["id-ID"]),t.fn.bootstrapTable.locales["ja-JP"]=t.fn.bootstrapTable.locales.ja={formatCopyRows:function(){return"Copy Rows"},formatPrint:function(){return"Print"},formatLoadingMessage:function(){return"読み込み中です。少々お待ちください。"},formatRecordsPerPage:function(t){return"ページ当たり最大".concat(t,"件")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"全".concat(r,"件から、").concat(t,"から").concat(n,"件目まで表示しています (filtered from ").concat(o," total rows)"):"全".concat(r,"件から、").concat(t,"から").concat(n,"件目まで表示しています")},formatSRPaginationPreText:function(){return"previous page"},formatSRPaginationPageText:function(t){return"to page ".concat(t)},formatSRPaginationNextText:function(){return"next page"},formatDetailPagination:function(t){return"Showing ".concat(t," rows")},formatClearSearch:function(){return"Clear Search"},formatSearch:function(){return"検索"},formatNoMatches:function(){return"該当するレコードが見つかりません"},formatPaginationSwitch:function(){return"ページ数を表示・非表示"},formatPaginationSwitchDown:function(){return"Show pagination"},formatPaginationSwitchUp:function(){return"Hide pagination"},formatRefresh:function(){return"更新"},formatToggleOn:function(){return"Show card view"},formatToggleOff:function(){return"Hide card view"},formatColumns:function(){return"列"},formatColumnsToggleAll:function(){return"Toggle all"},formatFullscreen:function(){return"Fullscreen"},formatAllRows:function(){return"すべて"},formatAutoRefresh:function(){return"Auto Refresh"},formatExport:function(){return"Export data"},formatJumpTo:function(){return"GO"},formatAdvancedSearch:function(){return"Advanced search"},formatAdvancedCloseButton:function(){return"Close"},formatFilterControlSwitch:function(){return"Hide/Show controls"},formatFilterControlSwitchHide:function(){return"Hide controls"},formatFilterControlSwitchShow:function(){return"Show controls"}},Object.assign(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["ja-JP"]),t.fn.bootstrapTable.locales["lb-LU"]=t.fn.bootstrapTable.locales.lb={formatCopyRows:function(){return"Zeilen kopéieren"},formatPrint:function(){return"Drécken"},formatLoadingMessage:function(){return"Gëtt gelueden, gedellëgt Iech wannechgelift ee Moment"},formatRecordsPerPage:function(t){return"".concat(t," Zeilen per Säit")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Weist Zeil ".concat(t," bis ").concat(n," vun ").concat(r," Zeil").concat(r>1?"en":""," (gefiltert vun insgesamt ").concat(o," Zeil").concat(r>1?"en":"",")"):"Weist Zeil ".concat(t," bis ").concat(n," vun ").concat(r," Zeil").concat(r>1?"en":"")},formatSRPaginationPreText:function(){return"viregt Säit"},formatSRPaginationPageText:function(t){return"op Säit ".concat(t)},formatSRPaginationNextText:function(){return"nächst Säit"},formatDetailPagination:function(t){return"Weist ".concat(t," Zeilen")},formatClearSearch:function(){return"Sich réckgängeg maachen"},formatSearch:function(){return"Sich"},formatNoMatches:function(){return"Keng passend Anträg fonnt"},formatPaginationSwitch:function(){return"Paginatioun uweisen/verstoppen"},formatPaginationSwitchDown:function(){return"Paginatioun uweisen"},formatPaginationSwitchUp:function(){return"Paginatioun verstoppen"},formatRefresh:function(){return"Nei lueden"},formatToggleOn:function(){return"Kaartenusiicht uweisen"},formatToggleOff:function(){return"Kaartenusiicht verstoppen"},formatColumns:function(){return"Kolonnen"},formatColumnsToggleAll:function(){return"All ëmschalten"},formatFullscreen:function(){return"Vollbild"},formatAllRows:function(){return"All"},formatAutoRefresh:function(){return"Automatescht neilueden"},formatExport:function(){return"Daten exportéieren"},formatJumpTo:function(){return"Sprangen"},formatAdvancedSearch:function(){return"Erweidert Sich"},formatAdvancedCloseButton:function(){return"Zoumaachen"},formatFilterControlSwitch:function(){return"Schaltelementer uweisen/verstoppen"},formatFilterControlSwitchHide:function(){return"Schaltelementer verstoppen"},formatFilterControlSwitchShow:function(){return"Schaltelementer uweisen"}},Object.assign(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["lb-LU"]),t.fn.bootstrapTable.locales["ko-KR"]=t.fn.bootstrapTable.locales.ko={formatCopyRows:function(){return"행 복사"},formatPrint:function(){return"프린트"},formatLoadingMessage:function(){return"데이터를 불러오는 중입니다"},formatRecordsPerPage:function(t){return"페이지 당 ".concat(t,"개 데이터 출력")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"전체 ".concat(r,"개 중 ").concat(t,"~").concat(n,"번째 데이터 출력, (전체 ").concat(o," 행에서 필터됨)"):"전체 ".concat(r,"개 중 ").concat(t,"~").concat(n,"번째 데이터 출력,")},formatSRPaginationPreText:function(){return"이전 페이지"},formatSRPaginationPageText:function(t){return"".concat(t," 페이지로 이동")},formatSRPaginationNextText:function(){return"다음 페이지"},formatDetailPagination:function(t){return"".concat(t," 행들 표시 중")},formatClearSearch:function(){return"검색 초기화"},formatSearch:function(){return"검색"},formatNoMatches:function(){return"조회된 데이터가 없습니다."},formatPaginationSwitch:function(){return"페이지 넘버 보기/숨기기"},formatPaginationSwitchDown:function(){return"페이지 넘버 보기"},formatPaginationSwitchUp:function(){return"페이지 넘버 숨기기"},formatRefresh:function(){return"새로 고침"},formatToggleOn:function(){return"카드뷰 보기"},formatToggleOff:function(){return"카드뷰 숨기기"},formatColumns:function(){return"컬럼 필터링"},formatColumnsToggleAll:function(){return"전체 토글"},formatFullscreen:function(){return"전체 화면"},formatAllRows:function(){return"전체"},formatAutoRefresh:function(){return"자동 갱신"},formatExport:function(){return"데이터 추출"},formatJumpTo:function(){return"이동"},formatAdvancedSearch:function(){return"심화 검색"},formatAdvancedCloseButton:function(){return"닫기"},formatFilterControlSwitch:function(){return"컨트롤 보기/숨기기"},formatFilterControlSwitchHide:function(){return"컨트롤 숨기기"},formatFilterControlSwitchShow:function(){return"컨트롤 보기"}},Object.assign(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["ko-KR"]),t.fn.bootstrapTable.locales["lt-LT"]=t.fn.bootstrapTable.locales.lt={formatCopyRows:function(){return"Kopijuoti eilutes"},formatPrint:function(){return"Spausdinti"},formatLoadingMessage:function(){return"Įkeliama, palaukite"},formatRecordsPerPage:function(t){return"".concat(t," eilučių puslapyje")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Rodomos eilutės nuo ".concat(t," iki ").concat(n," iš ").concat(r," eilučių (atrinktos iš visų ").concat(o," eilučių)"):"Rodomos eilutės nuo ".concat(t," iki ").concat(n," iš ").concat(r," eilučių")},formatSRPaginationPreText:function(){return"ankstesnis puslapis"},formatSRPaginationPageText:function(t){return"į puslapį ".concat(t)},formatSRPaginationNextText:function(){return"sekantis puslapis"},formatDetailPagination:function(t){return"Rodomos ".concat(t," eilutės (-čių)")},formatClearSearch:function(){return"Išvalyti paiešką"},formatSearch:function(){return"Ieškoti"},formatNoMatches:function(){return"Atitinkančių įrašų nerasta"},formatPaginationSwitch:function(){return"Slėpti/rodyti puslapių rūšiavimą"},formatPaginationSwitchDown:function(){return"Rodyti puslapių rūšiavimą"},formatPaginationSwitchUp:function(){return"Slėpti puslapių rūšiavimą"},formatRefresh:function(){return"Atnaujinti"},formatToggleOn:function(){return"Rodyti kortelių rodinį"},formatToggleOff:function(){return"Slėpti kortelių rodinį"},formatColumns:function(){return"Stulpeliai"},formatColumnsToggleAll:function(){return"Perjungti viską"},formatFullscreen:function(){return"Visame ekrane"},formatAllRows:function(){return"Viskas"},formatAutoRefresh:function(){return"Automatinis atnaujinimas"},formatExport:function(){return"Eksportuoti duomenis"},formatJumpTo:function(){return"Eiti"},formatAdvancedSearch:function(){return"Išplėstinė paieška"},formatAdvancedCloseButton:function(){return"Uždaryti"},formatFilterControlSwitch:function(){return"Slėpti/rodyti valdiklius"},formatFilterControlSwitchHide:function(){return"Slėpti valdiklius"},formatFilterControlSwitchShow:function(){return"Rodyti valdiklius"}},Object.assign(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["lt-LT"]),t.fn.bootstrapTable.locales["ms-MY"]=t.fn.bootstrapTable.locales.ms={formatCopyRows:function(){return"Copy Rows"},formatPrint:function(){return"Print"},formatLoadingMessage:function(){return"Permintaan sedang dimuatkan. Sila tunggu sebentar"},formatRecordsPerPage:function(t){return"".concat(t," rekod setiap muka surat")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Sedang memaparkan rekod ".concat(t," hingga ").concat(n," daripada jumlah ").concat(r," rekod (filtered from ").concat(o," total rows)"):"Sedang memaparkan rekod ".concat(t," hingga ").concat(n," daripada jumlah ").concat(r," rekod")},formatSRPaginationPreText:function(){return"previous page"},formatSRPaginationPageText:function(t){return"to page ".concat(t)},formatSRPaginationNextText:function(){return"next page"},formatDetailPagination:function(t){return"Showing ".concat(t," rows")},formatClearSearch:function(){return"Clear Search"},formatSearch:function(){return"Cari"},formatNoMatches:function(){return"Tiada rekod yang menyamai permintaan"},formatPaginationSwitch:function(){return"Tunjuk/sembunyi muka surat"},formatPaginationSwitchDown:function(){return"Show pagination"},formatPaginationSwitchUp:function(){return"Hide pagination"},formatRefresh:function(){return"Muatsemula"},formatToggleOn:function(){return"Show card view"},formatToggleOff:function(){return"Hide card view"},formatColumns:function(){return"Lajur"},formatColumnsToggleAll:function(){return"Toggle all"},formatFullscreen:function(){return"Fullscreen"},formatAllRows:function(){return"Semua"},formatAutoRefresh:function(){return"Auto Refresh"},formatExport:function(){return"Export data"},formatJumpTo:function(){return"GO"},formatAdvancedSearch:function(){return"Advanced search"},formatAdvancedCloseButton:function(){return"Close"},formatFilterControlSwitch:function(){return"Hide/Show controls"},formatFilterControlSwitchHide:function(){return"Hide controls"},formatFilterControlSwitchShow:function(){return"Show controls"}},Object.assign(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["ms-MY"]),t.fn.bootstrapTable.locales["nb-NO"]=t.fn.bootstrapTable.locales.nb={formatCopyRows:function(){return"Copy Rows"},formatPrint:function(){return"Print"},formatLoadingMessage:function(){return"Oppdaterer, vennligst vent"},formatRecordsPerPage:function(t){return"".concat(t," poster pr side")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Viser ".concat(t," til ").concat(n," av ").concat(r," rekker (filtered from ").concat(o," total rows)"):"Viser ".concat(t," til ").concat(n," av ").concat(r," rekker")},formatSRPaginationPreText:function(){return"previous page"},formatSRPaginationPageText:function(t){return"to page ".concat(t)},formatSRPaginationNextText:function(){return"next page"},formatDetailPagination:function(t){return"Showing ".concat(t," rows")},formatClearSearch:function(){return"Clear Search"},formatSearch:function(){return"Søk"},formatNoMatches:function(){return"Ingen poster funnet"},formatPaginationSwitch:function(){return"Hide/Show pagination"},formatPaginationSwitchDown:function(){return"Show pagination"},formatPaginationSwitchUp:function(){return"Hide pagination"},formatRefresh:function(){return"Oppdater"},formatToggleOn:function(){return"Show card view"},formatToggleOff:function(){return"Hide card view"},formatColumns:function(){return"Kolonner"},formatColumnsToggleAll:function(){return"Toggle all"},formatFullscreen:function(){return"Fullscreen"},formatAllRows:function(){return"All"},formatAutoRefresh:function(){return"Auto Refresh"},formatExport:function(){return"Export data"},formatJumpTo:function(){return"GO"},formatAdvancedSearch:function(){return"Advanced search"},formatAdvancedCloseButton:function(){return"Close"},formatFilterControlSwitch:function(){return"Hide/Show controls"},formatFilterControlSwitchHide:function(){return"Hide controls"},formatFilterControlSwitchShow:function(){return"Show controls"}},Object.assign(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["nb-NO"]),t.fn.bootstrapTable.locales["nl-BE"]={formatCopyRows:function(){return"Copy Rows"},formatPrint:function(){return"Print"},formatLoadingMessage:function(){return"Laden, even geduld"},formatRecordsPerPage:function(t){return"".concat(t," records per pagina")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Toon ".concat(t," tot ").concat(n," van ").concat(r," record").concat(r>1?"s":""," (gefilterd van ").concat(o," records in totaal)"):"Toon ".concat(t," tot ").concat(n," van ").concat(r," record").concat(r>1?"s":"")},formatSRPaginationPreText:function(){return"vorige pagina"},formatSRPaginationPageText:function(t){return"tot pagina ".concat(t)},formatSRPaginationNextText:function(){return"volgende pagina"},formatDetailPagination:function(t){return"Toon ".concat(t," record").concat(t>1?"s":"")},formatClearSearch:function(){return"Verwijder filters"},formatSearch:function(){return"Zoeken"},formatNoMatches:function(){return"Geen resultaten gevonden"},formatPaginationSwitch:function(){return"Verberg/Toon paginering"},formatPaginationSwitchDown:function(){return"Toon paginering"},formatPaginationSwitchUp:function(){return"Verberg paginering"},formatRefresh:function(){return"Vernieuwen"},formatToggleOn:function(){return"Toon kaartweergave"},formatToggleOff:function(){return"Verberg kaartweergave"},formatColumns:function(){return"Kolommen"},formatColumnsToggleAll:function(){return"Allen omschakelen"},formatFullscreen:function(){return"Volledig scherm"},formatAllRows:function(){return"Alle"},formatAutoRefresh:function(){return"Automatisch vernieuwen"},formatExport:function(){return"Exporteer gegevens"},formatJumpTo:function(){return"GA"},formatAdvancedSearch:function(){return"Geavanceerd zoeken"},formatAdvancedCloseButton:function(){return"Sluiten"},formatFilterControlSwitch:function(){return"Verberg/Toon controls"},formatFilterControlSwitchHide:function(){return"Verberg controls"},formatFilterControlSwitchShow:function(){return"Toon controls"},formatAddLevel:function(){return"Niveau toevoegen"},formatCancel:function(){return"Annuleren"},formatColumn:function(){return"Kolom"},formatDeleteLevel:function(){return"Niveau verwijderen"},formatDuplicateAlertTitle:function(){return"Duplicaten gevonden!"},formatDuplicateAlertDescription:function(){return"Gelieve dubbele kolommen te verwijderen of wijzigen"},formatMultipleSort:function(){return"Meervoudige sortering"},formatOrder:function(){return"Volgorde"},formatSort:function(){return"Sorteren"},formatSortBy:function(){return"Sorteren op"},formatThenBy:function(){return"vervolgens"},formatSortOrders:function(){return{asc:"Oplopend",desc:"Aflopend"}}},Object.assign(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["nl-BE"]),t.fn.bootstrapTable.locales["nl-NL"]=t.fn.bootstrapTable.locales.nl={formatCopyRows:function(){return"Copy Rows"},formatPrint:function(){return"Print"},formatLoadingMessage:function(){return"Laden, even geduld"},formatRecordsPerPage:function(t){return"".concat(t," records per pagina")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Toon ".concat(t," tot ").concat(n," van ").concat(r," record").concat(r>1?"s":""," (gefilterd van ").concat(o," records in totaal)"):"Toon ".concat(t," tot ").concat(n," van ").concat(r," record").concat(r>1?"s":"")},formatSRPaginationPreText:function(){return"vorige pagina"},formatSRPaginationPageText:function(t){return"tot pagina ".concat(t)},formatSRPaginationNextText:function(){return"volgende pagina"},formatDetailPagination:function(t){return"Toon ".concat(t," record").concat(t>1?"s":"")},formatClearSearch:function(){return"Verwijder filters"},formatSearch:function(){return"Zoeken"},formatNoMatches:function(){return"Geen resultaten gevonden"},formatPaginationSwitch:function(){return"Verberg/Toon paginering"},formatPaginationSwitchDown:function(){return"Toon paginering"},formatPaginationSwitchUp:function(){return"Verberg paginering"},formatRefresh:function(){return"Vernieuwen"},formatToggleOn:function(){return"Toon kaartweergave"},formatToggleOff:function(){return"Verberg kaartweergave"},formatColumns:function(){return"Kolommen"},formatColumnsToggleAll:function(){return"Allen omschakelen"},formatFullscreen:function(){return"Volledig scherm"},formatAllRows:function(){return"Alle"},formatAutoRefresh:function(){return"Automatisch vernieuwen"},formatExport:function(){return"Exporteer gegevens"},formatJumpTo:function(){return"GA"},formatAdvancedSearch:function(){return"Geavanceerd zoeken"},formatAdvancedCloseButton:function(){return"Sluiten"},formatFilterControlSwitch:function(){return"Verberg/Toon controls"},formatFilterControlSwitchHide:function(){return"Verberg controls"},formatFilterControlSwitchShow:function(){return"Toon controls"},formatAddLevel:function(){return"Niveau toevoegen"},formatCancel:function(){return"Annuleren"},formatColumn:function(){return"Kolom"},formatDeleteLevel:function(){return"Niveau verwijderen"},formatDuplicateAlertTitle:function(){return"Duplicaten gevonden!"},formatDuplicateAlertDescription:function(){return"Gelieve dubbele kolommen te verwijderen of wijzigen"},formatMultipleSort:function(){return"Meervoudige sortering"},formatOrder:function(){return"Volgorde"},formatSort:function(){return"Sorteren"},formatSortBy:function(){return"Sorteren op"},formatThenBy:function(){return"vervolgens"},formatSortOrders:function(){return{asc:"Oplopend",desc:"Aflopend"}}},Object.assign(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["nl-NL"]),t.fn.bootstrapTable.locales["pl-PL"]=t.fn.bootstrapTable.locales.pl={formatCopyRows:function(){return"Kopiuj wiersze"},formatPrint:function(){return"Print"},formatLoadingMessage:function(){return"Ładowanie, proszę czekać"},formatRecordsPerPage:function(t){return"".concat(t," rekordów na stronę")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Wyświetlanie rekordów od ".concat(t," do ").concat(n," z ").concat(r," (filtered from ").concat(o," total rows)"):"Wyświetlanie rekordów od ".concat(t," do ").concat(n," z ").concat(r)},formatSRPaginationPreText:function(){return"poprzednia strona"},formatSRPaginationPageText:function(t){return"z ".concat(t)},formatSRPaginationNextText:function(){return"następna strona"},formatDetailPagination:function(t){return"Wyświetla ".concat(t," wierszy")},formatClearSearch:function(){return"Wyczyść wyszukiwanie"},formatSearch:function(){return"Szukaj"},formatNoMatches:function(){return"Niestety, nic nie znaleziono"},formatPaginationSwitch:function(){return"Pokaż/ukryj stronicowanie"},formatPaginationSwitchDown:function(){return"Pokaż stronicowanie"},formatPaginationSwitchUp:function(){return"Ukryj stronicowanie"},formatRefresh:function(){return"Odśwież"},formatToggleOn:function(){return"Pokaż układ karty"},formatToggleOff:function(){return"Ukryj układ karty"},formatColumns:function(){return"Kolumny"},formatColumnsToggleAll:function(){return"Zaznacz wszystko"},formatFullscreen:function(){return"Fullscreen"},formatAllRows:function(){return"Wszystkie"},formatAutoRefresh:function(){return"Auto odświeżanie"},formatExport:function(){return"Eksport danych"},formatJumpTo:function(){return"Przejdź"},formatAdvancedSearch:function(){return"Wyszukiwanie zaawansowane"},formatAdvancedCloseButton:function(){return"Zamknij"},formatFilterControlSwitch:function(){return"Pokaż/Ukryj"},formatFilterControlSwitchHide:function(){return"Pokaż"},formatFilterControlSwitchShow:function(){return"Ukryj"}},Object.assign(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["pl-PL"]),t.fn.bootstrapTable.locales["pt-BR"]=t.fn.bootstrapTable.locales.br={formatCopyRows:function(){return"Copiar linhas"},formatPrint:function(){return"Imprimir"},formatLoadingMessage:function(){return"Carregando, aguarde"},formatRecordsPerPage:function(t){return"".concat(t," registros por página")},formatShowingRows:function(t,n,r,o){var e=r>1?"s":"";return void 0!==o&&o>0&&o>r?"Exibindo ".concat(t," até ").concat(n," de ").concat(r," linha").concat(e," (filtrado de um total de ").concat(o," linha").concat(e,")"):"Exibindo ".concat(t," até ").concat(n," de ").concat(r," linha").concat(e)},formatSRPaginationPreText:function(){return"página anterior"},formatSRPaginationPageText:function(t){return"ir para a página ".concat(t)},formatSRPaginationNextText:function(){return"próxima página"},formatDetailPagination:function(t){return"Mostrando ".concat(t," linha").concat(t>1?"s":"")},formatClearSearch:function(){return"Limpar Pesquisa"},formatSearch:function(){return"Pesquisar"},formatNoMatches:function(){return"Nenhum registro encontrado"},formatPaginationSwitch:function(){return"Ocultar/Exibir paginação"},formatPaginationSwitchDown:function(){return"Mostrar Paginação"},formatPaginationSwitchUp:function(){return"Esconder Paginação"},formatRefresh:function(){return"Recarregar"},formatToggleOn:function(){return"Mostrar visualização de cartão"},formatToggleOff:function(){return"Hide card view"},formatColumns:function(){return"Colunas"},formatColumnsToggleAll:function(){return"Alternar tudo"},formatFullscreen:function(){return"Tela cheia"},formatAllRows:function(){return"Tudo"},formatAutoRefresh:function(){return"Atualização Automática"},formatExport:function(){return"Exportar dados"},formatJumpTo:function(){return"Ir"},formatAdvancedSearch:function(){return"Pesquisa Avançada"},formatAdvancedCloseButton:function(){return"Fechar"},formatFilterControlSwitch:function(){return"Ocultar/Exibir controles"},formatFilterControlSwitchHide:function(){return"Ocultar controles"},formatFilterControlSwitchShow:function(){return"Exibir controles"},formatAddLevel:function(){return"Adicionar nível"},formatCancel:function(){return"Cancelar"},formatColumn:function(){return"Coluna"},formatDeleteLevel:function(){return"Remover nível"},formatDuplicateAlertTitle:function(){return"Encontradas entradas duplicadas!"},formatDuplicateAlertDescription:function(){return"Por favor, remova ou altere as colunas duplicadas"},formatMultipleSort:function(){return"Ordenação múltipla"},formatOrder:function(){return"Ordem"},formatSort:function(){return"Ordenar"},formatSortBy:function(){return"Ordenar por"},formatThenBy:function(){return"em seguida"},formatSortOrders:function(){return{asc:"Crescente",desc:"Decrescente"}}},Object.assign(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["pt-BR"]),t.fn.bootstrapTable.locales["pt-PT"]=t.fn.bootstrapTable.locales.pt={formatCopyRows:function(){return"Copiar Linhas"},formatPrint:function(){return"Imprimir"},formatLoadingMessage:function(){return"A carregar, por favor aguarde"},formatRecordsPerPage:function(t){return"".concat(t," registos por página")},formatShowingRows:function(t,n,r,o){var e=r>1?"s":"";return void 0!==o&&o>0&&o>r?"A mostrar ".concat(t," até ").concat(n," de ").concat(r," linha").concat(e," (filtrado de um total de ").concat(o," linha").concat(e,")"):"A mostrar ".concat(t," até ").concat(n," de ").concat(r," linha").concat(e)},formatSRPaginationPreText:function(){return"página anterior"},formatSRPaginationPageText:function(t){return"ir para página ".concat(t)},formatSRPaginationNextText:function(){return"próxima página"},formatDetailPagination:function(t){return"Mostrando ".concat(t," linha").concat(t>1?"s":"")},formatClearSearch:function(){return"Limpar Pesquisa"},formatSearch:function(){return"Pesquisa"},formatNoMatches:function(){return"Nenhum registo encontrado"},formatPaginationSwitch:function(){return"Esconder/Mostrar paginação"},formatPaginationSwitchDown:function(){return"Mostrar página"},formatPaginationSwitchUp:function(){return"Esconder página"},formatRefresh:function(){return"Actualizar"},formatToggleOn:function(){return"Mostrar vista em forma de cartão"},formatToggleOff:function(){return"Esconder vista em forma de cartão"},formatColumns:function(){return"Colunas"},formatColumnsToggleAll:function(){return"Activar tudo"},formatFullscreen:function(){return"Ecrã completo"},formatAllRows:function(){return"Tudo"},formatAutoRefresh:function(){return"Actualização autmática"},formatExport:function(){return"Exportar dados"},formatJumpTo:function(){return"Avançar"},formatAdvancedSearch:function(){return"Pesquisa avançada"},formatAdvancedCloseButton:function(){return"Fechar"},formatFilterControlSwitch:function(){return"Ocultar/Exibir controles"},formatFilterControlSwitchHide:function(){return"Esconder controlos"},formatFilterControlSwitchShow:function(){return"Exibir controlos"},formatAddLevel:function(){return"Adicionar nível"},formatCancel:function(){return"Cancelar"},formatColumn:function(){return"Coluna"},formatDeleteLevel:function(){return"Remover nível"},formatDuplicateAlertTitle:function(){return"Foram encontradas entradas duplicadas!"},formatDuplicateAlertDescription:function(){return"Por favor, remova ou altere as colunas duplicadas"},formatMultipleSort:function(){return"Ordenação múltipla"},formatOrder:function(){return"Ordem"},formatSort:function(){return"Ordenar"},formatSortBy:function(){return"Ordenar por"},formatThenBy:function(){return"em seguida"},formatSortOrders:function(){return{asc:"Ascendente",desc:"Descendente"}}},Object.assign(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["pt-PT"]),t.fn.bootstrapTable.locales["ro-RO"]=t.fn.bootstrapTable.locales.ro={formatCopyRows:function(){return"Copy Rows"},formatPrint:function(){return"Print"},formatLoadingMessage:function(){return"Se incarca, va rugam asteptati"},formatRecordsPerPage:function(t){return"".concat(t," inregistrari pe pagina")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Arata de la ".concat(t," pana la ").concat(n," din ").concat(r," randuri (filtered from ").concat(o," total rows)"):"Arata de la ".concat(t," pana la ").concat(n," din ").concat(r," randuri")},formatSRPaginationPreText:function(){return"previous page"},formatSRPaginationPageText:function(t){return"to page ".concat(t)},formatSRPaginationNextText:function(){return"next page"},formatDetailPagination:function(t){return"Showing ".concat(t," rows")},formatClearSearch:function(){return"Clear Search"},formatSearch:function(){return"Cauta"},formatNoMatches:function(){return"Nu au fost gasite inregistrari"},formatPaginationSwitch:function(){return"Ascunde/Arata paginatia"},formatPaginationSwitchDown:function(){return"Show pagination"},formatPaginationSwitchUp:function(){return"Hide pagination"},formatRefresh:function(){return"Reincarca"},formatToggleOn:function(){return"Show card view"},formatToggleOff:function(){return"Hide card view"},formatColumns:function(){return"Coloane"},formatColumnsToggleAll:function(){return"Toggle all"},formatFullscreen:function(){return"Fullscreen"},formatAllRows:function(){return"Toate"},formatAutoRefresh:function(){return"Auto Refresh"},formatExport:function(){return"Export data"},formatJumpTo:function(){return"GO"},formatAdvancedSearch:function(){return"Advanced search"},formatAdvancedCloseButton:function(){return"Close"},formatFilterControlSwitch:function(){return"Hide/Show controls"},formatFilterControlSwitchHide:function(){return"Hide controls"},formatFilterControlSwitchShow:function(){return"Show controls"}},Object.assign(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["ro-RO"]),t.fn.bootstrapTable.locales["ka-GE"]=t.fn.bootstrapTable.locales.ka={formatCopyRows:function(){return"Copy Rows"},formatPrint:function(){return"Print"},formatLoadingMessage:function(){return"იტვირთება, გთხოვთ მოიცადოთ"},formatRecordsPerPage:function(t){return"".concat(t," ჩანაწერი თითო გვერდზე")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"ნაჩვენებია ".concat(t,"-დან ").concat(n,"-მდე ჩანაწერი ჯამური ").concat(r,"-დან (filtered from ").concat(o," total rows)"):"ნაჩვენებია ".concat(t,"-დან ").concat(n,"-მდე ჩანაწერი ჯამური ").concat(r,"-დან")},formatSRPaginationPreText:function(){return"previous page"},formatSRPaginationPageText:function(t){return"to page ".concat(t)},formatSRPaginationNextText:function(){return"next page"},formatDetailPagination:function(t){return"Showing ".concat(t," rows")},formatClearSearch:function(){return"Clear Search"},formatSearch:function(){return"ძებნა"},formatNoMatches:function(){return"მონაცემები არ არის"},formatPaginationSwitch:function(){return"გვერდების გადამრთველის დამალვა/გამოჩენა"},formatPaginationSwitchDown:function(){return"Show pagination"},formatPaginationSwitchUp:function(){return"Hide pagination"},formatRefresh:function(){return"განახლება"},formatToggleOn:function(){return"Show card view"},formatToggleOff:function(){return"Hide card view"},formatColumns:function(){return"სვეტები"},formatColumnsToggleAll:function(){return"Toggle all"},formatFullscreen:function(){return"Fullscreen"},formatAllRows:function(){return"All"},formatAutoRefresh:function(){return"Auto Refresh"},formatExport:function(){return"Export data"},formatJumpTo:function(){return"GO"},formatAdvancedSearch:function(){return"Advanced search"},formatAdvancedCloseButton:function(){return"Close"},formatFilterControlSwitch:function(){return"Hide/Show controls"},formatFilterControlSwitchHide:function(){return"Hide controls"},formatFilterControlSwitchShow:function(){return"Show controls"}},Object.assign(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["ka-GE"]),t.fn.bootstrapTable.locales["ru-RU"]=t.fn.bootstrapTable.locales.ru={formatCopyRows:function(){return"Скопировать строки"},formatPrint:function(){return"Печать"},formatLoadingMessage:function(){return"Пожалуйста, подождите, идёт загрузка"},formatRecordsPerPage:function(t){return"".concat(t," записей на страницу")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Записи с ".concat(t," по ").concat(n," из ").concat(r," (отфильтровано, всего на сервере ").concat(o," записей)"):"Записи с ".concat(t," по ").concat(n," из ").concat(r)},formatSRPaginationPreText:function(){return"предыдущая страница"},formatSRPaginationPageText:function(t){return"перейти к странице ".concat(t)},formatSRPaginationNextText:function(){return"следующая страница"},formatDetailPagination:function(t){return"Загружено ".concat(t," строк")},formatClearSearch:function(){return"Очистить фильтры"},formatSearch:function(){return"Поиск"},formatNoMatches:function(){return"Ничего не найдено"},formatPaginationSwitch:function(){return"Скрыть/Показать постраничную навигацию"},formatPaginationSwitchDown:function(){return"Показать постраничную навигацию"},formatPaginationSwitchUp:function(){return"Скрыть постраничную навигацию"},formatRefresh:function(){return"Обновить"},formatToggleOn:function(){return"Показать записи в виде карточек"},formatToggleOff:function(){return"Табличный режим просмотра"},formatColumns:function(){return"Колонки"},formatColumnsToggleAll:function(){return"Выбрать все"},formatFullscreen:function(){return"Полноэкранный режим"},formatAllRows:function(){return"Все"},formatAutoRefresh:function(){return"Автоматическое обновление"},formatExport:function(){return"Экспортировать данные"},formatJumpTo:function(){return"Стр."},formatAdvancedSearch:function(){return"Расширенный поиск"},formatAdvancedCloseButton:function(){return"Закрыть"},formatFilterControlSwitch:function(){return"Скрыть/Показать панель инструментов"},formatFilterControlSwitchHide:function(){return"Скрыть панель инструментов"},formatFilterControlSwitchShow:function(){return"Показать панель инструментов"}},Object.assign(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["ru-RU"]),t.fn.bootstrapTable.locales["sk-SK"]=t.fn.bootstrapTable.locales.sk={formatCopyRows:function(){return"Skopírovať riadky"},formatPrint:function(){return"Vytlačiť"},formatLoadingMessage:function(){return"Prosím čakajte"},formatRecordsPerPage:function(t){return"".concat(t," záznamov na stranu")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Zobrazená ".concat(t,". - ").concat(n,". položka z celkových ").concat(r," (filtered from ").concat(o," total rows)"):"Zobrazená ".concat(t,". - ").concat(n,". položka z celkových ").concat(r)},formatSRPaginationPreText:function(){return"Predchádzajúca strana"},formatSRPaginationPageText:function(t){return"na stranu ".concat(t)},formatSRPaginationNextText:function(){return"Nasledujúca strana"},formatDetailPagination:function(t){return"Zobrazuje sa ".concat(t," riadkov")},formatClearSearch:function(){return"Odstráň filtre"},formatSearch:function(){return"Vyhľadávanie"},formatNoMatches:function(){return"Nenájdená žiadna vyhovujúca položka"},formatPaginationSwitch:function(){return"Skry/Zobraz stránkovanie"},formatPaginationSwitchDown:function(){return"Zobraziť stránkovanie"},formatPaginationSwitchUp:function(){return"Skryť stránkovanie"},formatRefresh:function(){return"Obnoviť"},formatToggleOn:function(){return"Zobraziť kartové zobrazenie"},formatToggleOff:function(){return"skryť kartové zobrazenie"},formatColumns:function(){return"Stĺpce"},formatColumnsToggleAll:function(){return"Prepnúť všetky"},formatFullscreen:function(){return"Celá obrazovka"},formatAllRows:function(){return"Všetky"},formatAutoRefresh:function(){return"Automatické obnovenie"},formatExport:function(){return"Exportuj dáta"},formatJumpTo:function(){return"Ísť"},formatAdvancedSearch:function(){return"Pokročilé vyhľadávanie"},formatAdvancedCloseButton:function(){return"Zatvoriť"},formatFilterControlSwitch:function(){return"Zobraziť/Skryť tlačidlá"},formatFilterControlSwitchHide:function(){return"Skryť tlačidlá"},formatFilterControlSwitchShow:function(){return"Zobraziť tlačidlá"}},Object.assign(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["sk-SK"]),t.fn.bootstrapTable.locales["sl-SI"]=t.fn.bootstrapTable.locales.sl={formatCopyRows:function(){return"Kopiraj vrstice"},formatPrint:function(){return"Natisni"},formatLoadingMessage:function(){return"Prosim počakajte..."},formatRecordsPerPage:function(t){return"".concat(t," vrstic na stran")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Prikaz ".concat(t," do ").concat(n," od ").concat(r," vrstic (filtrirano od skupno ").concat(o," vrstic)"):"Prikaz ".concat(t," do ").concat(n," od ").concat(r," vrstic")},formatSRPaginationPreText:function(){return"prejšnja stran"},formatSRPaginationPageText:function(t){return"na stran ".concat(t)},formatSRPaginationNextText:function(){return"na slednja stran"},formatDetailPagination:function(t){return"Prikaz ".concat(t," vrstic")},formatClearSearch:function(){return"Počisti"},formatSearch:function(){return"Iskanje"},formatNoMatches:function(){return"Ni najdenih rezultatov"},formatPaginationSwitch:function(){return"Skrij/Pokaži oštevilčevanje strani"},formatPaginationSwitchDown:function(){return"Pokaži oštevilčevanje strani"},formatPaginationSwitchUp:function(){return"Skrij oštevilčevanje strani"},formatRefresh:function(){return"Osveži"},formatToggleOn:function(){return"Prikaži kartični pogled"},formatToggleOff:function(){return"Skrij kartični pogled"},formatColumns:function(){return"Stolpci"},formatColumnsToggleAll:function(){return"Preklopi vse"},formatFullscreen:function(){return"Celozaslonski prikaz"},formatAllRows:function(){return"Vse"},formatAutoRefresh:function(){return"Samodejna osvežitev"},formatExport:function(){return"Izvoz podatkov"},formatJumpTo:function(){return"GO"},formatAdvancedSearch:function(){return"Napredno iskanje"},formatAdvancedCloseButton:function(){return"Zapri"},formatFilterControlSwitch:function(){return"Skrij/Pokaži kontrole"},formatFilterControlSwitchHide:function(){return"Skrij kontrole"},formatFilterControlSwitchShow:function(){return"Pokaži kontrole"}},Object.assign(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["sl-SI"]),t.fn.bootstrapTable.locales["sr-Cyrl-RS"]=t.fn.bootstrapTable.locales.sr={formatCopyRows:function(){return"Copy Rows"},formatPrint:function(){return"Print"},formatLoadingMessage:function(){return"Молим сачекај"},formatRecordsPerPage:function(t){return"".concat(t," редова по страни")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Приказано ".concat(t,". - ").concat(n,". од укупног броја редова ").concat(r," (филтрирано од ").concat(o,")"):"Приказано ".concat(t,". - ").concat(n,". од укупног броја редова ").concat(r)},formatSRPaginationPreText:function(){return"претходна страна"},formatSRPaginationPageText:function(t){return"на страну ".concat(t)},formatSRPaginationNextText:function(){return"следећа страна"},formatDetailPagination:function(t){return"Приказано ".concat(t," редова")},formatClearSearch:function(){return"Обриши претрагу"},formatSearch:function(){return"Пронађи"},formatNoMatches:function(){return"Није пронађен ни један податак"},formatPaginationSwitch:function(){return"Прикажи/сакриј пагинацију"},formatPaginationSwitchDown:function(){return"Прикажи пагинацију"},formatPaginationSwitchUp:function(){return"Сакриј пагинацију"},formatRefresh:function(){return"Освежи"},formatToggleOn:function(){return"Прикажи картице"},formatToggleOff:function(){return"Сакриј картице"},formatColumns:function(){return"Колоне"},formatColumnsToggleAll:function(){return"Прикажи/сакриј све"},formatFullscreen:function(){return"Цео екран"},formatAllRows:function(){return"Све"},formatAutoRefresh:function(){return"Аутоматско освежавање"},formatExport:function(){return"Извези податке"},formatJumpTo:function(){return"Иди"},formatAdvancedSearch:function(){return"Напредна претрага"},formatAdvancedCloseButton:function(){return"Затвори"},formatFilterControlSwitch:function(){return"Hide/Show controls"},formatFilterControlSwitchHide:function(){return"Hide controls"},formatFilterControlSwitchShow:function(){return"Show controls"}},Object.assign(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["sr-Cyrl-RS"]),t.fn.bootstrapTable.locales["sr-Latn-RS"]={formatCopyRows:function(){return"Copy Rows"},formatPrint:function(){return"Print"},formatLoadingMessage:function(){return"Molim sačekaj"},formatRecordsPerPage:function(t){return"".concat(t," redova po strani")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Prikazano ".concat(t,". - ").concat(n,". od ukupnog broja redova ").concat(r," (filtrirano od ").concat(o,")"):"Prikazano ".concat(t,". - ").concat(n,". od ukupnog broja redova ").concat(r)},formatSRPaginationPreText:function(){return"prethodna strana"},formatSRPaginationPageText:function(t){return"na stranu ".concat(t)},formatSRPaginationNextText:function(){return"sledeća strana"},formatDetailPagination:function(t){return"Prikazano ".concat(t," redova")},formatClearSearch:function(){return"Obriši pretragu"},formatSearch:function(){return"Pronađi"},formatNoMatches:function(){return"Nije pronađen ni jedan podatak"},formatPaginationSwitch:function(){return"Prikaži/sakrij paginaciju"},formatPaginationSwitchDown:function(){return"Prikaži paginaciju"},formatPaginationSwitchUp:function(){return"Sakrij paginaciju"},formatRefresh:function(){return"Osveži"},formatToggleOn:function(){return"Prikaži kartice"},formatToggleOff:function(){return"Sakrij kartice"},formatColumns:function(){return"Kolone"},formatColumnsToggleAll:function(){return"Prikaži/sakrij sve"},formatFullscreen:function(){return"Ceo ekran"},formatAllRows:function(){return"Sve"},formatAutoRefresh:function(){return"Automatsko osvežavanje"},formatExport:function(){return"Izvezi podatke"},formatJumpTo:function(){return"Idi"},formatAdvancedSearch:function(){return"Napredna pretraga"},formatAdvancedCloseButton:function(){return"Zatvori"},formatFilterControlSwitch:function(){return"Hide/Show controls"},formatFilterControlSwitchHide:function(){return"Hide controls"},formatFilterControlSwitchShow:function(){return"Show controls"}},Object.assign(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["sr-Latn-RS"]),t.fn.bootstrapTable.locales["sv-SE"]=t.fn.bootstrapTable.locales.sv={formatCopyRows:function(){return"Copy Rows"},formatPrint:function(){return"Print"},formatLoadingMessage:function(){return"Laddar, vänligen vänta"},formatRecordsPerPage:function(t){return"".concat(t," rader per sida")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Visa ".concat(t," till ").concat(n," av ").concat(r," rader (filtered from ").concat(o," total rows)"):"Visa ".concat(t," till ").concat(n," av ").concat(r," rader")},formatSRPaginationPreText:function(){return"previous page"},formatSRPaginationPageText:function(t){return"to page ".concat(t)},formatSRPaginationNextText:function(){return"next page"},formatDetailPagination:function(t){return"Showing ".concat(t," rows")},formatClearSearch:function(){return"Clear Search"},formatSearch:function(){return"Sök"},formatNoMatches:function(){return"Inga matchande resultat funna."},formatPaginationSwitch:function(){return"Hide/Show pagination"},formatPaginationSwitchDown:function(){return"Show pagination"},formatPaginationSwitchUp:function(){return"Hide pagination"},formatRefresh:function(){return"Uppdatera"},formatToggleOn:function(){return"Show card view"},formatToggleOff:function(){return"Hide card view"},formatColumns:function(){return"kolumn"},formatColumnsToggleAll:function(){return"Toggle all"},formatFullscreen:function(){return"Fullscreen"},formatAllRows:function(){return"All"},formatAutoRefresh:function(){return"Auto Refresh"},formatExport:function(){return"Export data"},formatJumpTo:function(){return"GO"},formatAdvancedSearch:function(){return"Advanced search"},formatAdvancedCloseButton:function(){return"Close"},formatFilterControlSwitch:function(){return"Hide/Show controls"},formatFilterControlSwitchHide:function(){return"Hide controls"},formatFilterControlSwitchShow:function(){return"Show controls"}},Object.assign(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["sv-SE"]),t.fn.bootstrapTable.locales["th-TH"]=t.fn.bootstrapTable.locales.th={formatCopyRows:function(){return"Copy Rows"},formatPrint:function(){return"Print"},formatLoadingMessage:function(){return"กำลังโหลดข้อมูล, กรุณารอสักครู่"},formatRecordsPerPage:function(t){return"".concat(t," รายการต่อหน้า")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"รายการที่ ".concat(t," ถึง ").concat(n," จากทั้งหมด ").concat(r," รายการ (filtered from ").concat(o," total rows)"):"รายการที่ ".concat(t," ถึง ").concat(n," จากทั้งหมด ").concat(r," รายการ")},formatSRPaginationPreText:function(){return"previous page"},formatSRPaginationPageText:function(t){return"to page ".concat(t)},formatSRPaginationNextText:function(){return"next page"},formatDetailPagination:function(t){return"Showing ".concat(t," rows")},formatClearSearch:function(){return"Clear Search"},formatSearch:function(){return"ค้นหา"},formatNoMatches:function(){return"ไม่พบรายการที่ค้นหา !"},formatPaginationSwitch:function(){return"Hide/Show pagination"},formatPaginationSwitchDown:function(){return"Show pagination"},formatPaginationSwitchUp:function(){return"Hide pagination"},formatRefresh:function(){return"รีเฟรส"},formatToggleOn:function(){return"Show card view"},formatToggleOff:function(){return"Hide card view"},formatColumns:function(){return"คอลัมน์"},formatColumnsToggleAll:function(){return"Toggle all"},formatFullscreen:function(){return"Fullscreen"},formatAllRows:function(){return"All"},formatAutoRefresh:function(){return"Auto Refresh"},formatExport:function(){return"Export data"},formatJumpTo:function(){return"GO"},formatAdvancedSearch:function(){return"Advanced search"},formatAdvancedCloseButton:function(){return"Close"},formatFilterControlSwitch:function(){return"Hide/Show controls"},formatFilterControlSwitchHide:function(){return"Hide controls"},formatFilterControlSwitchShow:function(){return"Show controls"}},Object.assign(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["th-TH"]),t.fn.bootstrapTable.locales["uk-UA"]=t.fn.bootstrapTable.locales.uk={formatCopyRows:function(){return"Скопіювати рядки"},formatPrint:function(){return"Друк"},formatLoadingMessage:function(){return"Завантаження, будь ласка, зачекайте"},formatRecordsPerPage:function(t){return"".concat(t," рядків на сторінку")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Відображено рядки з ".concat(t," по ").concat(n," з ").concat(r," загалом (відфільтровано з ").concat(o," рядків)"):"Відображено рядки з ".concat(t," по ").concat(n," з ").concat(r," загалом")},formatSRPaginationPreText:function(){return"попередня сторінка"},formatSRPaginationPageText:function(t){return"до сторінки ".concat(t)},formatSRPaginationNextText:function(){return"наступна сторінка"},formatDetailPagination:function(t){return"Відображено ".concat(t," рядків")},formatClearSearch:function(){return"Скинути фільтри"},formatSearch:function(){return"Пошук"},formatNoMatches:function(){return"Не знайдено жодного запису"},formatPaginationSwitch:function(){return"Сховати/Відобразити пагінацію"},formatPaginationSwitchDown:function(){return"Відобразити пагінацію"},formatPaginationSwitchUp:function(){return"Сховати пагінацію"},formatRefresh:function(){return"Оновити"},formatToggleOn:function(){return"Відобразити у форматі карток"},formatToggleOff:function(){return"Вимкнути формат карток"},formatColumns:function(){return"Стовпці"},formatColumnsToggleAll:function(){return"Переключити усі"},formatFullscreen:function(){return"Повноекранний режим"},formatAllRows:function(){return"Усі"},formatAutoRefresh:function(){return"Автооновлення"},formatExport:function(){return"Експортувати дані"},formatJumpTo:function(){return"Швидкий перехід до"},formatAdvancedSearch:function(){return"Розширений пошук"},formatAdvancedCloseButton:function(){return"Закрити"},formatFilterControlSwitch:function(){return"Сховати/Відобразити елементи керування"},formatFilterControlSwitchHide:function(){return"Сховати елементи керування"},formatFilterControlSwitchShow:function(){return"Відобразити елементи керування"}},Object.assign(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["uk-UA"]),t.fn.bootstrapTable.locales["tr-TR"]=t.fn.bootstrapTable.locales.tr={formatCopyRows:function(){return"Satırları Kopyala"},formatPrint:function(){return"Yazdır"},formatLoadingMessage:function(){return"Yükleniyor, lütfen bekleyin"},formatRecordsPerPage:function(t){return"Sayfa başına ".concat(t," kayıt.")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"".concat(r," kayıttan ").concat(t,"-").concat(n," arası gösteriliyor (").concat(o," toplam satır filtrelendi)."):"".concat(r," kayıttan ").concat(t,"-").concat(n," arası gösteriliyor.")},formatSRPaginationPreText:function(){return"önceki sayfa"},formatSRPaginationPageText:function(t){return"sayfa ".concat(t)},formatSRPaginationNextText:function(){return"sonraki sayfa"},formatDetailPagination:function(t){return"".concat(t," satır gösteriliyor")},formatClearSearch:function(){return"Aramayı Temizle"},formatSearch:function(){return"Ara"},formatNoMatches:function(){return"Eşleşen kayıt bulunamadı."},formatPaginationSwitch:function(){return"Sayfalamayı Gizle/Göster"},formatPaginationSwitchDown:function(){return"Sayfalamayı Göster"},formatPaginationSwitchUp:function(){return"Sayfalamayı Gizle"},formatRefresh:function(){return"Yenile"},formatToggleOn:function(){return"Kart Görünümünü Göster"},formatToggleOff:function(){return"Kart Görünümünü Gizle"},formatColumns:function(){return"Sütunlar"},formatColumnsToggleAll:function(){return"Tümünü Kapat"},formatFullscreen:function(){return"Tam Ekran"},formatAllRows:function(){return"Tüm Satırlar"},formatAutoRefresh:function(){return"Otomatik Yenileme"},formatExport:function(){return"Verileri Dışa Aktar"},formatJumpTo:function(){return"Git"},formatAdvancedSearch:function(){return"Gelişmiş Arama"},formatAdvancedCloseButton:function(){return"Kapat"},formatFilterControlSwitch:function(){return"Kontrolleri Gizle/Göster"},formatFilterControlSwitchHide:function(){return"Kontrolleri Gizle"},formatFilterControlSwitchShow:function(){return"Kontrolleri Göster"}},Object.assign(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["tr-TR"]),t.fn.bootstrapTable.locales["ur-PK"]=t.fn.bootstrapTable.locales.ur={formatCopyRows:function(){return"Copy Rows"},formatPrint:function(){return"Print"},formatLoadingMessage:function(){return"براۓ مہربانی انتظار کیجئے"},formatRecordsPerPage:function(t){return"".concat(t," ریکارڈز فی صفہ ")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"دیکھیں ".concat(t," سے ").concat(n," کے ").concat(r,"ریکارڈز (filtered from ").concat(o," total rows)"):"دیکھیں ".concat(t," سے ").concat(n," کے ").concat(r,"ریکارڈز")},formatSRPaginationPreText:function(){return"previous page"},formatSRPaginationPageText:function(t){return"to page ".concat(t)},formatSRPaginationNextText:function(){return"next page"},formatDetailPagination:function(t){return"Showing ".concat(t," rows")},formatClearSearch:function(){return"Clear Search"},formatSearch:function(){return"تلاش"},formatNoMatches:function(){return"کوئی ریکارڈ نہیں ملا"},formatPaginationSwitch:function(){return"Hide/Show pagination"},formatPaginationSwitchDown:function(){return"Show pagination"},formatPaginationSwitchUp:function(){return"Hide pagination"},formatRefresh:function(){return"تازہ کریں"},formatToggleOn:function(){return"Show card view"},formatToggleOff:function(){return"Hide card view"},formatColumns:function(){return"کالم"},formatColumnsToggleAll:function(){return"Toggle all"},formatFullscreen:function(){return"Fullscreen"},formatAllRows:function(){return"All"},formatAutoRefresh:function(){return"Auto Refresh"},formatExport:function(){return"Export data"},formatJumpTo:function(){return"GO"},formatAdvancedSearch:function(){return"Advanced search"},formatAdvancedCloseButton:function(){return"Close"},formatFilterControlSwitch:function(){return"Hide/Show controls"},formatFilterControlSwitchHide:function(){return"Hide controls"},formatFilterControlSwitchShow:function(){return"Show controls"}},Object.assign(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["ur-PK"]),t.fn.bootstrapTable.locales["uz-Latn-UZ"]=t.fn.bootstrapTable.locales.uz={formatCopyRows:function(){return"Copy Rows"},formatPrint:function(){return"Print"},formatLoadingMessage:function(){return"Yuklanyapti, iltimos kuting"},formatRecordsPerPage:function(t){return"".concat(t," qator har sahifada")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Ko'rsatypati ".concat(t," dan ").concat(n," gacha ").concat(r," qatorlarni (filtered from ").concat(o," total rows)"):"Ko'rsatypati ".concat(t," dan ").concat(n," gacha ").concat(r," qatorlarni")},formatSRPaginationPreText:function(){return"previous page"},formatSRPaginationPageText:function(t){return"to page ".concat(t)},formatSRPaginationNextText:function(){return"next page"},formatDetailPagination:function(t){return"Showing ".concat(t," rows")},formatClearSearch:function(){return"Filtrlarni tozalash"},formatSearch:function(){return"Qidirish"},formatNoMatches:function(){return"Hech narsa topilmadi"},formatPaginationSwitch:function(){return"Sahifalashni yashirish/ko'rsatish"},formatPaginationSwitchDown:function(){return"Show pagination"},formatPaginationSwitchUp:function(){return"Hide pagination"},formatRefresh:function(){return"Yangilash"},formatToggleOn:function(){return"Show card view"},formatToggleOff:function(){return"Hide card view"},formatColumns:function(){return"Ustunlar"},formatColumnsToggleAll:function(){return"Toggle all"},formatFullscreen:function(){return"Fullscreen"},formatAllRows:function(){return"Hammasi"},formatAutoRefresh:function(){return"Auto Refresh"},formatExport:function(){return"Eksport"},formatJumpTo:function(){return"GO"},formatAdvancedSearch:function(){return"Advanced search"},formatAdvancedCloseButton:function(){return"Close"},formatFilterControlSwitch:function(){return"Hide/Show controls"},formatFilterControlSwitchHide:function(){return"Hide controls"},formatFilterControlSwitchShow:function(){return"Show controls"}},Object.assign(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["uz-Latn-UZ"]),t.fn.bootstrapTable.locales["vi-VN"]=t.fn.bootstrapTable.locales.vi={formatCopyRows:function(){return"Sao chép hàng"},formatPrint:function(){return"In"},formatLoadingMessage:function(){return"Đang tải"},formatRecordsPerPage:function(t){return"".concat(t," bản ghi mỗi trang")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Hiển thị từ trang ".concat(t," đến ").concat(n," của ").concat(r," bản ghi (được lọc từ tổng ").concat(o," hàng)"):"Hiển thị từ trang ".concat(t," đến ").concat(n," của ").concat(r," bản ghi")},formatSRPaginationPreText:function(){return"trang trước"},formatSRPaginationPageText:function(t){return"đến trang ".concat(t)},formatSRPaginationNextText:function(){return"trang sau"},formatDetailPagination:function(t){return"Đang hiện ".concat(t," hàng")},formatClearSearch:function(){return"Xoá tìm kiếm"},formatSearch:function(){return"Tìm kiếm"},formatNoMatches:function(){return"Không có dữ liệu"},formatPaginationSwitch:function(){return"Ẩn/Hiện phân trang"},formatPaginationSwitchDown:function(){return"Hiện phân trang"},formatPaginationSwitchUp:function(){return"Ẩn phân trang"},formatRefresh:function(){return"Làm mới"},formatToggleOn:function(){return"Hiển thị các thẻ"},formatToggleOff:function(){return"Ẩn các thẻ"},formatColumns:function(){return"Cột"},formatColumnsToggleAll:function(){return"Hiện tất cả"},formatFullscreen:function(){return"Toàn màn hình"},formatAllRows:function(){return"Tất cả"},formatAutoRefresh:function(){return"Tự động làm mới"},formatExport:function(){return"Xuất dữ liệu"},formatJumpTo:function(){return"Đến"},formatAdvancedSearch:function(){return"Tìm kiếm nâng cao"},formatAdvancedCloseButton:function(){return"Đóng"},formatFilterControlSwitch:function(){return"Ẩn/Hiện điều khiển"},formatFilterControlSwitchHide:function(){return"Ẩn điều khiển"},formatFilterControlSwitchShow:function(){return"Hiện điều khiển"}},Object.assign(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["vi-VN"]),t.fn.bootstrapTable.locales["zh-CN"]=t.fn.bootstrapTable.locales.zh={formatCopyRows:function(){return"复制行"},formatPrint:function(){return"打印"},formatLoadingMessage:function(){return"正在努力地加载数据中,请稍候"},formatRecordsPerPage:function(t){return"每页显示 ".concat(t," 条记录")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"显示第 ".concat(t," 到第 ").concat(n," 条记录,总共 ").concat(r," 条记录(从 ").concat(o," 总记录中过滤)"):"显示第 ".concat(t," 到第 ").concat(n," 条记录,总共 ").concat(r," 条记录")},formatSRPaginationPreText:function(){return"上一页"},formatSRPaginationPageText:function(t){return"第".concat(t,"页")},formatSRPaginationNextText:function(){return"下一页"},formatDetailPagination:function(t){return"总共 ".concat(t," 条记录")},formatClearSearch:function(){return"清空过滤"},formatSearch:function(){return"搜索"},formatNoMatches:function(){return"没有找到匹配的记录"},formatPaginationSwitch:function(){return"隐藏/显示分页"},formatPaginationSwitchDown:function(){return"显示分页"},formatPaginationSwitchUp:function(){return"隐藏分页"},formatRefresh:function(){return"刷新"},formatToggleOn:function(){return"显示卡片视图"},formatToggleOff:function(){return"隐藏卡片视图"},formatColumns:function(){return"列"},formatColumnsToggleAll:function(){return"切换所有"},formatFullscreen:function(){return"全屏"},formatAllRows:function(){return"所有"},formatAutoRefresh:function(){return"自动刷新"},formatExport:function(){return"导出数据"},formatJumpTo:function(){return"跳转"},formatAdvancedSearch:function(){return"高级搜索"},formatAdvancedCloseButton:function(){return"关闭"},formatFilterControlSwitch:function(){return"隐藏/显示过滤控制"},formatFilterControlSwitchHide:function(){return"隐藏过滤控制"},formatFilterControlSwitchShow:function(){return"显示过滤控制"}},Object.assign(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["zh-CN"]),t.fn.bootstrapTable.locales["zh-TW"]={formatCopyRows:function(){return"複製行"},formatPrint:function(){return"列印"},formatLoadingMessage:function(){return"正在努力地載入資料,請稍候"},formatRecordsPerPage:function(t){return"每頁顯示 ".concat(t," 項記錄")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"顯示第 ".concat(t," 到第 ").concat(n," 項記錄,總共 ").concat(r," 項記錄(從 ").concat(o," 總記錄中過濾)"):"顯示第 ".concat(t," 到第 ").concat(n," 項記錄,總共 ").concat(r," 項記錄")},formatSRPaginationPreText:function(){return"上一頁"},formatSRPaginationPageText:function(t){return"第".concat(t,"頁")},formatSRPaginationNextText:function(){return"下一頁"},formatDetailPagination:function(t){return"總共 ".concat(t," 項記錄")},formatClearSearch:function(){return"清空過濾"},formatSearch:function(){return"搜尋"},formatNoMatches:function(){return"沒有找到符合的結果"},formatPaginationSwitch:function(){return"隱藏/顯示分頁"},formatPaginationSwitchDown:function(){return"顯示分頁"},formatPaginationSwitchUp:function(){return"隱藏分頁"},formatRefresh:function(){return"重新整理"},formatToggleOn:function(){return"顯示卡片視圖"},formatToggleOff:function(){return"隱藏卡片視圖"},formatColumns:function(){return"列"},formatColumnsToggleAll:function(){return"切換所有"},formatFullscreen:function(){return"全屏"},formatAllRows:function(){return"所有"},formatAutoRefresh:function(){return"自動刷新"},formatExport:function(){return"導出數據"},formatJumpTo:function(){return"跳轉"},formatAdvancedSearch:function(){return"高級搜尋"},formatAdvancedCloseButton:function(){return"關閉"},formatFilterControlSwitch:function(){return"隱藏/顯示過濾控制"},formatFilterControlSwitchHide:function(){return"隱藏過濾控制"},formatFilterControlSwitchShow:function(){return"顯示過濾控制"}},Object.assign(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["zh-TW"]),t.fn.bootstrapTable.locales["es-AR"]={formatCopyRows:function(){return"Copiar Filas"},formatPrint:function(){return"Imprimir"},formatLoadingMessage:function(){return"Cargando, espere por favor"},formatRecordsPerPage:function(t){return"".concat(t," registros por página")},formatShowingRows:function(t,n,r,o){return void 0!==o&&o>0&&o>r?"Mostrando desde ".concat(t," a ").concat(n," de ").concat(r," filas (filtrado de ").concat(o," columnas totales)"):"Mostrando desde ".concat(t," a ").concat(n," de ").concat(r," filas")},formatSRPaginationPreText:function(){return"página anterior"},formatSRPaginationPageText:function(t){return"a la página ".concat(t)},formatSRPaginationNextText:function(){return"siguiente página"},formatDetailPagination:function(t){return"Mostrando ".concat(t," columnas")},formatClearSearch:function(){return"Limpiar búsqueda"},formatSearch:function(){return"Buscar"},formatNoMatches:function(){return"No se encontraron registros"},formatPaginationSwitch:function(){return"Ocultar/Mostrar paginación"},formatPaginationSwitchDown:function(){return"Mostrar paginación"},formatPaginationSwitchUp:function(){return"Ocultar paginación"},formatRefresh:function(){return"Recargar"},formatToggleOn:function(){return"Mostrar vista de carta"},formatToggleOff:function(){return"Ocultar vista de carta"},formatColumns:function(){return"Columnas"},formatColumnsToggleAll:function(){return"Cambiar todo"},formatFullscreen:function(){return"Pantalla completa"},formatAllRows:function(){return"Todo"},formatAutoRefresh:function(){return"Auto Recargar"},formatExport:function(){return"Exportar datos"},formatJumpTo:function(){return"Ir"},formatAdvancedSearch:function(){return"Búsqueda avanzada"},formatAdvancedCloseButton:function(){return"Cerrar"},formatFilterControlSwitch:function(){return"Ocultar/Mostrar controles"},formatFilterControlSwitchHide:function(){return"Ocultar controles"},formatFilterControlSwitchShow:function(){return"Mostrar controles"}},Object.assign(t.fn.bootstrapTable.defaults,t.fn.bootstrapTable.locales["es-AR"])})); diff --git a/apps/nps/0.29.21/web/static/js/bootstrap-table.min.js b/apps/nps/0.29.21/web/static/js/bootstrap-table.min.js new file mode 100755 index 0000000..0e4d37b --- /dev/null +++ b/apps/nps/0.29.21/web/static/js/bootstrap-table.min.js @@ -0,0 +1,10 @@ +/** + * bootstrap-table - An extended table to integration with some of the most widely used CSS frameworks. (Supports Bootstrap, Semantic UI, Bulma, Material Design, Foundation) + * + * @version v1.24.1 + * @homepage https://bootstrap-table.com + * @author wenzhixin (http://wenzhixin.net.cn/) + * @license MIT + */ + +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("jquery")):"function"==typeof define&&define.amd?define(["jquery"],e):(t="undefined"!=typeof globalThis?globalThis:t||self).BootstrapTable=e(t.jQuery)}(this,(function(t){"use strict";function e(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=Array(e);n=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function(t){throw t},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,s=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){s=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(s)throw o}}}}function o(t,e,n){return(e=u(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function a(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,i)}return n}function s(t){for(var e=1;e0&&t[0]<4?1:+(t[0]+t[1])),!e&&i&&(!(t=i.match(/Edge\/(\d+)/))||t[1]>=74)&&(t=i.match(/Chrome\/(\d+)/))&&(e=+t[1]),nt=e}function jt(){if(ot)return rt;ot=1;var t=Et(),e=P(),n=b().String;return rt=!!Object.getOwnPropertySymbols&&!e((function(){var e=Symbol("symbol detection");return!n(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&t&&t<41}))}function Nt(){if(st)return at;st=1;var t=jt();return at=t&&!Symbol.sham&&"symbol"==typeof Symbol.iterator}function Ft(){if(ct)return lt;ct=1;var t=At(),e=Pt(),n=$t(),i=Nt(),r=Object;return lt=i?function(t){return"symbol"==typeof t}:function(i){var o=t("Symbol");return e(o)&&n(o.prototype,r(i))}}function Dt(){if(ht)return ut;ht=1;var t=String;return ut=function(e){try{return t(e)}catch(t){return"Object"}}}function Lt(){if(dt)return ft;dt=1;var t=Pt(),e=Dt(),n=TypeError;return ft=function(i){if(t(i))return i;throw new n(e(i)+" is not a function")}}function _t(){if(gt)return pt;gt=1;var t=Lt(),e=kt();return pt=function(n,i){var r=n[i];return e(r)?void 0:t(r)}}function Vt(){if(bt)return vt;bt=1;var t=$(),e=Pt(),n=It(),i=TypeError;return vt=function(r,o){var a,s;if("string"===o&&e(a=r.toString)&&!n(s=t(a,r)))return s;if(e(a=r.valueOf)&&!n(s=t(a,r)))return s;if("string"!==o&&e(a=r.toString)&&!n(s=t(a,r)))return s;throw new i("Can't convert object to primitive value")}}var Bt,Ht,Mt,Ut,zt,qt,Wt,Gt,Kt,Jt,Yt,Qt,Xt,Zt,te,ee,ne,ie,re,oe,ae,se,le,ce,ue={exports:{}};function he(){return Ht?Bt:(Ht=1,Bt=!1)}function fe(){if(Ut)return Mt;Ut=1;var t=b(),e=Object.defineProperty;return Mt=function(n,i){try{e(t,n,{value:i,configurable:!0,writable:!0})}catch(e){t[n]=i}return i}}function de(){if(zt)return ue.exports;zt=1;var t=he(),e=b(),n=fe(),i="__core-js_shared__",r=ue.exports=e[i]||n(i,{});return(r.versions||(r.versions=[])).push({version:"3.39.0",mode:t?"pure":"global",copyright:"© 2014-2024 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.39.0/LICENSE",source:"https://github.com/zloirock/core-js"}),ue.exports}function pe(){if(Wt)return qt;Wt=1;var t=de();return qt=function(e,n){return t[e]||(t[e]=n||{})}}function ge(){if(Kt)return Gt;Kt=1;var t=Tt(),e=Object;return Gt=function(n){return e(t(n))}}function ve(){if(Yt)return Jt;Yt=1;var t=St(),e=ge(),n=t({}.hasOwnProperty);return Jt=Object.hasOwn||function(t,i){return n(e(t),i)}}function be(){if(Xt)return Qt;Xt=1;var t=St(),e=0,n=Math.random(),i=t(1..toString);return Qt=function(t){return"Symbol("+(void 0===t?"":t)+")_"+i(++e+n,36)}}function me(){if(te)return Zt;te=1;var t=b(),e=pe(),n=ve(),i=be(),r=jt(),o=Nt(),a=t.Symbol,s=e("wks"),l=o?a.for||a:a&&a.withoutSetter||i;return Zt=function(t){return n(s,t)||(s[t]=r&&n(a,t)?a[t]:l("Symbol."+t)),s[t]}}function ye(){if(ne)return ee;ne=1;var t=$(),e=It(),n=Ft(),i=_t(),r=Vt(),o=me(),a=TypeError,s=o("toPrimitive");return ee=function(o,l){if(!e(o)||n(o))return o;var c,u=i(o,s);if(u){if(void 0===l&&(l="default"),c=t(u,o,l),!e(c)||n(c))return c;throw new a("Can't convert object to primitive value")}return void 0===l&&(l="number"),r(o,l)}}function we(){if(re)return ie;re=1;var t=ye(),e=Ft();return ie=function(n){var i=t(n,"string");return e(i)?i:i+""}}function Se(){if(ae)return oe;ae=1;var t=b(),e=It(),n=t.document,i=e(n)&&e(n.createElement);return oe=function(t){return i?n.createElement(t):{}}}function xe(){if(le)return se;le=1;var t=I(),e=P(),n=Se();return se=!t&&!e((function(){return 7!==Object.defineProperty(n("div"),"a",{get:function(){return 7}}).a}))}function Oe(){if(ce)return C;ce=1;var t=I(),e=$(),n=yt(),i=wt(),r=Ct(),o=we(),a=ve(),s=xe(),l=Object.getOwnPropertyDescriptor;return C.f=t?l:function(t,c){if(t=r(t),c=o(c),s)try{return l(t,c)}catch(t){}if(a(t,c))return i(!e(n.f,t,c),t[c])},C}var ke,Te,Ce,Pe,Ie,Ae,$e,Re={};function Ee(){if(Te)return ke;Te=1;var t=I(),e=P();return ke=t&&e((function(){return 42!==Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype}))}function je(){if(Pe)return Ce;Pe=1;var t=It(),e=String,n=TypeError;return Ce=function(i){if(t(i))return i;throw new n(e(i)+" is not an object")}}function Ne(){if(Ie)return Re;Ie=1;var t=I(),e=xe(),n=Ee(),i=je(),r=we(),o=TypeError,a=Object.defineProperty,s=Object.getOwnPropertyDescriptor,l="enumerable",c="configurable",u="writable";return Re.f=t?n?function(t,e,n){if(i(t),e=r(e),i(n),"function"==typeof t&&"prototype"===e&&"value"in n&&u in n&&!n[u]){var o=s(t,e);o&&o[u]&&(t[e]=n.value,n={configurable:c in n?n[c]:o[c],enumerable:l in n?n[l]:o[l],writable:!1})}return a(t,e,n)}:a:function(t,n,s){if(i(t),n=r(n),i(s),e)try{return a(t,n,s)}catch(t){}if("get"in s||"set"in s)throw new o("Accessors not supported");return"value"in s&&(t[n]=s.value),t},Re}function Fe(){if($e)return Ae;$e=1;var t=I(),e=Ne(),n=wt();return Ae=t?function(t,i,r){return e.f(t,i,n(1,r))}:function(t,e,n){return t[e]=n,t}}var De,Le,_e,Ve,Be,He,Me,Ue,ze,qe,We,Ge,Ke,Je,Ye,Qe={exports:{}};function Xe(){if(Le)return De;Le=1;var t=I(),e=ve(),n=Function.prototype,i=t&&Object.getOwnPropertyDescriptor,r=e(n,"name"),o=r&&"something"===function(){}.name,a=r&&(!t||t&&i(n,"name").configurable);return De={EXISTS:r,PROPER:o,CONFIGURABLE:a}}function Ze(){if(Ve)return _e;Ve=1;var t=St(),e=Pt(),n=de(),i=t(Function.toString);return e(n.inspectSource)||(n.inspectSource=function(t){return i(t)}),_e=n.inspectSource}function tn(){if(Ue)return Me;Ue=1;var t=pe(),e=be(),n=t("keys");return Me=function(t){return n[t]||(n[t]=e(t))}}function en(){return qe?ze:(qe=1,ze={})}function nn(){if(Ge)return We;Ge=1;var t,e,n,i=function(){if(He)return Be;He=1;var t=b(),e=Pt(),n=t.WeakMap;return Be=e(n)&&/native code/.test(String(n))}(),r=b(),o=It(),a=Fe(),s=ve(),l=de(),c=tn(),u=en(),h="Object already initialized",f=r.TypeError,d=r.WeakMap;if(i||l.state){var p=l.state||(l.state=new d);p.get=p.get,p.has=p.has,p.set=p.set,t=function(t,e){if(p.has(t))throw new f(h);return e.facade=t,p.set(t,e),e},e=function(t){return p.get(t)||{}},n=function(t){return p.has(t)}}else{var g=c("state");u[g]=!0,t=function(t,e){if(s(t,g))throw new f(h);return e.facade=t,a(t,g,e),e},e=function(t){return s(t,g)?t[g]:{}},n=function(t){return s(t,g)}}return We={set:t,get:e,has:n,enforce:function(i){return n(i)?e(i):t(i,{})},getterFor:function(t){return function(n){var i;if(!o(n)||(i=e(n)).type!==t)throw new f("Incompatible receiver, "+t+" required");return i}}}}function rn(){if(Ke)return Qe.exports;Ke=1;var t=St(),e=P(),n=Pt(),i=ve(),r=I(),o=Xe().CONFIGURABLE,a=Ze(),s=nn(),l=s.enforce,c=s.get,u=String,h=Object.defineProperty,f=t("".slice),d=t("".replace),p=t([].join),g=r&&!e((function(){return 8!==h((function(){}),"length",{value:8}).length})),v=String(String).split("String"),b=Qe.exports=function(t,e,n){"Symbol("===f(u(e),0,7)&&(e="["+d(u(e),/^Symbol\(([^)]*)\).*$/,"$1")+"]"),n&&n.getter&&(e="get "+e),n&&n.setter&&(e="set "+e),(!i(t,"name")||o&&t.name!==e)&&(r?h(t,"name",{value:e,configurable:!0}):t.name=e),g&&n&&i(n,"arity")&&t.length!==n.arity&&h(t,"length",{value:n.arity});try{n&&i(n,"constructor")&&n.constructor?r&&h(t,"prototype",{writable:!1}):t.prototype&&(t.prototype=void 0)}catch(t){}var a=l(t);return i(a,"source")||(a.source=p(v,"string"==typeof e?e:"")),t};return Function.prototype.toString=b((function(){return n(this)&&c(this).source||a(this)}),"toString"),Qe.exports}function on(){if(Ye)return Je;Ye=1;var t=Pt(),e=Ne(),n=rn(),i=fe();return Je=function(r,o,a,s){s||(s={});var l=s.enumerable,c=void 0!==s.name?s.name:o;if(t(a)&&n(a,c,s),s.global)l?r[o]=a:i(o,a);else{try{s.unsafe?r[o]&&(l=!0):delete r[o]}catch(t){}l?r[o]=a:e.f(r,o,{value:a,enumerable:!1,configurable:!s.nonConfigurable,writable:!s.nonWritable})}return r}}var an,sn,ln,cn,un,hn,fn,dn,pn,gn,vn,bn,mn,yn,wn,Sn,xn,On={};function kn(){if(cn)return ln;cn=1;var t=function(){if(sn)return an;sn=1;var t=Math.ceil,e=Math.floor;return an=Math.trunc||function(n){var i=+n;return(i>0?e:t)(i)}}();return ln=function(e){var n=+e;return n!=n||0===n?0:t(n)}}function Tn(){if(hn)return un;hn=1;var t=kn(),e=Math.max,n=Math.min;return un=function(i,r){var o=t(i);return o<0?e(o+r,0):n(o,r)}}function Cn(){if(dn)return fn;dn=1;var t=kn(),e=Math.min;return fn=function(n){var i=t(n);return i>0?e(i,9007199254740991):0}}function Pn(){if(gn)return pn;gn=1;var t=Cn();return pn=function(e){return t(e.length)}}function In(){if(bn)return vn;bn=1;var t=Ct(),e=Tn(),n=Pn(),i=function(i){return function(r,o,a){var s=t(r),l=n(s);if(0===l)return!i&&-1;var c,u=e(a,l);if(i&&o!=o){for(;l>u;)if((c=s[u++])!=c)return!0}else for(;l>u;u++)if((i||u in s)&&s[u]===o)return i||u||0;return!i&&-1}};return vn={includes:i(!0),indexOf:i(!1)}}function An(){if(yn)return mn;yn=1;var t=St(),e=ve(),n=Ct(),i=In().indexOf,r=en(),o=t([].push);return mn=function(t,a){var s,l=n(t),c=0,u=[];for(s in l)!e(r,s)&&e(l,s)&&o(u,s);for(;a.length>c;)e(l,s=a[c++])&&(~i(u,s)||o(u,s));return u}}function $n(){return Sn?wn:(Sn=1,wn=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"])}function Rn(){if(xn)return On;xn=1;var t=An(),e=$n().concat("length","prototype");return On.f=Object.getOwnPropertyNames||function(n){return t(n,e)},On}var En,jn,Nn,Fn,Dn,Ln,_n,Vn,Bn,Hn,Mn,Un,zn,qn,Wn,Gn,Kn,Jn,Yn,Qn,Xn,Zn,ti,ei,ni,ii,ri,oi,ai={};function si(){return En||(En=1,ai.f=Object.getOwnPropertySymbols),ai}function li(){if(Nn)return jn;Nn=1;var t=At(),e=St(),n=Rn(),i=si(),r=je(),o=e([].concat);return jn=t("Reflect","ownKeys")||function(t){var e=n.f(r(t)),a=i.f;return a?o(e,a(t)):e}}function ci(){if(Dn)return Fn;Dn=1;var t=ve(),e=li(),n=Oe(),i=Ne();return Fn=function(r,o,a){for(var s=e(o),l=i.f,c=n.f,u=0;u9007199254740991)throw t("Maximum allowed index exceeded");return e}}function pi(){if(Wn)return qn;Wn=1;var t=I(),e=Ne(),n=wt();return qn=function(i,r,o){t?e.f(i,r,n(0,o)):i[r]=o}}function gi(){if(Kn)return Gn;Kn=1;var t={};return t[me()("toStringTag")]="z",Gn="[object z]"===String(t)}function vi(){if(Yn)return Jn;Yn=1;var t=gi(),e=Pt(),n=xt(),i=me()("toStringTag"),r=Object,o="Arguments"===n(function(){return arguments}());return Jn=t?n:function(t){var a,s,l;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(s=function(t,e){try{return t[e]}catch(t){}}(a=r(t),i))?s:o?n(a):"Object"===(l=n(a))&&e(a.callee)?"Arguments":l}}function bi(){if(Xn)return Qn;Xn=1;var t=St(),e=P(),n=Pt(),i=vi(),r=At(),o=Ze(),a=function(){},s=r("Reflect","construct"),l=/^\s*(?:class|function)\b/,c=t(l.exec),u=!l.test(a),h=function(t){if(!n(t))return!1;try{return s(a,[],t),!0}catch(t){return!1}},f=function(t){if(!n(t))return!1;switch(i(t)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return u||!!c(l,o(t))}catch(t){return!0}};return f.sham=!0,Qn=!s||e((function(){var t;return h(h.call)||!h(Object)||!h((function(){t=!0}))||t}))?f:h}function mi(){if(ti)return Zn;ti=1;var t=fi(),e=bi(),n=It(),i=me()("species"),r=Array;return Zn=function(o){var a;return t(o)&&(a=o.constructor,(e(a)&&(a===r||t(a.prototype))||n(a)&&null===(a=a[i]))&&(a=void 0)),void 0===a?r:a}}function yi(){if(ni)return ei;ni=1;var t=mi();return ei=function(e,n){return new(t(e))(0===n?0:n)}}function wi(){if(ri)return ii;ri=1;var t=P(),e=me(),n=Et(),i=e("species");return ii=function(e){return n>=51||!t((function(){var t=[];return(t.constructor={})[i]=function(){return{foo:1}},1!==t[e](Boolean).foo}))}}!function(){if(oi)return v;oi=1;var t=hi(),e=P(),n=fi(),i=It(),r=ge(),o=Pn(),a=di(),s=pi(),l=yi(),c=wi(),u=me(),h=Et(),f=u("isConcatSpreadable"),d=h>=51||!e((function(){var t=[];return t[f]=!1,t.concat()[0]!==t})),p=function(t){if(!i(t))return!1;var e=t[f];return void 0!==e?!!e:n(t)};t({target:"Array",proto:!0,arity:1,forced:!d||!c("concat")},{concat:function(t){var e,n,i,c,u,h=r(this),f=l(h,0),d=0;for(e=-1,i=arguments.length;ek;k++)if((d||k in S)&&(y=O(m=S[k],k,w),e))if(s)C[k]=y;else if(y)switch(e){case 3:return!0;case 5:return m;case 6:return k;case 2:a(C,m)}else switch(e){case 4:return!1;case 7:a(C,m)}return h?-1:c||u?u:C}};return Ti={forEach:s(0),map:s(1),filter:s(2),some:s(3),every:s(4),find:s(5),findIndex:s(6),filterReject:s(7)}}!function(){if(Pi)return Ii;Pi=1;var t=hi(),e=Ri().filter;t({target:"Array",proto:!0,forced:!wi()("filter")},{filter:function(t){return e(this,t,arguments.length>1?arguments[1]:void 0)}})}();var Ei,ji,Ni,Fi,Di,Li,_i,Vi,Bi,Hi,Mi={},Ui={};function zi(){if(ji)return Ei;ji=1;var t=An(),e=$n();return Ei=Object.keys||function(n){return t(n,e)}}function qi(){if(Di)return Fi;Di=1;var t=At();return Fi=t("document","documentElement")}function Wi(){if(_i)return Li;_i=1;var t,e=je(),n=function(){if(Ni)return Ui;Ni=1;var t=I(),e=Ee(),n=Ne(),i=je(),r=Ct(),o=zi();return Ui.f=t&&!e?Object.defineProperties:function(t,e){i(t);for(var a,s=r(e),l=o(e),c=l.length,u=0;c>u;)n.f(t,a=l[u++],s[a]);return t},Ui}(),i=$n(),r=en(),o=qi(),a=Se(),s=tn(),l="prototype",c="script",u=s("IE_PROTO"),h=function(){},f=function(t){return"<"+c+">"+t+""},d=function(t){t.write(f("")),t.close();var e=t.parentWindow.Object;return t=null,e},p=function(){try{t=new ActiveXObject("htmlfile")}catch(t){}var e,n,r;p="undefined"!=typeof document?document.domain&&t?d(t):(n=a("iframe"),r="java"+c+":",n.style.display="none",o.appendChild(n),n.src=String(r),(e=n.contentWindow.document).open(),e.write(f("document.F=Object")),e.close(),e.F):d(t);for(var s=i.length;s--;)delete p[l][i[s]];return p()};return r[u]=!0,Li=Object.create||function(t,i){var r;return null!==t?(h[l]=e(t),r=new h,h[l]=null,r[u]=t):r=p(),void 0===i?r:n.f(r,i)}}function Gi(){if(Bi)return Vi;Bi=1;var t=me(),e=Wi(),n=Ne().f,i=t("unscopables"),r=Array.prototype;return void 0===r[i]&&n(r,i,{configurable:!0,value:e(null)}),Vi=function(t){r[i][t]=!0}}!function(){if(Hi)return Mi;Hi=1;var t=hi(),e=Ri().find,n=Gi(),i="find",r=!0;i in[]&&Array(1)[i]((function(){r=!1})),t({target:"Array",proto:!0,forced:r},{find:function(t){return e(this,t,arguments.length>1?arguments[1]:void 0)}}),n(i)}();var Ki,Ji={};!function(){if(Ki)return Ji;Ki=1;var t=hi(),e=Ri().findIndex,n=Gi(),i="findIndex",r=!0;i in[]&&Array(1)[i]((function(){r=!1})),t({target:"Array",proto:!0,forced:r},{findIndex:function(t){return e(this,t,arguments.length>1?arguments[1]:void 0)}}),n(i)}();var Yi,Qi={};!function(){if(Yi)return Qi;Yi=1;var t=hi(),e=In().includes,n=P(),i=Gi();t({target:"Array",proto:!0,forced:n((function(){return!Array(1).includes()}))},{includes:function(t){return e(this,t,arguments.length>1?arguments[1]:void 0)}}),i("includes")}();var Xi,Zi,tr,er,nr,ir,rr,or,ar,sr,lr,cr,ur,hr,fr,dr,pr,gr,vr,br,mr,yr,wr,Sr,xr,Or,kr,Tr,Cr,Pr={};function Ir(){if(Zi)return Xi;Zi=1;var t=P();return Xi=function(e,n){var i=[][e];return!!i&&t((function(){i.call(null,n||function(){return 1},1)}))}}function Ar(){return nr?er:(nr=1,er={})}function $r(){if(rr)return ir;rr=1;var t=P();return ir=!t((function(){function t(){}return t.prototype.constructor=null,Object.getPrototypeOf(new t)!==t.prototype}))}function Rr(){if(ar)return or;ar=1;var t=ve(),e=Pt(),n=ge(),i=tn(),r=$r(),o=i("IE_PROTO"),a=Object,s=a.prototype;return or=r?a.getPrototypeOf:function(i){var r=n(i);if(t(r,o))return r[o];var l=r.constructor;return e(l)&&r instanceof l?l.prototype:r instanceof a?s:null}}function Er(){if(lr)return sr;lr=1;var t,e,n,i=P(),r=Pt(),o=It(),a=Wi(),s=Rr(),l=on(),c=me(),u=he(),h=c("iterator"),f=!1;return[].keys&&("next"in(n=[].keys())?(e=s(s(n)))!==Object.prototype&&(t=e):f=!0),!o(t)||i((function(){var e={};return t[h].call(e)!==e}))?t={}:u&&(t=a(t)),r(t[h])||l(t,h,(function(){return this})),sr={IteratorPrototype:t,BUGGY_SAFARI_ITERATORS:f}}function jr(){if(ur)return cr;ur=1;var t=Ne().f,e=ve(),n=me()("toStringTag");return cr=function(i,r,o){i&&!o&&(i=i.prototype),i&&!e(i,n)&&t(i,n,{configurable:!0,value:r})}}function Nr(){if(fr)return hr;fr=1;var t=Er().IteratorPrototype,e=Wi(),n=wt(),i=jr(),r=Ar(),o=function(){return this};return hr=function(a,s,l,c){var u=s+" Iterator";return a.prototype=e(t,{next:n(+!c,l)}),i(a,u,!1,!0),r[u]=o,a}}function Fr(){if(vr)return gr;vr=1;var t=It();return gr=function(e){return t(e)||null===e}}function Dr(){if(mr)return br;mr=1;var t=Fr(),e=String,n=TypeError;return br=function(i){if(t(i))return i;throw new n("Can't set "+e(i)+" as a prototype")}}function Lr(){if(wr)return yr;wr=1;var t=function(){if(pr)return dr;pr=1;var t=St(),e=Lt();return dr=function(n,i,r){try{return t(e(Object.getOwnPropertyDescriptor(n,i)[r]))}catch(t){}}}(),e=It(),n=Tt(),i=Dr();return yr=Object.setPrototypeOf||("__proto__"in{}?function(){var r,o=!1,a={};try{(r=t(Object.prototype,"__proto__","set"))(a,[]),o=a instanceof Array}catch(t){}return function(t,a){return n(t),i(a),e(t)?(o?r(t,a):t.__proto__=a,t):t}}():void 0)}function _r(){if(xr)return Sr;xr=1;var t=hi(),e=$(),n=he(),i=Xe(),r=Pt(),o=Nr(),a=Rr(),s=Lr(),l=jr(),c=Fe(),u=on(),h=me(),f=Ar(),d=Er(),p=i.PROPER,g=i.CONFIGURABLE,v=d.IteratorPrototype,b=d.BUGGY_SAFARI_ITERATORS,m=h("iterator"),y="keys",w="values",S="entries",x=function(){return this};return Sr=function(i,h,d,O,k,T,C){o(d,h,O);var P,I,A,$=function(t){if(t===k&&F)return F;if(!b&&t&&t in j)return j[t];switch(t){case y:case w:case S:return function(){return new d(this,t)}}return function(){return new d(this)}},R=h+" Iterator",E=!1,j=i.prototype,N=j[m]||j["@@iterator"]||k&&j[k],F=!b&&N||$(k),D="Array"===h&&j.entries||N;if(D&&(P=a(D.call(new i)))!==Object.prototype&&P.next&&(n||a(P)===v||(s?s(P,v):r(P[m])||u(P,m,x)),l(P,R,!0,!0),n&&(f[R]=x)),p&&k===w&&N&&N.name!==w&&(!n&&g?c(j,"name",w):(E=!0,F=function(){return e(N,this)})),k)if(I={values:$(w),keys:T?F:$(y),entries:$(S)},C)for(A in I)(b||E||!(A in j))&&u(j,A,I[A]);else t({target:h,proto:!0,forced:b||E},I);return n&&!C||j[m]===F||u(j,m,F,{name:k}),f[h]=F,I}}function Vr(){return kr?Or:(kr=1,Or=function(t,e){return{value:t,done:e}})}function Br(){if(Cr)return Tr;Cr=1;var t=Ct(),e=Gi(),n=Ar(),i=nn(),r=Ne().f,o=_r(),a=Vr(),s=he(),l=I(),c="Array Iterator",u=i.set,h=i.getterFor(c);Tr=o(Array,"Array",(function(e,n){u(this,{type:c,target:t(e),index:0,kind:n})}),(function(){var t=h(this),e=t.target,n=t.index++;if(!e||n>=e.length)return t.target=null,a(void 0,!0);switch(t.kind){case"keys":return a(n,!1);case"values":return a(e[n],!1)}return a([n,e[n]],!1)}),"values");var f=n.Arguments=n.Array;if(e("keys"),e("values"),e("entries"),!s&&l&&"values"!==f.name)try{r(f,"name",{value:"values"})}catch(t){}return Tr}!function(){if(tr)return Pr;tr=1;var t=hi(),e=Ai(),n=In().indexOf,i=Ir(),r=e([].indexOf),o=!!r&&1/r([1],1,-0)<0;t({target:"Array",proto:!0,forced:o||!i("indexOf")},{indexOf:function(t){var e=arguments.length>1?arguments[1]:void 0;return o?r(this,t,e)||0:n(this,t,e)}})}(),Br();var Hr,Mr={};!function(){if(Hr)return Mr;Hr=1;var t=hi(),e=St(),n=Ot(),i=Ct(),r=Ir(),o=e([].join);t({target:"Array",proto:!0,forced:n!==Object||!r("join",",")},{join:function(t){return o(i(this),void 0===t?",":t)}})}();var Ur,zr={};!function(){if(Ur)return zr;Ur=1;var t=hi(),e=Ri().map;t({target:"Array",proto:!0,forced:!wi()("map")},{map:function(t){return e(this,t,arguments.length>1?arguments[1]:void 0)}})}();var qr,Wr={};!function(){if(qr)return Wr;qr=1;var t=hi(),e=St(),n=fi(),i=e([].reverse),r=[1,2];t({target:"Array",proto:!0,forced:String(r)===String(r.reverse())},{reverse:function(){return n(this)&&(this.length=this.length),i(this)}})}();var Gr,Kr,Jr,Yr={};function Qr(){if(Kr)return Gr;Kr=1;var t=St();return Gr=t([].slice)}!function(){if(Jr)return Yr;Jr=1;var t=hi(),e=fi(),n=bi(),i=It(),r=Tn(),o=Pn(),a=Ct(),s=pi(),l=me(),c=wi(),u=Qr(),h=c("slice"),f=l("species"),d=Array,p=Math.max;t({target:"Array",proto:!0,forced:!h},{slice:function(t,l){var c,h,g,v=a(this),b=o(v),m=r(t,b),y=r(void 0===l?b:l,b);if(e(v)&&(c=v.constructor,(n(c)&&(c===d||e(c.prototype))||i(c)&&null===(c=c[f]))&&(c=void 0),c===d||void 0===c))return u(v,m,y);for(h=new(void 0===c?d:c)(p(y-m,0)),g=0;m0;)i[s]=i[--s];s!==l++&&(i[s]=a)}else for(var c=e(o/2),u=n(t(i,0,c),r),h=n(t(i,c),r),f=u.length,d=h.length,p=0,g=0;p3)){if(h)return!0;if(d)return d<603;var t,e,n,i,r="";for(t=65;t<76;t++){switch(e=String.fromCharCode(t),t){case 66:case 69:case 70:case 72:n=3;break;case 68:case 71:n=4;break;default:n=2}for(i=0;i<47;i++)p.push({k:e+i,v:n})}for(p.sort((function(t,e){return e.v-t.v})),i=0;ia(n)?1:-1}}(t)),s=r(u),c=0;cw-p+d;v--)c(y,v-1)}else if(d>p)for(v=w-p;v>S;v--)m=v+d-1,(b=v+p-1)in y?y[m]=y[b]:c(y,m);for(v=0;v2)if(c=m(c),43===(e=T(c,0))||45===e){if(88===(n=T(c,2))||120===n)return NaN}else if(48===e){switch(T(c,1)){case 66:case 98:i=2,r=49;break;case 79:case 111:i=8,r=55;break;default:return+c}for(a=(o=k(c,2)).length,s=0;sr)return NaN;return parseInt(o,i)}return+c},A=a(y,!w(" 0o1")||!w("0b1")||w("+0x1")),$=function(t){var e,n=arguments.length<1?0:w(function(t){var e=h(t,"number");return"bigint"==typeof e?e:C(e)}(t));return c(x,e=this)&&f((function(){v(e)}))?l(Object(n),this,$):n};$.prototype=x,A&&!e&&(x.constructor=$),t({global:!0,constructor:!0,wrap:!0,forced:A},{Number:$});var R=function(t,e){for(var i,r=n?d(e):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,fromString,range".split(","),o=0;r.length>o;o++)s(e,i=r[o])&&!s(t,i)&&g(t,i,p(e,i))};e&&S&&R(r[y],S),(A||e)&&R(r[y],w)}();var Vo,Bo,Ho,Mo={};!function(){if(Ho)return Mo;Ho=1;var t=hi(),e=function(){if(Bo)return Vo;Bo=1;var t=I(),e=St(),n=$(),i=P(),r=zi(),o=si(),a=yt(),s=ge(),l=Ot(),c=Object.assign,u=Object.defineProperty,h=e([].concat);return Vo=!c||i((function(){if(t&&1!==c({b:1},c(u({},"a",{enumerable:!0,get:function(){u(this,"b",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var e={},n={},i=Symbol("assign detection"),o="abcdefghijklmnopqrst";return e[i]=7,o.split("").forEach((function(t){n[t]=t})),7!==c({},e)[i]||r(c({},n)).join("")!==o}))?function(e,i){for(var c=s(e),u=arguments.length,f=1,d=o.f,p=a.f;u>f;)for(var g,v=l(arguments[f++]),b=d?h(r(v),d(v)):r(v),m=b.length,y=0;m>y;)g=b[y++],t&&!n(p,v,g)||(c[g]=v[g]);return c}:c,Vo}();t({target:"Object",stat:!0,arity:2,forced:Object.assign!==e},{assign:e})}();var Uo,zo,qo,Wo={};!function(){if(qo)return Wo;qo=1;var t=hi(),e=function(){if(zo)return Uo;zo=1;var t=I(),e=P(),n=St(),i=Rr(),r=zi(),o=Ct(),a=n(yt().f),s=n([].push),l=t&&e((function(){var t=Object.create(null);return t[2]=2,!a(t,2)})),c=function(e){return function(n){for(var c,u=o(n),h=r(u),f=l&&null===i(u),d=h.length,p=0,g=[];d>p;)c=h[p++],t&&!(f?c in u:a(u,c))||s(g,e?[c,u[c]]:u[c]);return g}};return Uo={entries:c(!0),values:c(!1)}}().entries;t({target:"Object",stat:!0},{entries:function(t){return e(t)}})}();var Go,Ko={};!function(){if(Go)return Ko;Go=1;var t=hi(),e=ge(),n=zi();t({target:"Object",stat:!0,forced:P()((function(){n(1)}))},{keys:function(t){return n(e(t))}})}();var Jo,Yo,Qo,Xo={};!function(){if(Qo)return Xo;Qo=1;var t=gi(),e=on(),n=function(){if(Yo)return Jo;Yo=1;var t=gi(),e=vi();return Jo=t?{}.toString:function(){return"[object "+e(this)+"]"}}();t||e(Object.prototype,"toString",n,{unsafe:!0})}();var Zo,ta,ea,na={};!function(){if(ea)return na;ea=1;var t=hi(),e=function(){if(ta)return Zo;ta=1;var t=b(),e=P(),n=St(),i=po(),r=_o().trim,o=Lo(),a=n("".charAt),s=t.parseFloat,l=t.Symbol,c=l&&l.iterator,u=1/s(o+"-0")!=-1/0||c&&!e((function(){s(Object(c))}));return Zo=u?function(t){var e=r(i(t)),n=s(e);return 0===n&&"-"===a(e,0)?-0:n}:s}();t({global:!0,forced:parseFloat!==e},{parseFloat:e})}();var ia,ra,oa,aa={};!function(){if(oa)return aa;oa=1;var t=hi(),e=function(){if(ra)return ia;ra=1;var t=b(),e=P(),n=St(),i=po(),r=_o().trim,o=Lo(),a=t.parseInt,s=t.Symbol,l=s&&s.iterator,c=/^[+-]?0x/i,u=n(c.exec),h=8!==a(o+"08")||22!==a(o+"0x16")||l&&!e((function(){a(Object(l))}));return ia=h?function(t,e){var n=r(i(t));return a(n,e>>>0||(u(c,n)?16:10))}:a}();t({global:!0,forced:parseInt!==e},{parseInt:e})}();var sa,la,ca,ua,ha,fa,da,pa,ga,va,ba,ma,ya,wa,Sa,xa,Oa,ka,Ta,Ca={};function Pa(){if(la)return sa;la=1;var t=It(),e=xt(),n=me()("match");return sa=function(i){var r;return t(i)&&(void 0!==(r=i[n])?!!r:"RegExp"===e(i))}}function Ia(){if(ua)return ca;ua=1;var t=je();return ca=function(){var e=t(this),n="";return e.hasIndices&&(n+="d"),e.global&&(n+="g"),e.ignoreCase&&(n+="i"),e.multiline&&(n+="m"),e.dotAll&&(n+="s"),e.unicode&&(n+="u"),e.unicodeSets&&(n+="v"),e.sticky&&(n+="y"),n}}function Aa(){if(fa)return ha;fa=1;var t=$(),e=ve(),n=$t(),i=Ia(),r=RegExp.prototype;return ha=function(o){var a=o.flags;return void 0!==a||"flags"in r||e(o,"flags")||!n(r,o)?a:t(i,o)}}function $a(){if(pa)return da;pa=1;var t=P(),e=b().RegExp,n=t((function(){var t=e("a","y");return t.lastIndex=2,null!==t.exec("abcd")})),i=n||t((function(){return!e("a","y").sticky})),r=n||t((function(){var t=e("^r","gy");return t.lastIndex=2,null!==t.exec("str")}));return da={BROKEN_CARET:r,MISSED_STICKY:i,UNSUPPORTED_Y:n}}function Ra(){if(va)return ga;va=1;var t=Ne().f;return ga=function(e,n,i){i in e||t(e,i,{configurable:!0,get:function(){return n[i]},set:function(t){n[i]=t}})}}function Ea(){if(ma)return ba;ma=1;var t=rn(),e=Ne();return ba=function(n,i,r){return r.get&&t(r.get,i,{getter:!0}),r.set&&t(r.set,i,{setter:!0}),e.f(n,i,r)}}function ja(){if(wa)return ya;wa=1;var t=At(),e=Ea(),n=me(),i=I(),r=n("species");return ya=function(n){var o=t(n);i&&o&&!o[r]&&e(o,r,{configurable:!0,get:function(){return this}})}}function Na(){if(xa)return Sa;xa=1;var t=P(),e=b().RegExp;return Sa=t((function(){var t=e(".","s");return!(t.dotAll&&t.test("\n")&&"s"===t.flags)}))}function Fa(){if(ka)return Oa;ka=1;var t=P(),e=b().RegExp;return Oa=t((function(){var t=e("(?b)","g");return"b"!==t.exec("b").groups.a||"bc"!=="b".replace(t,"$c")}))}!function(){if(Ta)return Ca;Ta=1;var t=I(),e=b(),n=St(),i=ui(),r=Fo(),o=Fe(),a=Wi(),s=Rn().f,l=$t(),c=Pa(),u=po(),h=Aa(),f=$a(),d=Ra(),p=on(),g=P(),v=ve(),m=nn().enforce,y=ja(),w=me(),S=Na(),x=Fa(),O=w("match"),k=e.RegExp,T=k.prototype,C=e.SyntaxError,A=n(T.exec),$=n("".charAt),R=n("".replace),E=n("".indexOf),j=n("".slice),N=/^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/,F=/a/g,D=/a/g,L=new k(F)!==F,_=f.MISSED_STICKY,V=f.UNSUPPORTED_Y,B=t&&(!L||_||S||x||g((function(){return D[O]=!1,k(F)!==F||k(D)===D||"/a/i"!==String(k(F,"i"))})));if(i("RegExp",B)){for(var H=function(t,e){var n,i,s,f,d,p,g=l(T,this),b=c(t),y=void 0===e,w=[],O=t;if(!g&&b&&y&&t.constructor===H)return t;if((b||l(T,t))&&(t=t.source,y&&(e=h(O))),t=void 0===t?"":u(t),e=void 0===e?"":u(e),O=t,S&&"dotAll"in F&&(i=!!e&&E(e,"s")>-1)&&(e=R(e,/s/g,"")),n=e,_&&"sticky"in F&&(s=!!e&&E(e,"y")>-1)&&V&&(e=R(e,/y/g,"")),x&&(f=function(t){for(var e,n=t.length,i=0,r="",o=[],s=a(null),l=!1,c=!1,u=0,h="";i<=n;i++){if("\\"===(e=$(t,i)))e+=$(t,++i);else if("]"===e)l=!1;else if(!l)switch(!0){case"["===e:l=!0;break;case"("===e:if(r+=e,"?:"===j(t,i+1,i+3))continue;A(N,j(t,i+1))&&(i+=2,c=!0),u++;continue;case">"===e&&c:if(""===h||v(s,h))throw new C("Invalid capture group name");s[h]=!0,o[o.length]=[h,u],c=!1,h="";continue}c?h+=e:r+=e}return[r,o]}(t),t=f[0],w=f[1]),d=r(k(t,e),g?this:T,H),(i||s||w.length)&&(p=m(d),i&&(p.dotAll=!0,p.raw=H(function(t){for(var e,n=t.length,i=0,r="",o=!1;i<=n;i++)"\\"!==(e=$(t,i))?o||"."!==e?("["===e?o=!0:"]"===e&&(o=!1),r+=e):r+="[\\s\\S]":r+=e+$(t,++i);return r}(t),n)),s&&(p.sticky=!0),w.length&&(p.groups=w)),t!==O)try{o(d,"source",""===O?"(?:)":O)}catch(t){}return d},M=s(k),U=0;M.length>U;)d(H,k,M[U++]);T.constructor=H,H.prototype=T,p(e,"RegExp",H,{constructor:!0})}y("RegExp")}();var Da,La,_a,Va={};function Ba(){if(La)return Da;La=1;var t,e,n=$(),i=St(),r=po(),o=Ia(),a=$a(),s=pe(),l=Wi(),c=nn().get,u=Na(),h=Fa(),f=s("native-string-replace",String.prototype.replace),d=RegExp.prototype.exec,p=d,g=i("".charAt),v=i("".indexOf),b=i("".replace),m=i("".slice),y=(e=/b*/g,n(d,t=/a/,"a"),n(d,e,"a"),0!==t.lastIndex||0!==e.lastIndex),w=a.BROKEN_CARET,S=void 0!==/()??/.exec("")[1];return(y||S||w||u||h)&&(p=function(t){var e,i,a,s,u,h,x,O=this,k=c(O),T=r(t),C=k.raw;if(C)return C.lastIndex=O.lastIndex,e=n(p,C,T),O.lastIndex=C.lastIndex,e;var P=k.groups,I=w&&O.sticky,A=n(o,O),$=O.source,R=0,E=T;if(I&&(A=b(A,"y",""),-1===v(A,"g")&&(A+="g"),E=m(T,O.lastIndex),O.lastIndex>0&&(!O.multiline||O.multiline&&"\n"!==g(T,O.lastIndex-1))&&($="(?: "+$+")",E=" "+E,R++),i=new RegExp("^(?:"+$+")",A)),S&&(i=new RegExp("^"+$+"$(?!\\s)",A)),y&&(a=O.lastIndex),s=n(d,I?i:O,E),I?s?(s.input=m(s.input,R),s[0]=m(s[0],R),s.index=O.lastIndex,O.lastIndex+=s[0].length):O.lastIndex=0:y&&s&&(O.lastIndex=O.global?s.index+s[0].length:a),S&&s&&s.length>1&&n(f,s[0],i,(function(){for(u=1;u1?arguments[1]:void 0)}})}();var Xa,Za,ts,es,ns,is,rs,os,as,ss,ls,cs,us,hs={};function fs(){if(es)return ts;es=1,Ha();var t=$(),e=on(),n=Ba(),i=P(),r=me(),o=Fe(),a=r("species"),s=RegExp.prototype;return ts=function(l,c,u,h){var f=r(l),d=!i((function(){var t={};return t[f]=function(){return 7},7!==""[l](t)})),p=d&&!i((function(){var t=!1,e=/a/;return"split"===l&&((e={}).constructor={},e.constructor[a]=function(){return e},e.flags="",e[f]=/./[f]),e.exec=function(){return t=!0,null},e[f](""),!t}));if(!d||!p||u){var g=/./[f],v=c(f,""[l],(function(e,i,r,o,a){var l=i.exec;return l===n||l===s.exec?d&&!a?{done:!0,value:t(g,i,r,o)}:{done:!0,value:t(e,r,i,o)}:{done:!1}}));e(String.prototype,l,v[0]),e(s,f,v[1])}h&&o(s[f],"sham",!0)}}function ds(){if(is)return ns;is=1;var t=St(),e=kn(),n=po(),i=Tt(),r=t("".charAt),o=t("".charCodeAt),a=t("".slice),s=function(t){return function(s,l){var c,u,h=n(i(s)),f=e(l),d=h.length;return f<0||f>=d?t?"":void 0:(c=o(h,f))<55296||c>56319||f+1===d||(u=o(h,f+1))<56320||u>57343?t?r(h,f):c:t?a(h,f,f+2):u-56320+(c-55296<<10)+65536}};return ns={codeAt:s(!1),charAt:s(!0)}}function ps(){if(os)return rs;os=1;var t=ds().charAt;return rs=function(e,n,i){return n+(i?t(e,n).length:1)}}function gs(){if(ss)return as;ss=1;var t=St(),e=ge(),n=Math.floor,i=t("".charAt),r=t("".replace),o=t("".slice),a=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,s=/\$([$&'`]|\d{1,2})/g;return as=function(t,l,c,u,h,f){var d=c+t.length,p=u.length,g=s;return void 0!==h&&(h=e(h),g=a),r(f,g,(function(e,r){var a;switch(i(r,0)){case"$":return"$";case"&":return t;case"`":return o(l,0,c);case"'":return o(l,d);case"<":a=h[o(r,1,-1)];break;default:var s=+r;if(0===s)return e;if(s>p){var f=n(s/10);return 0===f?e:f<=p?void 0===u[f-1]?i(r,1):u[f-1]+i(r,1):e}a=u[s-1]}return void 0===a?"":a}))}}function vs(){if(cs)return ls;cs=1;var t=$(),e=je(),n=Pt(),i=xt(),r=Ba(),o=TypeError;return ls=function(a,s){var l=a.exec;if(n(l)){var c=t(l,a,s);return null!==c&&e(c),c}if("RegExp"===i(a))return t(r,a,s);throw new o("RegExp#exec called on incompatible receiver")}}!function(){if(us)return hs;us=1;var t=function(){if(Za)return Xa;Za=1;var t=A(),e=Function.prototype,n=e.apply,i=e.call;return Xa="object"==typeof Reflect&&Reflect.apply||(t?i.bind(n):function(){return i.apply(n,arguments)}),Xa}(),e=$(),n=St(),i=fs(),r=P(),o=je(),a=Pt(),s=kt(),l=kn(),c=Cn(),u=po(),h=Tt(),f=ps(),d=_t(),p=gs(),g=vs(),v=me()("replace"),b=Math.max,m=Math.min,y=n([].concat),w=n([].push),S=n("".indexOf),x=n("".slice),O="$0"==="a".replace(/./,"$0"),k=!!/./[v]&&""===/./[v]("a","$0");i("replace",(function(n,i,r){var O=k?"$":"$0";return[function(t,n){var r=h(this),o=s(t)?void 0:d(t,v);return o?e(o,t,r,n):e(i,u(r),t,n)},function(e,n){var s=o(this),h=u(e);if("string"==typeof n&&-1===S(n,O)&&-1===S(n,"$<")){var d=r(i,s,h,n);if(d.done)return d.value}var v=a(n);v||(n=u(n));var k,T=s.global;T&&(k=s.unicode,s.lastIndex=0);for(var C,P=[];null!==(C=g(s,h))&&(w(P,C),T);){""===u(C[0])&&(s.lastIndex=f(h,c(s.lastIndex),k))}for(var I,A="",$=0,R=0;R=$&&(A+=x(h,$,N)+E,$=N+j.length)}return A+x(h,$)}]}),!!r((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$")}))||!O||k)}();var bs,ms,ys,ws={};function Ss(){return ms?bs:(ms=1,bs=Object.is||function(t,e){return t===e?0!==t||1/t==1/e:t!=t&&e!=e})}!function(){if(ys)return ws;ys=1;var t=$(),e=fs(),n=je(),i=kt(),r=Tt(),o=Ss(),a=po(),s=_t(),l=vs();e("search",(function(e,c,u){return[function(n){var o=r(this),l=i(n)?void 0:s(n,e);return l?t(l,n,o):new RegExp(n)[e](a(o))},function(t){var e=n(this),i=a(t),r=u(c,e,i);if(r.done)return r.value;var s=e.lastIndex;o(s,0)||(e.lastIndex=0);var h=l(e,i);return o(e.lastIndex,s)||(e.lastIndex=s),null===h?-1:h.index}]}))}();var xs,Os,ks,Ts,Cs,Ps={};function Is(){if(Os)return xs;Os=1;var t=bi(),e=Dt(),n=TypeError;return xs=function(i){if(t(i))return i;throw new n(e(i)+" is not a constructor")}}function As(){if(Ts)return ks;Ts=1;var t=je(),e=Is(),n=kt(),i=me()("species");return ks=function(r,o){var a,s=t(r).constructor;return void 0===s||n(a=t(s)[i])?o:e(a)}}!function(){if(Cs)return Ps;Cs=1;var t=$(),e=St(),n=fs(),i=je(),r=kt(),o=Tt(),a=As(),s=ps(),l=Cn(),c=po(),u=_t(),h=vs(),f=$a(),d=P(),p=f.UNSUPPORTED_Y,g=Math.min,v=e([].push),b=e("".slice),m=!d((function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var n="ab".split(t);return 2!==n.length||"a"!==n[0]||"b"!==n[1]})),y="c"==="abbc".split(/(b)*/)[1]||4!=="test".split(/(?:)/,-1).length||2!=="ab".split(/(?:ab)*/).length||4!==".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length;n("split",(function(e,n,f){var d="0".split(void 0,0).length?function(e,i){return void 0===e&&0===i?[]:t(n,this,e,i)}:n;return[function(n,i){var a=o(this),s=r(n)?void 0:u(n,e);return s?t(s,n,a,i):t(d,c(a),n,i)},function(t,e){var r=i(this),o=c(t);if(!y){var u=f(d,r,o,e,d!==n);if(u.done)return u.value}var m=a(r,RegExp),w=r.unicode,S=(r.ignoreCase?"i":"")+(r.multiline?"m":"")+(r.unicode?"u":"")+(p?"g":"y"),x=new m(p?"^(?:"+r.source+")":r,S),O=void 0===e?4294967295:e>>>0;if(0===O)return[];if(0===o.length)return null===h(x,o)?[o]:[];for(var k=0,T=0,C=[];T1?arguments[1]:void 0)},_s}(),r=Fe(),o=function(t){if(t&&t.forEach!==i)try{r(t,"forEach",i)}catch(e){t.forEach=i}};for(var a in e)e[a]&&o(t[a]&&t[a].prototype);o(n)}();var zs,qs={};!function(){if(zs)return qs;zs=1;var t=b(),e=Ms(),n=Us(),i=Br(),r=Fe(),o=jr(),a=me()("iterator"),s=i.values,l=function(t,n){if(t){if(t[a]!==s)try{r(t,a,s)}catch(e){t[a]=s}if(o(t,n,!0),e[n])for(var l in i)if(t[l]!==i[l])try{r(t,l,i[l])}catch(e){t[l]=i[l]}}};for(var c in e)l(t[c]&&t[c].prototype,c);l(n,"DOMTokenList")}();var Ws,Gs={};!function(){if(Ws)return Gs;Ws=1;var t=hi(),e=P(),n=ge(),i=Rr(),r=$r();t({target:"Object",stat:!0,forced:e((function(){i(1)})),sham:!r},{getPrototypeOf:function(t){return i(n(t))}})}();var Ks,Js={};!function(){if(Ks)return Js;Ks=1;var t,e=hi(),n=Ai(),i=Oe().f,r=Cn(),o=po(),a=Ya(),s=Tt(),l=Qa(),c=he(),u=n("".slice),h=Math.min,f=l("endsWith");e({target:"String",proto:!0,forced:!!(c||f||(t=i(String.prototype,"endsWith"),!t||t.writable))&&!f},{endsWith:function(t){var e=o(s(this));a(t);var n=arguments.length>1?arguments[1]:void 0,i=e.length,l=void 0===n?i:h(r(n),i),c=o(t);return u(e,l-c.length,l)===c}})}();var Ys,Qs={};!function(){if(Ys)return Qs;Ys=1;var t=ds().charAt,e=po(),n=nn(),i=_r(),r=Vr(),o="String Iterator",a=n.set,s=n.getterFor(o);i(String,"String",(function(t){a(this,{type:o,string:e(t),index:0})}),(function(){var e,n=s(this),i=n.string,o=n.index;return o>=i.length?r(void 0,!0):(e=t(i,o),n.index+=e.length,r(e,!1))}))}();var Xs,Zs={};!function(){if(Xs)return Zs;Xs=1;var t=$(),e=fs(),n=je(),i=kt(),r=Cn(),o=po(),a=Tt(),s=_t(),l=ps(),c=vs();e("match",(function(e,u,h){return[function(n){var r=a(this),l=i(n)?void 0:s(n,e);return l?t(l,n,r):new RegExp(n)[e](o(r))},function(t){var e=n(this),i=o(t),a=h(u,e,i);if(a.done)return a.value;if(!e.global)return c(e,i);var s=e.unicode;e.lastIndex=0;for(var f,d=[],p=0;null!==(f=c(e,i));){var g=o(f[0]);d[p]=g,""===g&&(e.lastIndex=l(i,r(e.lastIndex),s)),p++}return 0===p?null:d}]}))}();var tl,el={};!function(){if(tl)return el;tl=1;var t,e=hi(),n=Ai(),i=Oe().f,r=Cn(),o=po(),a=Ya(),s=Tt(),l=Qa(),c=he(),u=n("".slice),h=Math.min,f=l("startsWith");e({target:"String",proto:!0,forced:!!(c||f||(t=i(String.prototype,"startsWith"),!t||t.writable))&&!f},{startsWith:function(t){var e=o(s(this));a(t);var n=r(h(arguments.length>1?arguments[1]:void 0,e.length)),i=o(t);return u(e,n,n+i.length)===i}})}();var nl,il,rl,ol,al,sl,ll,cl,ul,hl,fl,dl,pl,gl,vl,bl,ml,yl,wl={};function Sl(){if(rl)return il;rl=1;var t=b(),e=I(),n=Object.getOwnPropertyDescriptor;return il=function(i){if(!e)return t[i];var r=n(t,i);return r&&r.value}}function xl(){if(ll)return sl;ll=1;var t=on();return sl=function(e,n,i){for(var r in n)t(e,r,n[r],i);return e}}function Ol(){if(ul)return cl;ul=1;var t=$t(),e=TypeError;return cl=function(n,i){if(t(i,n))return n;throw new e("Incorrect invocation")}}function kl(){if(fl)return hl;fl=1;var t=vi(),e=_t(),n=kt(),i=Ar(),r=me()("iterator");return hl=function(o){if(!n(o))return e(o,r)||e(o,"@@iterator")||i[t(o)]}}function Tl(){if(pl)return dl;pl=1;var t=$(),e=Lt(),n=je(),i=Dt(),r=kl(),o=TypeError;return dl=function(a,s){var l=arguments.length<2?r(a):s;if(e(l))return n(t(l,a));throw new o(i(a)+" is not iterable")},dl}function Cl(){if(vl)return gl;vl=1;var t=TypeError;return gl=function(e,n){if(el;){if(e=+arguments[l++],n(e,1114111)!==e)throw new i(e+" is not a valid code point");o[l]=e<65536?r(e):r(55296+((e-=65536)>>10),e%1024+56320)}return a(o,"")}})}();var t=hi(),e=b(),n=Sl(),i=At(),r=$(),o=St(),a=I(),s=function(){if(al)return ol;al=1;var t=P(),e=me(),n=I(),i=he(),r=e("iterator");return ol=!t((function(){var t=new URL("b?a=1&b=2&c=3","https://a"),e=t.searchParams,o=new URLSearchParams("a=1&a=2&b=3"),a="";return t.pathname="c%20d",e.forEach((function(t,n){e.delete("b"),a+=n+t})),o.delete("a",2),o.delete("b",void 0),i&&(!t.toJSON||!o.has("a",1)||o.has("a",2)||!o.has("a",void 0)||o.has("b"))||!e.size&&(i||!n)||!e.sort||"https://a/c%20d?a=1&c=3"!==t.href||"3"!==e.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!e[r]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("https://тест").host||"#%D0%B1"!==new URL("https://a#б").hash||"a1c3"!==a||"x"!==new URL("https://x",void 0).host}))}(),l=on(),c=Ea(),u=xl(),h=jr(),f=Nr(),d=nn(),p=Ol(),g=Pt(),v=ve(),m=$i(),y=vi(),w=je(),S=It(),x=po(),O=Wi(),k=wt(),T=Tl(),C=kl(),A=Vr(),R=Cl(),E=me(),j=go(),N=E("iterator"),F="URLSearchParams",D=F+"Iterator",L=d.set,_=d.getterFor(F),V=d.getterFor(D),B=n("fetch"),H=n("Request"),M=n("Headers"),U=H&&H.prototype,z=M&&M.prototype,q=e.TypeError,W=e.encodeURIComponent,G=String.fromCharCode,K=i("String","fromCodePoint"),J=parseInt,Y=o("".charAt),Q=o([].join),X=o([].push),Z=o("".replace),tt=o([].shift),et=o([].splice),nt=o("".split),it=o("".slice),rt=o(/./.exec),ot=/\+/g,at=/^[0-9a-f]+$/i,st=function(t,e){var n=it(t,e,e+2);return rt(at,n)?J(n,16):NaN},lt=function(t){for(var e=0,n=128;n>0&&t&n;n>>=1)e++;return e},ct=function(t){var e=null;switch(t.length){case 1:e=t[0];break;case 2:e=(31&t[0])<<6|63&t[1];break;case 3:e=(15&t[0])<<12|(63&t[1])<<6|63&t[2];break;case 4:e=(7&t[0])<<18|(63&t[1])<<12|(63&t[2])<<6|63&t[3]}return e>1114111?null:e},ut=function(t){for(var e=(t=Z(t,ot," ")).length,n="",i=0;ie){n+="%",i++;continue}var o=st(t,i+1);if(o!=o){n+=r,i++;continue}i+=2;var a=lt(o);if(0===a)r=G(o);else{if(1===a||a>4){n+="�",i++;continue}for(var s=[o],l=1;le||"%"!==Y(t,i));){var c=st(t,i+1);if(c!=c){i+=3;break}if(c>191||c<128)break;X(s,c),i+=2,l++}if(s.length!==a){n+="�";continue}var u=ct(s);null===u?n+="�":r=K(u)}}n+=r,i++}return n},ht=/[!'()~]|%20/g,ft={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},dt=function(t){return ft[t]},pt=function(t){return Z(W(t),ht,dt)},gt=f((function(t,e){L(this,{type:D,target:_(t).entries,index:0,kind:e})}),F,(function(){var t=V(this),e=t.target,n=t.index++;if(!e||n>=e.length)return t.target=null,A(void 0,!0);var i=e[n];switch(t.kind){case"keys":return A(i.key,!1);case"values":return A(i.value,!1)}return A([i.key,i.value],!1)}),!0),vt=function(t){this.entries=[],this.url=null,void 0!==t&&(S(t)?this.parseObject(t):this.parseQuery("string"==typeof t?"?"===Y(t,0)?it(t,1):t:x(t)))};vt.prototype={type:F,bindURL:function(t){this.url=t,this.update()},parseObject:function(t){var e,n,i,o,a,s,l,c=this.entries,u=C(t);if(u)for(n=(e=T(t,u)).next;!(i=r(n,e)).done;){if(a=(o=T(w(i.value))).next,(s=r(a,o)).done||(l=r(a,o)).done||!r(a,o).done)throw new q("Expected sequence with length 2");X(c,{key:x(s.value),value:x(l.value)})}else for(var h in t)v(t,h)&&X(c,{key:h,value:x(t[h])})},parseQuery:function(t){if(t)for(var e,n,i=this.entries,r=nt(t,"&"),o=0;o0?arguments[0]:void 0));a||(this.size=t.entries.length)},mt=bt.prototype;if(u(mt,{append:function(t,e){var n=_(this);R(arguments.length,2),X(n.entries,{key:x(t),value:x(e)}),a||this.length++,n.updateURL()},delete:function(t){for(var e=_(this),n=R(arguments.length,1),i=e.entries,r=x(t),o=n<2?void 0:arguments[1],s=void 0===o?o:x(o),l=0;le.key?1:-1})),t.updateURL()},forEach:function(t){for(var e,n=_(this).entries,i=m(t,arguments.length>1?arguments[1]:void 0),r=0;r1?Ot(arguments[1]):{})}}),g(H)){var kt=function(t){return p(this,U),new H(t,arguments.length>1?Ot(arguments[1]):{})};U.constructor=kt,kt.prototype=U,t({global:!0,constructor:!0,dontCallGetSet:!0,forced:!0},{Request:kt})}}return bl={URLSearchParams:bt,getState:_}}yl||(yl=1,Pl());var Il={getBootstrapVersion:function(){var e,n,i=5;if("undefined"!=typeof window&&null!==(e=window.bootstrap)&&void 0!==e&&null!==(e=e.Tooltip)&&void 0!==e&&e.VERSION){var r=window.bootstrap.Tooltip.VERSION;void 0!==r&&(i=parseInt(r,10))}else if(void 0!==t&&null!==(n=t.fn)&&void 0!==n&&null!==(n=n.dropdown)&&void 0!==n&&null!==(n=n.Constructor)&&void 0!==n&&n.VERSION){var o=t.fn.dropdown.Constructor.VERSION;void 0!==o&&(i=parseInt(o,10))}return i},getIconsPrefix:function(t){return{bootstrap3:"glyphicon",bootstrap4:"fa",bootstrap5:"bi","bootstrap-table":"icon",bulma:"fa",foundation:"fa",materialize:"material-icons",semantic:"fa"}[t]||"fa"},getIcons:function(t,e){return t[e]||{}},assignIcons:function(t,e,n){for(var i=0,r=Object.keys(t);i1?e-1:0),i=1;i0&&void 0!==arguments[0]?arguments[0]:{};return 0===Object.entries(t).length&&t.constructor===Object},isNumeric:function(t){return!isNaN(parseFloat(t))&&isFinite(t)},getFieldTitle:function(t,e){var n,i=r(t);try{for(i.s();!(n=i.n()).done;){var o=n.value;if(o.field===e)return o.title}}catch(t){i.e(t)}finally{i.f()}return""},setFieldIndex:function(t){var e,n=0,i=[],o=r(t[0]);try{for(o.s();!(e=o.n()).done;){n+=+e.value.colspan||1}}catch(t){o.e(t)}finally{o.f()}for(var a=0;a1){for(var h=0,f=function(t){var e=o.filter((function(e){return e.fieldIndex===t})),n=e[e.length-1];if(e.length>1)for(var i=0;i0}}}catch(t){l.e(t)}finally{l.f()}}}catch(t){a.e(t)}finally{a.f()}if(!(t.length<2)){var p,g=r(e);try{var v=function(){var t=p.value,e=o.filter((function(e){return e.fieldIndex===t.fieldIndex}));if(e.length>1){var n,i=r(e);try{for(i.s();!(n=i.n()).done;){n.value.visible=t.visible}}catch(t){i.e(t)}finally{i.f()}}};for(g.s();!(p=g.n()).done;)v()}catch(t){g.e(t)}finally{g.f()}}},getScrollBarWidth:function(){if(void 0===this.cachedWidth){var e=t("
").addClass("fixed-table-scroll-inner"),n=t("
").addClass("fixed-table-scroll-outer");n.append(e),t("body").append(n);var i=e[0].offsetWidth;n.css("overflow","scroll");var r=e[0].offsetWidth;i===r&&(r=n[0].clientWidth),n.remove(),this.cachedWidth=i-r}return this.cachedWidth},calculateObjectValue:function(t,e,n,i){var o=e;if("string"==typeof e){var a=e.split(".");if(a.length>1){o=window;var s,l=r(a);try{for(l.s();!(s=l.n()).done;){o=o[s.value]}}catch(t){l.e(t)}finally{l.f()}}else o=window[e]}return null!==o&&"object"===h(o)?o:"function"==typeof o?o.apply(t,n||[]):!o&&"string"==typeof e&&n&&this.sprintf.apply(this,[e].concat(c(n)))?this.sprintf.apply(this,[e].concat(c(n))):i},compareObjects:function(t,e,n){var i=Object.keys(t),r=Object.keys(e);if(n&&i.length!==r.length)return!1;for(var o=0,a=i;o/g,">").replace(/"/g,""").replace(/'/g,"'"):t},unescapeHTML:function(t){return"string"==typeof t&&t?t.toString().replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,'"').replace(/'/g,"'"):t},removeHTML:function(t){return t?t.toString().replace(/(<([^>]+)>)/gi,"").replace(/&[#A-Za-z0-9]+;/gi,"").trim():t},getRealDataAttr:function(t){for(var e=0,n=Object.entries(t);e3&&void 0!==arguments[3]?arguments[3]:void 0,o=t;if(void 0!==i&&(n=i),"string"!=typeof e||t.hasOwnProperty(e))return n?this.escapeHTML(t[e]):t[e];var a,s=r(e.split("."));try{for(s.s();!(a=s.n()).done;){var l=a.value;o=o&&o[l]}}catch(t){s.e(t)}finally{s.f()}return n?this.escapeHTML(o):o},isIEBrowser:function(){return navigator.userAgent.includes("MSIE ")||/Trident.*rv:11\./.test(navigator.userAgent)},findIndex:function(t,e){var n,i=r(t);try{for(i.s();!(n=i.n()).done;){var o=n.value;if(JSON.stringify(o)===JSON.stringify(e))return t.indexOf(o)}}catch(t){i.e(t)}finally{i.f()}return-1},trToData:function(e,n){var i=this,r=[],o=[];return n.each((function(n,a){var s=t(a),l={};l._id=s.attr("id"),l._class=s.attr("class"),l._data=i.getRealDataAttr(s.data()),l._style=s.attr("style"),s.find(">td,>th").each((function(r,a){for(var s=t(a),c=+s.attr("colspan")||1,u=+s.attr("rowspan")||1,h=r;o[n]&&o[n][h];h++);for(var f=h;fe?n:0;if(i.sortEmptyLast){if(""===t)return 1;if(""===e)return-1}return t===e?0:("string"!=typeof t&&(t=t.toString()),-1===t.localeCompare(e)?-1*n:n)},getEventName:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return e=e||"".concat(+new Date).concat(~~(1e6*Math.random())),"".concat(t,"-").concat(e)},hasDetailViewIcon:function(t){return t.detailView&&t.detailViewIcon&&!t.cardView},getDetailViewIndexOffset:function(t){return this.hasDetailViewIcon(t)&&"right"!==t.detailViewAlign?1:0},checkAutoMergeCells:function(t){var e,n=r(t);try{for(n.s();!(e=n.n()).done;)for(var i=e.value,o=0,a=Object.keys(i);o0){var i=e.substring(0,n).trim(),r=e.substring(n+1).trim();t.style.setProperty(i,r)}}));else if(Array.isArray(e)){var n,i=r(e);try{for(i.s();!(n=i.n()).done;){var o=n.value;this.parseStyle(t,o)}}catch(t){i.e(t)}finally{i.f()}}else if("object"===h(e))for(var a=0,s=Object.entries(e);a',icon:'',inputGroup:'
%s%s
',pageDropdown:['"],pageDropdownItem:'
',pagination:['
    ',"
"],paginationItem:'
  • %s
  • ',searchButton:'',searchClearButton:'',searchInput:'',toolbarDropdown:['"],toolbarDropdownItem:'',toolbarDropdownSeparator:'
  • '}},4:{classes:{buttonActive:"active",buttons:"secondary",buttonsDropdown:"btn-group",buttonsGroup:"btn-group",buttonsPrefix:"btn",dropdownActive:"active",dropup:"dropup",input:"form-control",inputGroup:"btn-group",inputPrefix:"form-control-",paginationActive:"active",paginationDropdown:"btn-group dropdown",pull:"float",select:"form-control"},html:{dropdownCaret:'',icon:'',inputGroup:'
    %s
    %s
    ',pageDropdown:['"],pageDropdownItem:'%s',pagination:['
      ',"
    "],paginationItem:'
  • %s
  • ',searchButton:'',searchClearButton:'',searchInput:'',toolbarDropdown:['"],toolbarDropdownItem:'',toolbarDropdownSeparator:''}},5:{classes:{buttonActive:"active",buttons:"secondary",buttonsDropdown:"btn-group",buttonsGroup:"btn-group",buttonsPrefix:"btn",dropdownActive:"active",dropup:"dropup",input:"form-control",inputGroup:"btn-group",inputPrefix:"form-control-",paginationActive:"active",paginationDropdown:"btn-group dropdown",pull:"float",select:"form-select"},html:{dataToggle:"data-bs-toggle",dropdownCaret:'',icon:'',inputGroup:'
    %s%s
    ',pageDropdown:['"],pageDropdownItem:'%s',pagination:['
      ',"
    "],paginationItem:'
  • %s
  • ',searchButton:'',searchClearButton:'',searchInput:'',toolbarDropdown:['"],toolbarDropdownItem:'',toolbarDropdownSeparator:''}}}[Al],Rl={ajax:void 0,ajaxOptions:{},buttons:{},buttonsAlign:"right",buttonsAttributeTitle:"title",buttonsClass:$l.classes.buttons,buttonsOrder:["paginationSwitch","refresh","toggle","fullscreen","columns"],buttonsPrefix:$l.classes.buttonsPrefix,buttonsToolbar:void 0,cache:!0,cardView:!1,checkboxHeader:!0,classes:"table table-bordered table-hover",clickToSelect:!1,columns:[[]],contentType:"application/json",customSearch:void 0,customSort:void 0,data:[],dataField:"rows",dataType:"json",detailFilter:function(t,e){return!0},detailFormatter:function(t,e){return""},detailView:!1,detailViewAlign:"left",detailViewByClick:!1,detailViewIcon:!0,escape:!1,escapeTitle:!0,filterOptions:{filterAlgorithm:"and"},fixedScroll:!1,footerField:"footer",footerStyle:function(t){return{}},headerStyle:function(t){return{}},height:void 0,icons:{},iconSize:void 0,iconsPrefix:void 0,idField:void 0,ignoreClickToSelectOn:function(t){var e=t.tagName;return["A","BUTTON"].includes(e)},loadingFontSize:"auto",loadingTemplate:function(t){return'\n '.concat(t,'\n \n \n ')},locale:void 0,maintainMetaData:!1,method:"get",minimumCountColumns:1,multipleSelectRow:!1,pageList:[10,25,50,100],pageNumber:1,pageSize:10,pagination:!1,paginationDetailHAlign:"left",paginationHAlign:"right",paginationLoadMore:!1,paginationLoop:!0,paginationNextText:"›",paginationPagesBySide:1,paginationParts:["pageInfo","pageSize","pageList"],paginationPreText:"‹",paginationSuccessivelySize:5,paginationUseIntermediate:!1,paginationVAlign:"bottom",queryParams:function(t){return t},queryParamsType:"limit",regexSearch:!1,rememberOrder:!1,responseHandler:function(t){return t},rowAttributes:function(t,e){return{}},rowStyle:function(t,e){return{}},search:!1,searchable:!1,searchAccentNeutralise:!1,searchAlign:"right",searchHighlight:!1,searchOnEnterKey:!1,searchSelector:!1,searchText:"",searchTimeOut:500,selectItemName:"btSelectItem",serverSort:!0,showButtonIcons:!0,showButtonText:!1,showColumns:!1,showColumnsSearch:!1,showColumnsToggleAll:!1,showExtendedPagination:!1,showFooter:!1,showFullscreen:!1,showHeader:!0,showPaginationSwitch:!1,showRefresh:!1,showSearchButton:!1,showSearchClearButton:!1,showToggle:!1,sidePagination:"client",silentSort:!0,singleSelect:!1,smartDisplay:!0,sortable:!0,sortClass:void 0,sortEmptyLast:!1,sortName:void 0,sortOrder:void 0,sortReset:!1,sortResetPage:!1,sortStable:!1,strictSearch:!1,theadClasses:"",toolbar:void 0,toolbarAlign:"left",totalField:"total",totalNotFiltered:0,totalNotFilteredField:"totalNotFiltered",totalRows:0,trimOnSearch:!0,undefinedText:"-",uniqueId:void 0,url:void 0,virtualScroll:!1,virtualScrollItemHeight:void 0,visibleSearch:!1,onAll:function(t,e){return!1},onCheck:function(t){return!1},onCheckAll:function(t){return!1},onCheckSome:function(t){return!1},onClickCell:function(t,e,n,i){return!1},onClickRow:function(t,e){return!1},onCollapseRow:function(t,e){return!1},onColumnSwitch:function(t,e){return!1},onColumnSwitchAll:function(t){return!1},onDblClickCell:function(t,e,n,i){return!1},onDblClickRow:function(t,e){return!1},onExpandRow:function(t,e,n){return!1},onLoadError:function(t){return!1},onLoadSuccess:function(t){return!1},onPageChange:function(t,e){return!1},onPostBody:function(){return!1},onPostFooter:function(){return!1},onPostHeader:function(){return!1},onPreBody:function(t){return!1},onRefresh:function(t){return!1},onRefreshOptions:function(t){return!1},onResetView:function(){return!1},onScrollBody:function(){return!1},onSearch:function(t){return!1},onSort:function(t,e){return!1},onToggle:function(t){return!1},onTogglePagination:function(t){return!1},onUncheck:function(t){return!1},onUncheckAll:function(t){return!1},onUncheckSome:function(t){return!1},onVirtualScroll:function(t,e){return!1}},El={formatLoadingMessage:function(){return"Loading, please wait"},formatRecordsPerPage:function(t){return"".concat(t," rows per page")},formatShowingRows:function(t,e,n,i){return void 0!==i&&i>0&&i>n?"Showing ".concat(t," to ").concat(e," of ").concat(n," rows (filtered from ").concat(i," total rows)"):"Showing ".concat(t," to ").concat(e," of ").concat(n," rows")},formatSRPaginationPreText:function(){return"previous page"},formatSRPaginationPageText:function(t){return"to page ".concat(t)},formatSRPaginationNextText:function(){return"next page"},formatDetailPagination:function(t){return"Showing ".concat(t," rows")},formatSearch:function(){return"Search"},formatClearSearch:function(){return"Clear Search"},formatNoMatches:function(){return"No matching records found"},formatPaginationSwitch:function(){return"Hide/Show pagination"},formatPaginationSwitchDown:function(){return"Show pagination"},formatPaginationSwitchUp:function(){return"Hide pagination"},formatRefresh:function(){return"Refresh"},formatToggleOn:function(){return"Show card view"},formatToggleOff:function(){return"Hide card view"},formatColumns:function(){return"Columns"},formatColumnsToggleAll:function(){return"Toggle all"},formatFullscreen:function(){return"Fullscreen"},formatAllRows:function(){return"All"}},jl={align:void 0,cardVisible:!0,cellStyle:void 0,checkbox:!1,checkboxEnabled:!0,class:void 0,clickToSelect:!0,colspan:void 0,detailFormatter:void 0,escape:void 0,events:void 0,falign:void 0,field:void 0,footerFormatter:void 0,footerStyle:void 0,formatter:void 0,halign:void 0,order:"asc",radio:!1,rowspan:void 0,searchable:!0,searchFormatter:!0,searchHighlightFormatter:!1,showSelectTitle:!1,sortable:!1,sorter:void 0,sortName:void 0,switchable:!0,switchableLabel:void 0,title:void 0,titleTooltip:void 0,valign:void 0,visible:!0,width:void 0,widthUnit:"px"};Object.assign(Rl,El);var Nl={COLUMN_DEFAULTS:jl,CONSTANTS:$l,DEFAULTS:Rl,EVENTS:{"all.bs.table":"onAll","check-all.bs.table":"onCheckAll","check-some.bs.table":"onCheckSome","check.bs.table":"onCheck","click-cell.bs.table":"onClickCell","click-row.bs.table":"onClickRow","collapse-row.bs.table":"onCollapseRow","column-switch-all.bs.table":"onColumnSwitchAll","column-switch.bs.table":"onColumnSwitch","dbl-click-cell.bs.table":"onDblClickCell","dbl-click-row.bs.table":"onDblClickRow","expand-row.bs.table":"onExpandRow","load-error.bs.table":"onLoadError","load-success.bs.table":"onLoadSuccess","page-change.bs.table":"onPageChange","post-body.bs.table":"onPostBody","post-footer.bs.table":"onPostFooter","post-header.bs.table":"onPostHeader","pre-body.bs.table":"onPreBody","refresh-options.bs.table":"onRefreshOptions","refresh.bs.table":"onRefresh","reset-view.bs.table":"onResetView","scroll-body.bs.table":"onScrollBody","search.bs.table":"onSearch","sort.bs.table":"onSort","toggle-pagination.bs.table":"onTogglePagination","toggle.bs.table":"onToggle","uncheck-all.bs.table":"onUncheckAll","uncheck-some.bs.table":"onUncheckSome","uncheck.bs.table":"onUncheck","virtual-scroll.bs.table":"onVirtualScroll"},ICONS:{glyphicon:{clearSearch:"glyphicon-trash",columns:"glyphicon-th icon-th",detailClose:"glyphicon-minus icon-minus",detailOpen:"glyphicon-plus icon-plus",fullscreen:"glyphicon-fullscreen",paginationSwitchDown:"glyphicon-collapse-down icon-chevron-down",paginationSwitchUp:"glyphicon-collapse-up icon-chevron-up",refresh:"glyphicon-refresh icon-refresh",search:"glyphicon-search",toggleOff:"glyphicon-list-alt icon-list-alt",toggleOn:"glyphicon-list-alt icon-list-alt"},fa:{clearSearch:"fa-trash",columns:"fa-th-list",detailClose:"fa-minus",detailOpen:"fa-plus",fullscreen:"fa-arrows-alt",paginationSwitchDown:"fa-caret-square-down",paginationSwitchUp:"fa-caret-square-up",refresh:"fa-sync",search:"fa-search",toggleOff:"fa-toggle-off",toggleOn:"fa-toggle-on"},bi:{clearSearch:"bi-trash",columns:"bi-list-ul",detailClose:"bi-dash",detailOpen:"bi-plus",fullscreen:"bi-arrows-move",paginationSwitchDown:"bi-caret-down-square",paginationSwitchUp:"bi-caret-up-square",refresh:"bi-arrow-clockwise",search:"bi-search",toggleOff:"bi-toggle-off",toggleOn:"bi-toggle-on"},icon:{clearSearch:"icon-trash-2",columns:"icon-list",detailClose:"icon-minus",detailOpen:"icon-plus",fullscreen:"icon-maximize",paginationSwitchDown:"icon-arrow-up-circle",paginationSwitchUp:"icon-arrow-down-circle",refresh:"icon-refresh-cw",search:"icon-search",toggleOff:"icon-toggle-right",toggleOn:"icon-toggle-right"},"material-icons":{clearSearch:"delete",columns:"view_list",detailClose:"remove",detailOpen:"add",fullscreen:"fullscreen",paginationSwitchDown:"grid_on",paginationSwitchUp:"grid_off",refresh:"refresh",search:"search",sort:"sort",toggleOff:"tablet",toggleOn:"tablet_android"}},LOCALES:{en:El,"en-US":El},METHODS:["getOptions","refreshOptions","getData","getFooterData","getSelections","load","append","prepend","remove","removeAll","insertRow","updateRow","getRowByUniqueId","updateByUniqueId","removeByUniqueId","updateCell","updateCellByUniqueId","showRow","hideRow","getHiddenRows","showColumn","hideColumn","getVisibleColumns","getHiddenColumns","showAllColumns","hideAllColumns","mergeCells","checkAll","uncheckAll","checkInvert","check","uncheck","checkBy","uncheckBy","refresh","destroy","resetView","showLoading","hideLoading","togglePagination","toggleFullscreen","toggleView","resetSearch","filterBy","sortBy","sortReset","scrollTo","getScrollPosition","selectPage","prevPage","nextPage","toggleDetailView","expandRow","collapseRow","expandRowByUniqueId","collapseRowByUniqueId","expandAllRows","collapseAllRows","updateColumnTitle","updateFormatText"],THEME:"bootstrap".concat(Al),VERSION:"1.24.1"},Fl=function(){return i((function t(e){var i=this;n(this,t),this.rows=e.rows,this.scrollEl=e.scrollEl,this.contentEl=e.contentEl,this.callback=e.callback,this.itemHeight=e.itemHeight,this.cache={},this.scrollTop=this.scrollEl.scrollTop,this.initDOM(this.rows,e.fixedScroll),this.scrollEl.scrollTop=this.scrollTop,this.lastCluster=0;var r=function(){i.lastCluster!==(i.lastCluster=i.getNum())&&(i.initDOM(i.rows),i.callback(i.startIndex,i.endIndex))};this.scrollEl.addEventListener("scroll",r,!1),this.destroy=function(){i.contentEl.innerHtml="",i.scrollEl.removeEventListener("scroll",r,!1)}}),[{key:"initDOM",value:function(t,e){void 0===this.clusterHeight?(this.cache.scrollTop=this.scrollEl.scrollTop,this.cache.data=this.contentEl.innerHTML=t[0]+t[0]+t[0],this.getRowsHeight(t)):0===this.blockHeight&&this.getRowsHeight(t);var n=this.initData(t,this.getNum(e)),i=n.rows.join(""),r=this.checkChanges("data",i),o=this.checkChanges("top",n.topOffset),a=this.checkChanges("bottom",n.bottomOffset),s=[];r&&o?(n.topOffset&&s.push(this.getExtra("top",n.topOffset)),s.push(i),n.bottomOffset&&s.push(this.getExtra("bottom",n.bottomOffset)),this.startIndex=n.start,this.endIndex=n.end,this.contentEl.innerHTML=s.join(""),e&&(this.contentEl.scrollTop=this.cache.scrollTop)):a&&(this.contentEl.lastChild.style.height="".concat(n.bottomOffset,"px"))}},{key:"getRowsHeight",value:function(){if(void 0===this.itemHeight||0===this.itemHeight){var t=this.contentEl.children,e=t[Math.floor(t.length/2)];this.itemHeight=e.offsetHeight}this.blockHeight=50*this.itemHeight,this.clusterRows=200,this.clusterHeight=4*this.blockHeight}},{key:"getNum",value:function(t){return this.scrollTop=t?this.cache.scrollTop:this.scrollEl.scrollTop,Math.floor(this.scrollTop/(this.clusterHeight-this.blockHeight))||0}},{key:"initData",value:function(t,e){if(t.length<50)return{topOffset:0,bottomOffset:0,rowsAbove:0,rows:t};var n=Math.max((this.clusterRows-50)*e,0),i=n+this.clusterRows,r=Math.max(n*this.itemHeight,0),o=Math.max((t.length-i)*this.itemHeight,0),a=[],s=n;r<1&&s++;for(var l=n;l
    ':"",n=["bottom","both"].includes(this.options.paginationVAlign)?'
    ':"",i=Il.calculateObjectValue(this.options,this.options.loadingTemplate,[this.options.formatLoadingMessage()]);this.$container=t('\n
    \n
    \n ').concat(e,'\n
    \n
    \n
    \n
    \n ').concat(i,'\n
    \n
    \n \n
    \n ').concat(n,"\n
    \n ")),this.$container.insertAfter(this.$el),this.$tableContainer=this.$container.find(".fixed-table-container"),this.$tableHeader=this.$container.find(".fixed-table-header"),this.$tableBody=this.$container.find(".fixed-table-body"),this.$tableLoading=this.$container.find(".fixed-table-loading"),this.$tableFooter=this.$el.find("tfoot"),this.options.buttonsToolbar?this.$toolbar=t("body").find(this.options.buttonsToolbar):this.$toolbar=this.$container.find(".fixed-table-toolbar"),this.$pagination=this.$container.find(".fixed-table-pagination"),this.$tableBody.append(this.$el),this.$container.after('
    '),this.$el.addClass(this.options.classes),this.$tableLoading.addClass(this.options.classes),this.options.height&&(this.$tableContainer.addClass("fixed-height"),this.options.showFooter&&this.$tableContainer.addClass("has-footer"),this.options.classes.split(" ").includes("table-bordered")&&(this.$tableBody.append('
    '),this.$tableBorder=this.$tableBody.find(".fixed-table-border"),this.$tableLoading.addClass("fixed-table-border")),this.$tableFooter=this.$container.find(".fixed-table-footer"))}},{key:"initTable",value:function(){var n=this,i=[];if(this.$header=this.$el.find(">thead"),this.$header.length?this.options.theadClasses&&this.$header.addClass(this.options.theadClasses):this.$header=t('')).appendTo(this.$el),this._headerTrClasses=[],this._headerTrStyles=[],this.$header.find("tr").each((function(e,r){var o=t(r),a=[];o.find("th").each((function(e,n){var i=t(n);void 0!==i.data("field")&&i.data("field","".concat(i.data("field")));var r=Object.assign({},i.data());for(var o in r)t.fn.bootstrapTable.columnDefaults.hasOwnProperty(o)&&delete r[o];a.push(Il.extend({},{_data:Il.getRealDataAttr(r),title:i.html(),class:i.attr("class"),titleTooltip:i.attr("title"),rowspan:i.attr("rowspan")?+i.attr("rowspan"):void 0,colspan:i.attr("colspan")?+i.attr("colspan"):void 0},i.data()))})),i.push(a),o.attr("class")&&n._headerTrClasses.push(o.attr("class")),o.attr("style")&&n._headerTrStyles.push(o.attr("style"))})),Array.isArray(this.options.columns[0])||(this.options.columns=[this.options.columns]),this.options.columns=Il.extend(!0,[],i,this.options.columns),this.columns=[],this.fieldsColumnsIndex=[],!1!==this.optionsColumnsChanged&&Il.setFieldIndex(this.options.columns),this.options.columns.forEach((function(t,i){t.forEach((function(t,r){var o=Il.extend({},e.COLUMN_DEFAULTS,t,{passed:t});void 0!==o.fieldIndex&&(n.columns[o.fieldIndex]=o,n.fieldsColumnsIndex[o.field]=o.fieldIndex),n.options.columns[i][r]=o}))})),!this.options.data.length){var r=Il.trToData(this.columns,this.$el.find(">tbody>tr"));r.length&&(this.options.data=r,this.fromHtml=!0)}this.options.pagination&&"server"!==this.options.sidePagination||(this.footerData=Il.trToData(this.columns,this.$el.find(">tfoot>tr"))),this.footerData&&this.$el.find("tfoot").html(""),!this.options.showFooter||this.options.cardView?this.$tableFooter.hide():this.$tableFooter.show()}},{key:"initHeader",value:function(){var e=this,n={},i=[];this.header={fields:[],styles:[],classes:[],formatters:[],detailFormatters:[],events:[],sorters:[],sortNames:[],cellStyles:[],searchables:[]},Il.updateFieldGroup(this.options.columns,this.columns),this.options.columns.forEach((function(t,r){var o=[];o.push(""));var a="";if(0===r&&Il.hasDetailViewIcon(e.options)){var s=e.options.columns.length>1?' rowspan="'.concat(e.options.columns.length,'"'):"";a='\n
    \n ')}a&&"right"!==e.options.detailViewAlign&&o.push(a),t.forEach((function(t,i){var a=Il.sprintf(' class="%s"',t.class),s=t.widthUnit,c=parseFloat(t.width),u=t.halign?t.halign:t.align,f=Il.sprintf("text-align: %s; ",u),d=Il.sprintf("text-align: %s; ",t.align),p=Il.sprintf("vertical-align: %s; ",t.valign);if(p+=Il.sprintf("width: %s; ",!t.checkbox&&!t.radio||c?c?c+s:void 0:t.showSelectTitle?void 0:"36px"),void 0!==t.fieldIndex||t.visible){var g=Il.calculateObjectValue(null,e.options.headerStyle,[t]),v=[],b=[],m="";if(g&&g.css)for(var y=0,w=Object.entries(g.css);y0)for(var k=0,T=Object.entries(t._data);k0?" data-not-first-th":"",b.length>0?b.join(" "):"",">"),o.push(Il.sprintf('
    ',e.options.sortable&&t.sortable?"sortable".concat("center"===u?" sortable-center":""," both"):""));var A=e.options.escape&&e.options.escapeTitle?Il.escapeHTML(t.title):t.title,$=A;t.checkbox&&(A="",!e.options.singleSelect&&e.options.checkboxHeader&&(A=''),e.header.stateField=t.field),t.radio&&(A="",e.header.stateField=t.field),!A&&t.showSelectTitle&&(A+=$),o.push(A),o.push("
    "),o.push('
    '),o.push("
    "),o.push("")}})),a&&"right"===e.options.detailViewAlign&&o.push(a),o.push(""),o.length>3&&i.push(o.join(""))})),this.$header.html(i.join("")),this.$header.find("th[data-field]").each((function(e,i){t(i).data(n[t(i).data("field")])})),this.$container.off("click",".th-inner").on("click",".th-inner",(function(n){var i=t(n.currentTarget);if(e.options.detailView&&!i.parent().hasClass("bs-checkbox")&&i.closest(".bootstrap-table")[0]!==e.$container[0])return!1;e.options.sortable&&i.parent().data().sortable&&e.onSort(n)}));var r=Il.getEventName("resize.bootstrap-table",this.$el.attr("id"));t(window).off(r),!this.options.showHeader||this.options.cardView?(this.$header.hide(),this.$tableHeader.hide(),this.$tableLoading.css("top",0)):(this.$header.show(),this.$tableHeader.show(),this.$tableLoading.css("top",this.$header.outerHeight()+1),this.getCaret(),t(window).on(r,(function(){return e.resetView()}))),this.$selectAll=this.$header.find('[name="btSelectAll"]'),this.$selectAll.off("click").on("click",(function(n){n.stopPropagation();var i=t(n.currentTarget).prop("checked");e[i?"checkAll":"uncheckAll"](),e.updateSelected()}))}},{key:"initData",value:function(t,e){"append"===e?this.options.data=this.options.data.concat(t):"prepend"===e?this.options.data=[].concat(t).concat(this.options.data):(t=t||Il.deepCopy(this.options.data),this.options.data=Array.isArray(t)?t:t[this.options.dataField]),this.data=c(this.options.data),this.options.sortReset&&(this.unsortedData=c(this.data)),"server"!==this.options.sidePagination&&this.initSort()}},{key:"initSort",value:function(){var t=this,e=this.options.sortName,n="desc"===this.options.sortOrder?-1:1,i=this.header.fields.indexOf(this.options.sortName),r=0;-1!==i?(this.options.sortStable&&this.data.forEach((function(t,e){t.hasOwnProperty("_position")||(t._position=e)})),this.options.customSort?Il.calculateObjectValue(this.options,this.options.customSort,[this.options.sortName,this.options.sortOrder,this.data]):this.data.sort((function(r,o){t.header.sortNames[i]&&(e=t.header.sortNames[i]);var a=Il.getItemField(r,e,t.options.escape),s=Il.getItemField(o,e,t.options.escape),l=Il.calculateObjectValue(t.header,t.header.sorters[i],[a,s,r,o]);return void 0!==l?t.options.sortStable&&0===l?n*(r._position-o._position):n*l:Il.sort(a,s,n,t.options,r._position,o._position)})),void 0!==this.options.sortClass&&(clearTimeout(r),r=setTimeout((function(){t.$el.removeClass(t.options.sortClass);var e=t.$header.find('[data-field="'.concat(t.options.sortName,'"]')).index();t.$el.find("tr td:nth-child(".concat(e+1,")")).addClass(t.options.sortClass)}),250))):this.options.sortReset&&(this.data=c(this.unsortedData))}},{key:"sortReset",value:function(){this.options.sortName=void 0,this.options.sortOrder=void 0,this._sort()}},{key:"sortBy",value:function(t){this.options.sortName=t.field,this.options.sortOrder=t.hasOwnProperty("sortOrder")?t.sortOrder:"asc",this._sort()}},{key:"onSort",value:function(e){var n=e.type,i=e.currentTarget,r="keypress"===n?t(i):t(i).parent(),o=this.$header.find("th").eq(r.index());if(this.$header.add(this.$header_).find("span.order").remove(),this.options.sortName===r.data("field")){var a=this.options.sortOrder,s=this.columns[this.fieldsColumnsIndex[r.data("field")]].sortOrder||this.columns[this.fieldsColumnsIndex[r.data("field")]].order;void 0===a?this.options.sortOrder="asc":"asc"===a?this.options.sortOrder=this.options.sortReset?"asc"===s?"desc":void 0:"desc":"desc"===this.options.sortOrder&&(this.options.sortOrder=this.options.sortReset?"desc"===s?"asc":void 0:"asc"),void 0===this.options.sortOrder&&(this.options.sortName=void 0)}else this.options.sortName=r.data("field"),this.options.rememberOrder?this.options.sortOrder="asc"===r.data("order")?"desc":"asc":this.options.sortOrder=this.columns[this.fieldsColumnsIndex[r.data("field")]].sortOrder||this.columns[this.fieldsColumnsIndex[r.data("field")]].order;r.add(o).data("order",this.options.sortOrder),this.getCaret(),this._sort()}},{key:"_sort",value:function(){if("server"===this.options.sidePagination&&this.options.serverSort)return this.options.pageNumber=1,this.trigger("sort",this.options.sortName,this.options.sortOrder),void this.initServer(this.options.silentSort);this.options.pagination&&this.options.sortResetPage&&(this.options.pageNumber=1,this.initPagination()),this.trigger("sort",this.options.sortName,this.options.sortOrder),this.initSort(),this.initBody()}},{key:"initToolbar",value:function(){var e,n=this,i=this.options,o=[],a=0,s=0;this.$toolbar.find(".bs-bars").children().length&&t("body").append(t(i.toolbar)),this.$toolbar.html(""),"string"!=typeof i.toolbar&&"object"!==h(i.toolbar)||t(Il.sprintf('
    ',this.constants.classes.pull,i.toolbarAlign)).appendTo(this.$toolbar).append(t(i.toolbar)),o=['
    ')],"string"==typeof i.buttonsOrder&&(i.buttonsOrder=i.buttonsOrder.replace(/\[|\]| |'/g,"").split(",")),this.buttons=Object.assign(this.buttons,{paginationSwitch:{text:i.pagination?i.formatPaginationSwitchUp():i.formatPaginationSwitchDown(),icon:i.pagination?i.icons.paginationSwitchDown:i.icons.paginationSwitchUp,render:!1,event:this.togglePagination,attributes:{"aria-label":i.formatPaginationSwitch(),title:i.formatPaginationSwitch()}},refresh:{text:i.formatRefresh(),icon:i.icons.refresh,render:!1,event:this.refresh,attributes:{"aria-label":i.formatRefresh(),title:i.formatRefresh()}},toggle:{text:i.formatToggleOn(),icon:i.icons.toggleOff,render:!1,event:this.toggleView,attributes:{"aria-label":i.formatToggleOn(),title:i.formatToggleOn()}},fullscreen:{text:i.formatFullscreen(),icon:i.icons.fullscreen,render:!1,event:this.toggleFullscreen,attributes:{"aria-label":i.formatFullscreen(),title:i.formatFullscreen()}},columns:{render:!1,html:function(){var t=[];if(t.push('
    \n \n ").concat(n.constants.html.toolbarDropdown[0])),i.showColumnsSearch&&(t.push(Il.sprintf(n.constants.html.toolbarDropdownItem,Il.sprintf('',n.constants.classes.input,i.formatSearch()))),t.push(n.constants.html.toolbarDropdownSeparator)),i.showColumnsToggleAll){var e=n.getVisibleColumns().length===n.columns.filter((function(t){return!n.isSelectionColumn(t)})).length;t.push(Il.sprintf(n.constants.html.toolbarDropdownItem,Il.sprintf(' %s',e?'checked="checked"':"",i.formatColumnsToggleAll()))),t.push(n.constants.html.toolbarDropdownSeparator)}var r=0;return n.columns.forEach((function(t){t.visible&&r++})),n.columns.forEach((function(e,o){if(!n.isSelectionColumn(e)&&(!i.cardView||e.cardVisible)){var a=e.visible?' checked="checked"':"",l=r<=i.minimumCountColumns&&a?' disabled="disabled"':"";e.switchable&&(t.push(Il.sprintf(n.constants.html.toolbarDropdownItem,Il.sprintf(' %s',e.field,o,a,l,e.switchableLabel||e.title))),s++)}})),t.push(n.constants.html.toolbarDropdown[1],"
    "),t.join("")}}});for(var c={},u=0,f=Object.entries(this.buttons);u"}c[p]=v;var k="show".concat(p.charAt(0).toUpperCase()).concat(p.substring(1)),T=i[k];!(!g.hasOwnProperty("render")||g.hasOwnProperty("render")&&g.render)||void 0!==T&&!0!==T||(i[k]=!0),i.buttonsOrder.includes(p)||i.buttonsOrder.push(p)}var C,P=r(i.buttonsOrder);try{for(P.s();!(C=P.n()).done;){var I=C.value;i["show".concat(I.charAt(0).toUpperCase()).concat(I.substring(1))]&&o.push(c[I])}}catch(t){P.e(t)}finally{P.f()}o.push("
    "),(this.showToolbar||o.length>2)&&this.$toolbar.append(o.join(""));for(var A=function(){var t=l(R[$],2),e=t[0],i=t[1];if(i.hasOwnProperty("event")){if("function"==typeof i.event||"string"==typeof i.event){var r="string"==typeof i.event?window[i.event]:i.event;return n.$toolbar.find('button[name="'.concat(e,'"]')).off("click").on("click",(function(){return r.call(n)})),1}for(var o=function(){var t=l(s[a],2),i=t[0],r=t[1],o="string"==typeof r?window[r]:r;n.$toolbar.find('button[name="'.concat(e,'"]')).off(i).on(i,(function(){return o.call(n)}))},a=0,s=Object.entries(i.event);a'),B=V;if(i.showSearchButton||i.showSearchClearButton){var H=(i.showSearchButton?L:"")+(i.showSearchClearButton?_:"");B=i.search?Il.sprintf(this.constants.html.inputGroup,V,H):H}o.push(Il.sprintf('\n
    \n %s\n
    \n '),B)),this.$toolbar.append(o.join(""));var M=Il.getSearchInput(this);i.showSearchButton?(this.$toolbar.find(".search button[name=search]").off("click").on("click",(function(){clearTimeout(a),a=setTimeout((function(){n.onSearch({currentTarget:M})}),i.searchTimeOut)})),i.searchOnEnterKey&&D(M)):D(M),i.showSearchClearButton&&this.$toolbar.find(".search button[name=clearSearch]").click((function(){n.resetSearch()}))}else"string"==typeof i.searchSelector&&D(Il.getSearchInput(this))}},{key:"onSearch",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.currentTarget,i=e.firedByInitSearchText,r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(void 0!==n&&t(n).length&&r){var o=t(n).val().trim();if(this.options.trimOnSearch&&t(n).val()!==o&&t(n).val(o),this.searchText===o)return;var a=Il.getSearchInput(this),s=n instanceof jQuery?n:t(n);(s.is(a)||s.hasClass("search-input"))&&(this.searchText=o,this.options.searchText=o)}i||(this.options.pageNumber=1),this.initSearch(),i?"client"===this.options.sidePagination&&this.updatePagination():this.updatePagination(),this.trigger("search",this.searchText)}},{key:"initSearch",value:function(){var e=this;if(this.filterOptions=this.filterOptions||this.options.filterOptions,"server"!==this.options.sidePagination){if(this.options.customSearch)return this.data=Il.calculateObjectValue(this.options,this.options.customSearch,[this.options.data,this.searchText,this.filterColumns]),this.options.sortReset&&(this.unsortedData=c(this.data)),void this.initSort();var n=this.searchText&&(this.fromHtml?Il.escapeHTML(this.searchText):this.searchText),i=n?n.toLowerCase():"",r=Il.isEmptyObject(this.filterColumns)?null:this.filterColumns;this.options.searchAccentNeutralise&&(i=Il.normalizeAccent(i)),"function"==typeof this.filterOptions.filterAlgorithm?this.data=this.options.data.filter((function(t){return e.filterOptions.filterAlgorithm.apply(null,[t,r])})):"string"==typeof this.filterOptions.filterAlgorithm&&(this.data=r?this.options.data.filter((function(t){var n=e.filterOptions.filterAlgorithm;if("and"===n){for(var i in r)if(Array.isArray(r[i])&&!r[i].includes(t[i])||!Array.isArray(r[i])&&t[i]!==r[i])return!1}else if("or"===n){var o=!1;for(var a in r)(Array.isArray(r[a])&&r[a].includes(t[a])||!Array.isArray(r[a])&&t[a]===r[a])&&(o=!0);return o}return!0})):c(this.options.data));var o=this.getVisibleFields();this.data=i?this.data.filter((function(r,a){for(var s=0;s").html(u).text())),"string"==typeof u||"number"==typeof u)if(e.options.strictSearch){if("".concat(u).toLowerCase()===i)return!0}else if(e.options.regexSearch){if(Il.regexCompare(u,n))return!0}else{var d=/(?:(<=|=>|=<|>=|>|<)(?:\s+)?(-?\d+)?|(-?\d+)?(\s+)?(<=|=>|=<|>=|>|<))/gm.exec(e.searchText),p=!1;if(d){var g=d[1]||"".concat(d[5],"l"),v=d[2]||d[3],b=parseInt(u,10),m=parseInt(v,10);switch(g){case">":case"m;break;case"<":case">l":p=b=l":case"=>l":p=b<=m;break;case">=":case"=>":case"<=l":case"==m}}if(p||"".concat(u).toLowerCase().includes(i))return!0}}return!1})):this.data,this.options.sortReset&&(this.unsortedData=c(this.data)),this.initSort()}}},{key:"initPagination",value:function(){var t=this,e=this.options;if(e.pagination){this.$pagination.show();var n,i,r,o,a,s,l,c=[],u=!1,h=this.getData({includeHiddenRows:!1}),f=e.pageList;if("string"==typeof f&&(f=f.replace(/\[|\]| /g,"").toLowerCase().split(",")),f=f.map((function(t){return"string"==typeof t?t.toLowerCase()===e.formatAllRows().toLowerCase()||["all","unlimited"].includes(t.toLowerCase())?e.formatAllRows():+t:t})),this.paginationParts=e.paginationParts,"string"==typeof this.paginationParts&&(this.paginationParts=this.paginationParts.replace(/\[|\]| |'/g,"").split(",")),"server"!==e.sidePagination&&(e.totalRows=h.length),this.totalPages=0,e.totalRows&&(e.pageSize===e.formatAllRows()&&(e.pageSize=e.totalRows,u=!0),this.totalPages=1+~~((e.totalRows-1)/e.pageSize),e.totalPages=this.totalPages),this.totalPages>0&&e.pageNumber>this.totalPages&&(e.pageNumber=this.totalPages),this.pageFrom=(e.pageNumber-1)*e.pageSize+1,this.pageTo=e.pageNumber*e.pageSize,this.pageTo>e.totalRows&&(this.pageTo=e.totalRows),this.options.pagination&&"server"!==this.options.sidePagination&&(this.options.totalNotFiltered=this.options.data.length),this.options.showExtendedPagination||(this.options.totalNotFiltered=void 0),(this.paginationParts.includes("pageInfo")||this.paginationParts.includes("pageInfoShort")||this.paginationParts.includes("pageSize"))&&c.push('
    ')),this.paginationParts.includes("pageInfo")||this.paginationParts.includes("pageInfoShort")){var d=this.options.totalRows;"client"===this.options.sidePagination&&this.options.paginationLoadMore&&!this._paginationLoaded&&this.totalPages>1&&(d+=" +");var p=this.paginationParts.includes("pageInfoShort")?e.formatDetailPagination(d):e.formatShowingRows(this.pageFrom,this.pageTo,d,e.totalNotFiltered);c.push('\n '.concat(p,"\n "))}if(this.paginationParts.includes("pageSize")){c.push('
    ');var g=['
    \n \n ").concat(this.constants.html.pageDropdown[0])];f.forEach((function(n,i){var r;(!e.smartDisplay||0===i||f[i-1]")),c.push(e.formatRecordsPerPage(g.join("")))}if((this.paginationParts.includes("pageInfo")||this.paginationParts.includes("pageInfoShort")||this.paginationParts.includes("pageSize"))&&c.push("
    "),this.paginationParts.includes("pageList")){c.push('
    '),Il.sprintf(this.constants.html.pagination[0],Il.sprintf(" pagination-%s",e.iconSize)),Il.sprintf(this.constants.html.paginationItem," page-pre",e.formatSRPaginationPreText(),e.paginationPreText)),this.totalPagesthis.totalPages-i&&(i=i-(e.paginationSuccessivelySize-(this.totalPages-i))+1),i<1&&(i=1),r>this.totalPages&&(r=this.totalPages);var v=Math.round(e.paginationPagesBySide/2),b=function(n){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return Il.sprintf(t.constants.html.paginationItem,i+(n===e.pageNumber?" ".concat(t.constants.classes.paginationActive):""),e.formatSRPaginationPageText(n),n)};if(i>1){var m=e.paginationPagesBySide;for(m>=i&&(m=i-1),n=1;n<=m;n++)c.push(b(n));i-1===m+1?(n=i-1,c.push(b(n))):i-1>m&&(i-2*e.paginationPagesBySide>e.paginationPagesBySide&&e.paginationUseIntermediate?(n=Math.round((i-v)/2+v),c.push(b(n," page-intermediate"))):c.push(Il.sprintf(this.constants.html.paginationItem," page-first-separator disabled","","...")))}for(n=i;n<=r;n++)c.push(b(n));if(this.totalPages>r){var y=this.totalPages-(e.paginationPagesBySide-1);for(r>=y&&(y=r+1),r+1===y-1?(n=r+1,c.push(b(n))):y>r+1&&(this.totalPages-r>2*e.paginationPagesBySide&&e.paginationUseIntermediate?(n=Math.round((this.totalPages-v-r)/2+r),c.push(b(n," page-intermediate"))):c.push(Il.sprintf(this.constants.html.paginationItem," page-last-separator disabled","","..."))),n=y;n<=this.totalPages;n++)c.push(b(n))}c.push(Il.sprintf(this.constants.html.paginationItem," page-next",e.formatSRPaginationNextText(),e.paginationNextText)),c.push(this.constants.html.pagination[1],"
    ")}this.$pagination.html(c.join(""));var w=["bottom","both"].includes(e.paginationVAlign)?" ".concat(this.constants.classes.dropup):"";this.$pagination.last().find(".page-list > div").addClass(w),e.onlyInfoPagination||(o=this.$pagination.find(".page-list a"),a=this.$pagination.find(".page-pre"),s=this.$pagination.find(".page-next"),l=this.$pagination.find(".page-item").not(".page-next, .page-pre, .page-last-separator, .page-first-separator"),this.totalPages<=1&&this.$pagination.find("div.pagination").hide(),e.smartDisplay&&(f.length<2||e.totalRows<=f[0])&&this.$pagination.find("div.page-list").hide(),this.$pagination[this.getData().length?"show":"hide"](),e.paginationLoop||(1===e.pageNumber&&a.addClass("disabled"),e.pageNumber===this.totalPages&&s.addClass("disabled")),u&&(e.pageSize=e.formatAllRows()),o.off("click").on("click",(function(e){return t.onPageListChange(e)})),a.off("click").on("click",(function(e){return t.onPagePre(e)})),s.off("click").on("click",(function(e){return t.onPageNext(e)})),l.off("click").on("click",(function(e){return t.onPageNumber(e)})))}else this.$pagination.hide()}},{key:"updatePagination",value:function(e){e&&t(e.currentTarget).hasClass("disabled")||(this.options.maintainMetaData||this.resetRows(),this.initPagination(),this.trigger("page-change",this.options.pageNumber,this.options.pageSize),"server"===this.options.sidePagination||"client"===this.options.sidePagination&&this.options.paginationLoadMore&&!this._paginationLoaded&&this.options.pageNumber===this.totalPages?this.initServer():this.initBody())}},{key:"onPageListChange",value:function(e){e.preventDefault();var n=t(e.currentTarget);return n.parent().addClass(this.constants.classes.dropdownActive).siblings().removeClass(this.constants.classes.dropdownActive),this.options.pageSize=n.text().toUpperCase()===this.options.formatAllRows().toUpperCase()?this.options.formatAllRows():+n.text(),this.$toolbar.find(".page-size").text(this.options.pageSize),this.updatePagination(e),!1}},{key:"onPagePre",value:function(e){if(!t(e.target).hasClass("disabled"))return e.preventDefault(),this.options.pageNumber-1==0?this.options.pageNumber=this.options.totalPages:this.options.pageNumber--,this.updatePagination(e),!1}},{key:"onPageNext",value:function(e){if(!t(e.target).hasClass("disabled"))return e.preventDefault(),this.options.pageNumber+1>this.options.totalPages?this.options.pageNumber=1:this.options.pageNumber++,this.updatePagination(e),!1}},{key:"onPageNumber",value:function(e){if(e.preventDefault(),this.options.pageNumber!==+t(e.currentTarget).text())return this.options.pageNumber=+t(e.currentTarget).text(),this.updatePagination(e),!1}},{key:"initRow",value:function(e,n,i,r){var o=this;if(!(Il.findIndex(this.hiddenRows,e)>-1)){var a=Il.calculateObjectValue(this.options,this.options.rowStyle,[e,n],{}),u=Il.calculateObjectValue(this.options,this.options.rowAttributes,[e,n],{}),f={};if(e._data&&!Il.isEmptyObject(e._data))for(var d=0,p=Object.entries(e._data);dtbody"),this.$body.length||(this.$body=t("").appendTo(this.$el)),this.options.pagination&&"server"!==this.options.sidePagination||(this.pageFrom=1,this.pageTo=r.length);var o=[],a=t(document.createDocumentFragment()),s=!1,l=[];this.autoMergeCells=Il.checkAutoMergeCells(r.slice(this.pageFrom-1,this.pageTo));for(var c=this.pageFrom-1;c tr[data-uniqueid="%s"][data-has-detail-view]',p)).next();g.is("tr.detail-view")&&(l.push(c),n&&p===n||d.push(g[0]))}this.options.virtualScroll?o.push(t("
    ").html(d).html()):a.append(d)}}this.$el.removeAttr("role"),s?this.options.virtualScroll?(this.virtualScroll&&this.virtualScroll.destroy(),this.virtualScroll=new Fl({rows:o,fixedScroll:e,scrollEl:this.$tableBody[0],contentEl:this.$body[0],itemHeight:this.options.virtualScrollItemHeight,callback:function(t,e){i.fitHeader(),i.initBodyEvent(),i.trigger("virtual-scroll",t,e)}})):this.$body.html(a):(this.$body.html(''.concat(Il.sprintf('%s',this.getVisibleFields().length+Il.getDetailViewIndexOffset(this.options),this.options.formatNoMatches()),"")),this.$el.attr("role","presentation")),l.forEach((function(t){i.expandRow(t)})),e||this.scrollTo(0),this.initBodyEvent(),this.initFooter(),this.resetView(),this.updateSelected(),"server"!==this.options.sidePagination&&(this.options.totalRows=r.length),this.trigger("post-body",r)}},{key:"initBodyEvent",value:function(){var e=this;this.$body.find("> tr[data-index] > td").off("click dblclick").on("click dblclick",(function(n){var i=t(n.currentTarget);if(!(i.find(".detail-icon").length||i.index()-Il.getDetailViewIndexOffset(e.options)<0)){var r=i.parent(),o=t(n.target).parents(".card-views").children(),a=t(n.target).parents(".card-view"),s=r.data("index"),l=e.data[s],c=e.options.cardView?o.index(a):i[0].cellIndex,u=e.getVisibleFields()[c-Il.getDetailViewIndexOffset(e.options)],h=e.columns[e.fieldsColumnsIndex[u]],f=Il.getItemField(l,u,e.options.escape,h.escape);if(e.trigger("click"===n.type?"click-cell":"dbl-click-cell",u,f,l,i),e.trigger("click"===n.type?"click-row":"dbl-click-row",l,r,u),"click"===n.type&&e.options.clickToSelect&&h.clickToSelect&&!Il.calculateObjectValue(e.options,e.options.ignoreClickToSelectOn,[n.target])){var d=r.find(Il.sprintf('[name="%s"]',e.options.selectItemName));d.length&&d[0].click()}"click"===n.type&&e.options.detailViewByClick&&e.toggleDetailView(s,e.header.detailFormatters[e.fieldsColumnsIndex[u]])}})).off("mousedown").on("mousedown",(function(t){e.multipleSelectRowCtrlKey=t.ctrlKey||t.metaKey,e.multipleSelectRowShiftKey=t.shiftKey})),this.$body.find("> tr[data-index] > td > .detail-icon").off("click").on("click",(function(n){return n.preventDefault(),e.toggleDetailView(t(n.currentTarget).parent().parent().data("index")),!1})),this.$selectItem=this.$body.find(Il.sprintf('[name="%s"]',this.options.selectItemName)),this.$selectItem.off("click").on("click",(function(n){n.stopImmediatePropagation();var i=t(n.currentTarget);e._toggleCheck(i.prop("checked"),i.data("index"))})),this.header.events.forEach((function(n,i){var r=n;if(r){if("string"==typeof r&&(r=Il.calculateObjectValue(null,r)),!r)throw new Error("Unknown event in the scope: ".concat(n));var o=e.header.fields[i],a=e.getVisibleFields().indexOf(o);if(-1!==a){a+=Il.getDetailViewIndexOffset(e.options);var s=function(n){if(!r.hasOwnProperty(n))return 1;var i=r[n];e.$body.find(">tr:not(.no-records-found)").each((function(r,s){var l=t(s),c=l.find(e.options.cardView?".card-views>.card-view":">td").eq(a),u=n.indexOf(" "),h=n.substring(0,u),f=n.substring(u+1);c.find(f).off(h).on(h,(function(t){var n=l.data("index"),r=e.data[n],a=r[o];i.apply(e,[t,a,r,n])}))}))};for(var l in r)s(l)}}}))}},{key:"initServer",value:function(e,n){var i=this,o={},a=this.header.fields.indexOf(this.options.sortName),s={searchText:this.searchText,sortName:this.options.sortName,sortOrder:this.options.sortOrder};if(this.header.sortNames[a]&&(s.sortName=this.header.sortNames[a]),this.options.pagination&&"server"===this.options.sidePagination&&(s.pageSize=this.options.pageSize===this.options.formatAllRows()?this.options.totalRows:this.options.pageSize,s.pageNumber=this.options.pageNumber),this.options.url||this.options.ajax){if("limit"===this.options.queryParamsType&&(s={search:s.searchText,sort:s.sortName,order:s.sortOrder},this.options.pagination&&"server"===this.options.sidePagination&&(s.offset=this.options.pageSize===this.options.formatAllRows()?0:this.options.pageSize*(this.options.pageNumber-1),s.limit=this.options.pageSize,0!==s.limit&&this.options.pageSize!==this.options.formatAllRows()||delete s.limit)),this.options.search&&"server"===this.options.sidePagination&&this.options.searchable&&this.columns.filter((function(t){return t.searchable})).length){s.searchable=[];var l,c=r(this.columns);try{for(c.s();!(l=c.n()).done;){var u=l.value;!u.checkbox&&u.searchable&&(this.options.visibleSearch&&u.visible||!this.options.visibleSearch)&&s.searchable.push(u.field)}}catch(t){c.e(t)}finally{c.f()}}if(Il.isEmptyObject(this.filterColumnsPartial)||(s.filter=JSON.stringify(this.filterColumnsPartial,null)),Il.extend(s,n||{}),!1!==(o=Il.calculateObjectValue(this.options,this.options.queryParams,[s],o))){e||this.showLoading();var h=Il.extend({},Il.calculateObjectValue(null,this.options.ajaxOptions),{type:this.options.method,url:this.options.url,data:"application/json"===this.options.contentType&&"post"===this.options.method?JSON.stringify(o):o,cache:this.options.cache,contentType:this.options.contentType,dataType:this.options.dataType,success:function(t,n,r){var o=Il.calculateObjectValue(i.options,i.options.responseHandler,[t,r],t);"client"===i.options.sidePagination&&i.options.paginationLoadMore&&(i._paginationLoaded=i.data.length===o.length),i.load(o),i.trigger("load-success",o,r&&r.status,r),e||i.hideLoading(),"server"===i.options.sidePagination&&i.options.pageNumber>1&&o[i.options.totalField]>0&&!o[i.options.dataField].length&&i.updatePagination()},error:function(t){if(t&&0===t.status&&i._xhrAbort)i._xhrAbort=!1;else{var n=[];"server"===i.options.sidePagination&&((n={})[i.options.totalField]=0,n[i.options.dataField]=[]),i.load(n),i.trigger("load-error",t&&t.status,t),e||i.hideLoading()}}});return this.options.ajax?Il.calculateObjectValue(this,this.options.ajax,[h],null):(this._xhr&&4!==this._xhr.readyState&&(this._xhrAbort=!0,this._xhr.abort()),this._xhr=t.ajax(h)),o}}}},{key:"initSearchText",value:function(){if(this.options.search&&(this.searchText="",""!==this.options.searchText)){var t=Il.getSearchInput(this);t.val(this.options.searchText),this.onSearch({currentTarget:t,firedByInitSearchText:!0})}}},{key:"getCaret",value:function(){var e=this;this.$header.find("th").each((function(n,i){t(i).find(".sortable").removeClass("desc asc").addClass(t(i).data("field")===e.options.sortName?e.options.sortOrder:"both")}))}},{key:"updateSelected",value:function(){var e=this.$selectItem.filter(":enabled").length&&this.$selectItem.filter(":enabled").length===this.$selectItem.filter(":enabled").filter(":checked").length;this.$selectAll.add(this.$selectAll_).prop("checked",e),this.$selectItem.each((function(e,n){t(n).closest("tr")[t(n).prop("checked")?"addClass":"removeClass"]("selected")}))}},{key:"updateRows",value:function(){var e=this;this.$selectItem.each((function(n,i){e.data[t(i).data("index")][e.header.stateField]=t(i).prop("checked")}))}},{key:"resetRows",value:function(){var t,e=r(this.data);try{for(e.s();!(t=e.n()).done;){var n=t.value;this.$selectAll.prop("checked",!1),this.$selectItem.prop("checked",!1),this.header.stateField&&(n[this.header.stateField]=!1)}}catch(t){e.e(t)}finally{e.f()}this.initHiddenRows()}},{key:"trigger",value:function(n){for(var i,r,o="".concat(n,".bs.table"),a=arguments.length,s=new Array(a>1?a-1:0),l=1;ln.clientHeight+this.$header.outerHeight()?Il.getScrollBarWidth():0;this.$el.css("margin-top",-this.$header.outerHeight());var r=this.$tableHeader.find(":focus");if(r.length>0){var o=r.parents("th");if(o.length>0){var a=o.attr("data-field");if(void 0!==a){var s=this.$header.find("[data-field='".concat(a,"']"));s.length>0&&s.find(":input").addClass("focus-temp")}}}this.$header_=this.$header.clone(!0,!0),this.$selectAll_=this.$header_.find('[name="btSelectAll"]'),this.$tableHeader.css("margin-right",i).find("table").css("width",this.$el.outerWidth()).html("").attr("class",this.$el.attr("class")).append(this.$header_),this.$tableLoading.css("width",this.$el.outerWidth());var l=t(".focus-temp:visible:eq(0)");l.length>0&&(l.focus(),this.$header.find(".focus-temp").removeClass("focus-temp")),this.$header.find("th[data-field]").each((function(n,i){e.$header_.find(Il.sprintf('th[data-field="%s"]',t(i).data("field"))).data(t(i).data())}));for(var c=this.getVisibleFields(),u=this.$header_.find("th"),h=this.$body.find(">tr:not(.no-records-found,.virtual-scroll-top)").eq(0);h.length&&h.find('>td[colspan]:not([colspan="1"])').length;)h=h.next();var f=h.find("> *").length;h.find("> *").each((function(n,i){var r=t(i);if(Il.hasDetailViewIcon(e.options)&&(0===n&&"right"!==e.options.detailViewAlign||n===f-1&&"right"===e.options.detailViewAlign)){var o=u.filter(".detail"),a=o.innerWidth()-o.find(".fht-cell").width();o.find(".fht-cell").width(r.innerWidth()-a)}else{var s=n-Il.getDetailViewIndexOffset(e.options),l=e.$header_.find(Il.sprintf('th[data-field="%s"]',c[s]));l.length>1&&(l=t(u[r[0].cellIndex]));var h=l.innerWidth()-l.find(".fht-cell").width();l.find(".fht-cell").width(r.innerWidth()-h)}})),this.horizontalScroll(),this.trigger("post-header")}}},{key:"initFooter",value:function(){if(this.options.showFooter&&!this.options.cardView){var t=this.getData(),e=[],n="";Il.hasDetailViewIcon(this.options)&&(n=Il.h("th",{class:"detail"},[Il.h("div",{class:"th-inner"}),Il.h("div",{class:"fht-cell"})])),n&&"right"!==this.options.detailViewAlign&&e.push(n);var i,o=r(this.columns);try{for(o.s();!(i=o.n()).done;){var a=i.value,l=this.footerData&&this.footerData.length>0;if(a.visible&&(!l||a.field in this.footerData[0])){if(this.options.cardView&&!a.cardVisible)return;var u=Il.calculateObjectValue(null,a.footerStyle||this.options.footerStyle,[a]),h=u&&u.css||{},f=l&&this.footerData[0]["_".concat(a.field,"_colspan")]||0,d=l&&this.footerData[0][a.field]||"";d=Il.calculateObjectValue(a,a.footerFormatter,[t,d],d),e.push(Il.h("th",{class:[a.class,u&&u.classes],style:s({"text-align":a.falign?a.falign:a.align,"vertical-align":a.valign},h),colspan:f||void 0},[Il.h("div",{class:"th-inner"},c(Il.htmlToNodes(d))),Il.h("div",{class:"fht-cell"})]))}}}catch(t){o.e(t)}finally{o.f()}n&&"right"===this.options.detailViewAlign&&e.push(n),this.options.height||this.$tableFooter.length||(this.$el.append(""),this.$tableFooter=this.$el.find("tfoot")),this.$tableFooter.find("tr").length||this.$tableFooter.html("
    "),this.$tableFooter.find("tr").html(e),this.trigger("post-footer",this.$tableFooter)}}},{key:"fitFooter",value:function(){var e=this;if(this.$el.is(":hidden"))setTimeout((function(){return e.fitFooter()}),100);else{var n=this.$tableBody.get(0),i=this.hasScrollBar&&n.scrollHeight>n.clientHeight+this.$header.outerHeight()?Il.getScrollBarWidth():0;this.$tableFooter.css("margin-right",i).find("table").css("width",this.$el.outerWidth()).attr("class",this.$el.attr("class"));var r=this.$tableFooter.find("th"),o=this.$body.find(">tr:first-child:not(.no-records-found)");for(r.find(".fht-cell").width("auto");o.length&&o.find('>td[colspan]:not([colspan="1"])').length;)o=o.next();var a=o.find("> *").length;o.find("> *").each((function(n,i){var o=t(i);if(Il.hasDetailViewIcon(e.options)&&(0===n&&"left"===e.options.detailViewAlign||n===a-1&&"right"===e.options.detailViewAlign)){var s=r.filter(".detail"),l=s.innerWidth()-s.find(".fht-cell").width();s.find(".fht-cell").width(o.innerWidth()-l)}else{var c=r.eq(n),u=c.innerWidth()-c.find(".fht-cell").width();c.find(".fht-cell").width(o.innerWidth()-u)}})),this.horizontalScroll()}}},{key:"horizontalScroll",value:function(){var t=this;this.$tableBody.off("scroll").on("scroll",(function(){var e=t.$tableBody.scrollLeft();t.options.showHeader&&t.options.height&&t.$tableHeader.scrollLeft(e),t.options.showFooter&&!t.options.cardView&&t.$tableFooter.scrollLeft(e),t.trigger("scroll-body",t.$tableBody)}))}},{key:"getVisibleFields",value:function(){var t,e=[],n=r(this.header.fields);try{for(n.s();!(t=n.n()).done;){var i=t.value,o=this.columns[this.fieldsColumnsIndex[i]];o&&o.visible&&(!this.options.cardView||o.cardVisible)&&e.push(i)}}catch(t){n.e(t)}finally{n.f()}return e}},{key:"initHiddenRows",value:function(){this.hiddenRows=[]}},{key:"getOptions",value:function(){var t=Il.extend({},this.options);return delete t.data,Il.extend(!0,{},t)}},{key:"refreshOptions",value:function(t){Il.compareObjects(this.options,t,!0)||(this.optionsColumnsChanged=!!t.columns,this.options=Il.extend(this.options,t),this.trigger("refresh-options",this.options),this.destroy(),this.init())}},{key:"getData",value:function(t){var e=this,n=this.options.data;if(!(this.searchText||this.options.customSearch||void 0!==this.options.sortName||this.enableCustomSort)&&Il.isEmptyObject(this.filterColumns)&&"function"!=typeof this.options.filterOptions.filterAlgorithm&&Il.isEmptyObject(this.filterColumnsPartial)||t&&t.unfiltered||(n=this.data),t&&!t.includeHiddenRows){var i=this.getHiddenRows();n=n.filter((function(t){return-1===Il.findIndex(i,t)}))}return t&&t.useCurrentPage&&(n=n.slice(this.pageFrom-1,this.pageTo)),t&&t.formatted?n.map((function(t){for(var n={},i=0,r=Object.entries(t);i=0;n--){var i=this.options.data[n],r=Il.getItemField(i,t.field,this.options.escape,i.escape);void 0===r&&"$index"!==t.field||(!i.hasOwnProperty(t.field)&&"$index"===t.field&&t.values.includes(n)||t.values.includes(r))&&(e++,this.options.data.splice(n,1))}e&&("server"===this.options.sidePagination&&(this.options.totalRows-=e,this.data=c(this.options.data)),this.initSearch(),this.initPagination(),this.initSort(),this.initBody(!0))}},{key:"removeAll",value:function(){this.options.data.length>0&&(this.data.splice(0,this.data.length),this.options.data.splice(0,this.options.data.length),this.initSearch(),this.initPagination(),this.initBody(!0))}},{key:"insertRow",value:function(t){if(t.hasOwnProperty("index")&&t.hasOwnProperty("row")){var e=this.data[t.index],n=this.options.data.indexOf(e);-1!==n?(this.data.splice(t.index,0,t.row),this.options.data.splice(n,0,t.row),this.initSearch(),this.initPagination(),this.initSort(),this.initBody(!0)):this.append([t.row])}}},{key:"updateRow",value:function(t){var e,n=r(Array.isArray(t)?t:[t]);try{for(n.s();!(e=n.n()).done;){var i=e.value;if(i.hasOwnProperty("index")&&i.hasOwnProperty("row")){var o=this.data[i.index],a=this.options.data.indexOf(o);i.hasOwnProperty("replace")&&i.replace?(this.data[i.index]=i.row,this.options.data[a]=i.row):(Il.extend(this.data[i.index],i.row),Il.extend(this.options.data[a],i.row))}}}catch(t){n.e(t)}finally{n.f()}this.initSearch(),this.initPagination(),this.initSort(),this.initBody(!0)}},{key:"getRowByUniqueId",value:function(t){var e,n,i=this.options.uniqueId,r=t,o=null;for(e=this.options.data.length-1;e>=0;e--){n=this.options.data[e];var a=Il.getItemField(n,i,this.options.escape,n.escape);if(void 0!==a&&("string"==typeof a?r=t.toString():"number"==typeof a&&(Number(a)===a&&a%1==0?r=parseInt(t,10):a===Number(a)&&0!==a&&(r=parseFloat(t))),a===r)){o=n;break}}return o}},{key:"updateByUniqueId",value:function(t){var e,n=null,i=r(Array.isArray(t)?t:[t]);try{for(i.s();!(e=i.n()).done;){var o=e.value;if(o.hasOwnProperty("id")&&o.hasOwnProperty("row")){var a=this.options.data.indexOf(this.getRowByUniqueId(o.id));-1!==a&&(o.hasOwnProperty("replace")&&o.replace?this.options.data[a]=o.row:Il.extend(this.options.data[a],o.row),n=o.id)}}}catch(t){i.e(t)}finally{i.f()}this.initSearch(),this.initPagination(),this.initSort(),this.initBody(!0,n)}},{key:"removeByUniqueId",value:function(t){var e=this.options.data.length,n=this.getRowByUniqueId(t);n&&this.options.data.splice(this.options.data.indexOf(n),1),e!==this.options.data.length&&("server"===this.options.sidePagination&&(this.options.totalRows-=1,this.data=c(this.options.data)),this.initSearch(),this.initPagination(),this.initBody(!0))}},{key:"_updateCellOnly",value:function(e,n){var i=this.initRow(this.data[n],n),r=this.getVisibleFields().indexOf(e);-1!==r&&(r+=Il.getDetailViewIndexOffset(this.options),this.$body.find(">tr[data-index=".concat(n,"]")).find(">td:eq(".concat(r,")")).replaceWith(t(i).find(">td:eq(".concat(r,")"))),this.initBodyEvent(),this.initFooter(),this.resetView(),this.updateSelected())}},{key:"updateCell",value:function(t){if(t.hasOwnProperty("index")&&t.hasOwnProperty("field")&&t.hasOwnProperty("value")){var e=this.data[t.index],n=this.options.data.indexOf(e);this.data[t.index][t.field]=t.value,this.options.data[n][t.field]=t.value,!1!==t.reinit?(this.initSort(),this.initBody(!0)):this._updateCellOnly(t.field,t.index)}}},{key:"updateCellByUniqueId",value:function(t){var e=this;(Array.isArray(t)?t:[t]).forEach((function(t){var n=t.id,i=t.field,r=t.value,o=e.options.data.indexOf(e.getRowByUniqueId(n));-1!==o&&(e.options.data[o][i]=r)})),!1!==t.reinit?(this.initSort(),this.initBody(!0)):this._updateCellOnly(t.field,this.options.data.indexOf(this.getRowByUniqueId(t.id)))}},{key:"showRow",value:function(t){this._toggleRow(t,!0)}},{key:"hideRow",value:function(t){this._toggleRow(t,!1)}},{key:"_toggleRow",value:function(t,e){var n;if(t.hasOwnProperty("index")?n=this.getData()[t.index]:t.hasOwnProperty("uniqueId")&&(n=this.getRowByUniqueId(t.uniqueId)),n){var i=Il.findIndex(this.hiddenRows,n);e||-1!==i?e&&i>-1&&this.hiddenRows.splice(i,1):this.hiddenRows.push(n),this.initBody(!0),this.initPagination()}}},{key:"getHiddenRows",value:function(t){if(t)return this.initHiddenRows(),this.initBody(!0),void this.initPagination();var e,n=[],i=r(this.getData());try{for(i.s();!(e=i.n()).done;){var o=e.value;this.hiddenRows.includes(o)&&n.push(o)}}catch(t){i.e(t)}finally{i.f()}return this.hiddenRows=n,n}},{key:"showColumn",value:function(t){var e=this;(Array.isArray(t)?t:[t]).forEach((function(t){e._toggleColumn(e.fieldsColumnsIndex[t],!0,!0)}))}},{key:"hideColumn",value:function(t){var e=this;(Array.isArray(t)?t:[t]).forEach((function(t){e._toggleColumn(e.fieldsColumnsIndex[t],!1,!0)}))}},{key:"_toggleColumn",value:function(t,e,n){if(void 0!==t&&this.columns[t].visible!==e&&(this.columns[t].visible=e,this.initHeader(),this.initSearch(),this.initPagination(),this.initBody(),this.options.showColumns)){var i=this.$toolbar.find('.keep-open input:not(".toggle-all")').prop("disabled",!1);n&&i.filter(Il.sprintf('[value="%s"]',t)).prop("checked",e),i.filter(":checked").length<=this.options.minimumCountColumns&&i.filter(":checked").prop("disabled",!0)}}},{key:"getVisibleColumns",value:function(){var t=this;return this.columns.filter((function(e){return e.visible&&!t.isSelectionColumn(e)}))}},{key:"getHiddenColumns",value:function(){return this.columns.filter((function(t){return!t.visible}))}},{key:"isSelectionColumn",value:function(t){return t.radio||t.checkbox}},{key:"showAllColumns",value:function(){this._toggleAllColumns(!0)}},{key:"hideAllColumns",value:function(){this._toggleAllColumns(!1)}},{key:"_toggleAllColumns",value:function(e){var n,i=this,o=r(this.columns.slice().reverse());try{for(o.s();!(n=o.n()).done;){var a=n.value;if(a.switchable){if(!e&&this.options.showColumns&&this.getVisibleColumns().filter((function(t){return t.switchable})).length===this.options.minimumCountColumns)continue;a.visible=e}}}catch(t){o.e(t)}finally{o.f()}if(this.initHeader(),this.initSearch(),this.initPagination(),this.initBody(),this.options.showColumns){var s=this.$toolbar.find('.keep-open input[type="checkbox"]:not(".toggle-all")').prop("disabled",!1);e?s.prop("checked",e):s.get().reverse().forEach((function(n){s.filter(":checked").length>i.options.minimumCountColumns&&t(n).prop("checked",e)})),s.filter(":checked").length<=this.options.minimumCountColumns&&s.filter(":checked").prop("disabled",!0)}}},{key:"mergeCells",value:function(t){var e,n,i=t.index,r=this.getVisibleFields().indexOf(t.field),o=+t.rowspan||1,a=+t.colspan||1,s=this.$body.find(">tr[data-index]");r+=Il.getDetailViewIndexOffset(this.options);var l=s.eq(i).find(">td").eq(r);if(!(i<0||r<0||i>=this.data.length)){for(e=i;etd").eq(n).hide();l.attr("rowspan",o).attr("colspan",a).show()}}},{key:"checkAll",value:function(){this._toggleCheckAll(!0)}},{key:"uncheckAll",value:function(){this._toggleCheckAll(!1)}},{key:"_toggleCheckAll",value:function(t){var e=this.getSelections();this.$selectAll.add(this.$selectAll_).prop("checked",t),this.$selectItem.filter(":enabled").prop("checked",t),this.updateRows(),this.updateSelected();var n=this.getSelections();t?this.trigger("check-all",n,e):this.trigger("uncheck-all",n,e)}},{key:"checkInvert",value:function(){var e=this.$selectItem.filter(":enabled"),n=e.filter(":checked");e.each((function(e,n){t(n).prop("checked",!t(n).prop("checked"))})),this.updateRows(),this.updateSelected(),this.trigger("uncheck-some",n),n=this.getSelections(),this.trigger("check-some",n)}},{key:"check",value:function(t){this._toggleCheck(!0,t)}},{key:"uncheck",value:function(t){this._toggleCheck(!1,t)}},{key:"_toggleCheck",value:function(t,e){var n=this.$selectItem.filter('[data-index="'.concat(e,'"]')),i=this.data[e];if(n.is(":radio")||this.options.singleSelect||this.options.multipleSelectRow&&!this.multipleSelectRowCtrlKey&&!this.multipleSelectRowShiftKey){var o,a=r(this.options.data);try{for(a.s();!(o=a.n()).done;){o.value[this.header.stateField]=!1}}catch(t){a.e(t)}finally{a.f()}this.$selectItem.filter(":checked").not(n).prop("checked",!1)}if(i[this.header.stateField]=t,this.options.multipleSelectRow){if(this.multipleSelectRowShiftKey&&this.multipleSelectRowLastSelectedIndex>=0)for(var s=l(this.multipleSelectRowLastSelectedIndexn.clientWidth}if(!this.options.cardView&&this.options.showHeader&&this.options.height?(this.$tableHeader.show(),this.resetHeader(),e+=this.$header.outerHeight(!0)+1):(this.$tableHeader.hide(),this.trigger("post-header")),!this.options.cardView&&this.options.showFooter&&(this.$tableFooter.show(),this.fitFooter(),this.options.height&&(e+=this.$tableFooter.outerHeight(!0))),this.$container.hasClass("fullscreen"))this.$tableContainer.css("height",""),this.$tableContainer.css("width","");else if(this.options.height){this.$tableBorder&&(this.$tableBorder.css("width",""),this.$tableBorder.css("height",""));var i=this.$toolbar.outerHeight(!0),r=this.$pagination.outerHeight(!0),o=this.options.height-i-r,a=this.$tableBody.find(">table"),s=a.outerHeight();if(this.$tableContainer.css("height","".concat(o,"px")),this.$tableBorder&&a.is(":visible")){var l=o-s-2;this.hasScrollBar&&(l-=Il.getScrollBarWidth()),this.$tableBorder.css("width","".concat(a.outerWidth(),"px")),this.$tableBorder.css("height","".concat(l,"px"))}}this.options.cardView?(this.$el.css("margin-top","0"),this.$tableContainer.css("padding-bottom","0"),this.$tableFooter.hide()):(this.getCaret(),this.$tableContainer.css("padding-bottom","".concat(e,"px"))),this.trigger("reset-view")}},{key:"showLoading",value:function(){this.$tableLoading.toggleClass("open",!0);var t=this.options.loadingFontSize;"auto"===this.options.loadingFontSize&&(t=.04*this.$tableLoading.width(),t=Math.max(12,t),t=Math.min(32,t),t="".concat(t,"px")),this.$tableLoading.find(".loading-text").css("font-size",t)}},{key:"hideLoading",value:function(){this.$tableLoading.toggleClass("open",!1)}},{key:"togglePagination",value:function(){this.options.pagination=!this.options.pagination;var t=this.options.showButtonIcons?this.options.pagination?this.options.icons.paginationSwitchDown:this.options.icons.paginationSwitchUp:"",e=this.options.showButtonText?this.options.pagination?this.options.formatPaginationSwitchUp():this.options.formatPaginationSwitchDown():"";this.$toolbar.find('button[name="paginationSwitch"]').html("".concat(Il.sprintf(this.constants.html.icon,this.options.iconsPrefix,t)," ").concat(e)),this.updatePagination(),this.trigger("toggle-pagination",this.options.pagination)}},{key:"toggleFullscreen",value:function(){this.$el.closest(".bootstrap-table").toggleClass("fullscreen"),this.resetView()}},{key:"toggleView",value:function(){this.options.cardView=!this.options.cardView,this.initHeader();var t=this.options.showButtonIcons?this.options.cardView?this.options.icons.toggleOn:this.options.icons.toggleOff:"",e=this.options.cardView?this.options.formatToggleOff():this.options.formatToggleOn();this.$toolbar.find('button[name="toggle"]').html("".concat(Il.sprintf(this.constants.html.icon,this.options.iconsPrefix,t)," ").concat(this.options.showButtonText?e:"")).attr("aria-label",e).attr(this.options.buttonsAttributeTitle,e),this.initBody(),this.trigger("toggle",this.options.cardView)}},{key:"resetSearch",value:function(t){var e=Il.getSearchInput(this),n=t||"";e.val(n),this.searchText=n,this.onSearch({currentTarget:e},!1)}},{key:"filterBy",value:function(t,e){this.filterOptions=Il.isEmptyObject(e)?this.options.filterOptions:Il.extend({},this.options.filterOptions,e),this.filterColumns=Il.isEmptyObject(t)?{}:t,this.options.pageNumber=1,this.initSearch(),this.updatePagination()}},{key:"scrollTo",value:function(e){var n={unit:"px",value:0};"object"===h(e)?n=Object.assign(n,e):"string"==typeof e&&"bottom"===e?n.value=this.$tableBody[0].scrollHeight:"string"!=typeof e&&"number"!=typeof e||(n.value=e);var i=n.value;"rows"===n.unit&&(i=0,this.$body.find("> tr:lt(".concat(n.value,")")).each((function(e,n){i+=t(n).outerHeight(!0)}))),this.$tableBody.scrollTop(i)}},{key:"getScrollPosition",value:function(){return this.$tableBody.scrollTop()}},{key:"selectPage",value:function(t){t>0&&t<=this.options.totalPages&&(this.options.pageNumber=t,this.updatePagination())}},{key:"prevPage",value:function(){this.options.pageNumber>1&&(this.options.pageNumber--,this.updatePagination())}},{key:"nextPage",value:function(){this.options.pageNumber tr[data-index="%s"]',t)).next().is("tr.detail-view")?this.collapseRow(t):this.expandRow(t,e),this.resetView()}},{key:"expandRow",value:function(t,e){var n=this.data[t],i=this.$body.find(Il.sprintf('> tr[data-index="%s"][data-has-detail-view]',t));if(this.options.detailViewIcon&&i.find("a.detail-icon").html(Il.sprintf(this.constants.html.icon,this.options.iconsPrefix,this.options.icons.detailClose)),!i.next().is("tr.detail-view")){i.after(Il.sprintf('',i.children("td").length));var r=i.next().find("td"),o=e||this.options.detailFormatter,a=Il.calculateObjectValue(this.options,o,[t,n,r],"");1===r.length&&r.append(a),this.trigger("expand-row",t,n,r)}}},{key:"expandRowByUniqueId",value:function(t){var e=this.getRowByUniqueId(t);e&&this.expandRow(this.data.indexOf(e))}},{key:"collapseRow",value:function(t){var e=this.data[t],n=this.$body.find(Il.sprintf('> tr[data-index="%s"][data-has-detail-view]',t));n.next().is("tr.detail-view")&&(this.options.detailViewIcon&&n.find("a.detail-icon").html(Il.sprintf(this.constants.html.icon,this.options.iconsPrefix,this.options.icons.detailOpen)),this.trigger("collapse-row",t,e,n.next()),n.next().remove())}},{key:"collapseRowByUniqueId",value:function(t){var e=this.getRowByUniqueId(t);e&&this.collapseRow(this.data.indexOf(e))}},{key:"expandAllRows",value:function(){for(var e=this.$body.find("> tr[data-index][data-has-detail-view]"),n=0;n tr[data-index][data-has-detail-view]"),n=0;n1?n-1:0),r=1;r0?i:null}catch(t){return null}},reflow:function(t){return t.offsetHeight},triggerTransitionEnd:function(n){t(n).trigger(e.end)},supportsTransitionEnd:function(){return Boolean(e)},isElement:function(t){return(t[0]||t).nodeType},typeCheckConfig:function(t,e,n){for(var s in n)if(Object.prototype.hasOwnProperty.call(n,s)){var r=n[s],o=e[s],a=o&&i.isElement(o)?"element":(l=o,{}.toString.call(l).match(/\s([a-zA-Z]+)/)[1].toLowerCase());if(!new RegExp(r).test(a))throw new Error(t.toUpperCase()+': Option "'+s+'" provided type "'+a+'" but expected type "'+r+'".')}var l}};return e=("undefined"==typeof window||!window.QUnit)&&{end:"transitionend"},t.fn.emulateTransitionEnd=n,i.supportsTransitionEnd()&&(t.event.special[i.TRANSITION_END]={bindType:e.end,delegateType:e.end,handle:function(e){if(t(e.target).is(this))return e.handleObj.handler.apply(this,arguments)}}),i}(e),L=(a="alert",h="."+(l="bs.alert"),c=(o=e).fn[a],u={CLOSE:"close"+h,CLOSED:"closed"+h,CLICK_DATA_API:"click"+h+".data-api"},f="alert",d="fade",_="show",g=function(){function t(t){this._element=t}var e=t.prototype;return e.close=function(t){t=t||this._element;var e=this._getRootElement(t);this._triggerCloseEvent(e).isDefaultPrevented()||this._removeElement(e)},e.dispose=function(){o.removeData(this._element,l),this._element=null},e._getRootElement=function(t){var e=P.getSelectorFromElement(t),n=!1;return e&&(n=o(e)[0]),n||(n=o(t).closest("."+f)[0]),n},e._triggerCloseEvent=function(t){var e=o.Event(u.CLOSE);return o(t).trigger(e),e},e._removeElement=function(t){var e=this;o(t).removeClass(_),P.supportsTransitionEnd()&&o(t).hasClass(d)?o(t).one(P.TRANSITION_END,function(n){return e._destroyElement(t,n)}).emulateTransitionEnd(150):this._destroyElement(t)},e._destroyElement=function(t){o(t).detach().trigger(u.CLOSED).remove()},t._jQueryInterface=function(e){return this.each(function(){var n=o(this),i=n.data(l);i||(i=new t(this),n.data(l,i)),"close"===e&&i[e](this)})},t._handleDismiss=function(t){return function(e){e&&e.preventDefault(),t.close(this)}},s(t,null,[{key:"VERSION",get:function(){return"4.0.0"}}]),t}(),o(document).on(u.CLICK_DATA_API,'[data-dismiss="alert"]',g._handleDismiss(new g)),o.fn[a]=g._jQueryInterface,o.fn[a].Constructor=g,o.fn[a].noConflict=function(){return o.fn[a]=c,g._jQueryInterface},g),R=(m="button",E="."+(v="bs.button"),T=".data-api",y=(p=e).fn[m],C="active",I="btn",A="focus",b='[data-toggle^="button"]',D='[data-toggle="buttons"]',S="input",w=".active",N=".btn",O={CLICK_DATA_API:"click"+E+T,FOCUS_BLUR_DATA_API:"focus"+E+T+" blur"+E+T},k=function(){function t(t){this._element=t}var e=t.prototype;return e.toggle=function(){var t=!0,e=!0,n=p(this._element).closest(D)[0];if(n){var i=p(this._element).find(S)[0];if(i){if("radio"===i.type)if(i.checked&&p(this._element).hasClass(C))t=!1;else{var s=p(n).find(w)[0];s&&p(s).removeClass(C)}if(t){if(i.hasAttribute("disabled")||n.hasAttribute("disabled")||i.classList.contains("disabled")||n.classList.contains("disabled"))return;i.checked=!p(this._element).hasClass(C),p(i).trigger("change")}i.focus(),e=!1}}e&&this._element.setAttribute("aria-pressed",!p(this._element).hasClass(C)),t&&p(this._element).toggleClass(C)},e.dispose=function(){p.removeData(this._element,v),this._element=null},t._jQueryInterface=function(e){return this.each(function(){var n=p(this).data(v);n||(n=new t(this),p(this).data(v,n)),"toggle"===e&&n[e]()})},s(t,null,[{key:"VERSION",get:function(){return"4.0.0"}}]),t}(),p(document).on(O.CLICK_DATA_API,b,function(t){t.preventDefault();var e=t.target;p(e).hasClass(I)||(e=p(e).closest(N)),k._jQueryInterface.call(p(e),"toggle")}).on(O.FOCUS_BLUR_DATA_API,b,function(t){var e=p(t.target).closest(N)[0];p(e).toggleClass(A,/^focus(in)?$/.test(t.type))}),p.fn[m]=k._jQueryInterface,p.fn[m].Constructor=k,p.fn[m].noConflict=function(){return p.fn[m]=y,k._jQueryInterface},k),j=function(t){var e="carousel",n="bs.carousel",i="."+n,o=t.fn[e],a={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0},l={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean"},h="next",c="prev",u="left",f="right",d={SLIDE:"slide"+i,SLID:"slid"+i,KEYDOWN:"keydown"+i,MOUSEENTER:"mouseenter"+i,MOUSELEAVE:"mouseleave"+i,TOUCHEND:"touchend"+i,LOAD_DATA_API:"load"+i+".data-api",CLICK_DATA_API:"click"+i+".data-api"},_="carousel",g="active",p="slide",m="carousel-item-right",v="carousel-item-left",E="carousel-item-next",T="carousel-item-prev",y={ACTIVE:".active",ACTIVE_ITEM:".active.carousel-item",ITEM:".carousel-item",NEXT_PREV:".carousel-item-next, .carousel-item-prev",INDICATORS:".carousel-indicators",DATA_SLIDE:"[data-slide], [data-slide-to]",DATA_RIDE:'[data-ride="carousel"]'},C=function(){function o(e,n){this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this._config=this._getConfig(n),this._element=t(e)[0],this._indicatorsElement=t(this._element).find(y.INDICATORS)[0],this._addEventListeners()}var C=o.prototype;return C.next=function(){this._isSliding||this._slide(h)},C.nextWhenVisible=function(){!document.hidden&&t(this._element).is(":visible")&&"hidden"!==t(this._element).css("visibility")&&this.next()},C.prev=function(){this._isSliding||this._slide(c)},C.pause=function(e){e||(this._isPaused=!0),t(this._element).find(y.NEXT_PREV)[0]&&P.supportsTransitionEnd()&&(P.triggerTransitionEnd(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null},C.cycle=function(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config.interval&&!this._isPaused&&(this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))},C.to=function(e){var n=this;this._activeElement=t(this._element).find(y.ACTIVE_ITEM)[0];var i=this._getItemIndex(this._activeElement);if(!(e>this._items.length-1||e<0))if(this._isSliding)t(this._element).one(d.SLID,function(){return n.to(e)});else{if(i===e)return this.pause(),void this.cycle();var s=e>i?h:c;this._slide(s,this._items[e])}},C.dispose=function(){t(this._element).off(i),t.removeData(this._element,n),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},C._getConfig=function(t){return t=r({},a,t),P.typeCheckConfig(e,t,l),t},C._addEventListeners=function(){var e=this;this._config.keyboard&&t(this._element).on(d.KEYDOWN,function(t){return e._keydown(t)}),"hover"===this._config.pause&&(t(this._element).on(d.MOUSEENTER,function(t){return e.pause(t)}).on(d.MOUSELEAVE,function(t){return e.cycle(t)}),"ontouchstart"in document.documentElement&&t(this._element).on(d.TOUCHEND,function(){e.pause(),e.touchTimeout&&clearTimeout(e.touchTimeout),e.touchTimeout=setTimeout(function(t){return e.cycle(t)},500+e._config.interval)}))},C._keydown=function(t){if(!/input|textarea/i.test(t.target.tagName))switch(t.which){case 37:t.preventDefault(),this.prev();break;case 39:t.preventDefault(),this.next()}},C._getItemIndex=function(e){return this._items=t.makeArray(t(e).parent().find(y.ITEM)),this._items.indexOf(e)},C._getItemByDirection=function(t,e){var n=t===h,i=t===c,s=this._getItemIndex(e),r=this._items.length-1;if((i&&0===s||n&&s===r)&&!this._config.wrap)return e;var o=(s+(t===c?-1:1))%this._items.length;return-1===o?this._items[this._items.length-1]:this._items[o]},C._triggerSlideEvent=function(e,n){var i=this._getItemIndex(e),s=this._getItemIndex(t(this._element).find(y.ACTIVE_ITEM)[0]),r=t.Event(d.SLIDE,{relatedTarget:e,direction:n,from:s,to:i});return t(this._element).trigger(r),r},C._setActiveIndicatorElement=function(e){if(this._indicatorsElement){t(this._indicatorsElement).find(y.ACTIVE).removeClass(g);var n=this._indicatorsElement.children[this._getItemIndex(e)];n&&t(n).addClass(g)}},C._slide=function(e,n){var i,s,r,o=this,a=t(this._element).find(y.ACTIVE_ITEM)[0],l=this._getItemIndex(a),c=n||a&&this._getItemByDirection(e,a),_=this._getItemIndex(c),C=Boolean(this._interval);if(e===h?(i=v,s=E,r=u):(i=m,s=T,r=f),c&&t(c).hasClass(g))this._isSliding=!1;else if(!this._triggerSlideEvent(c,r).isDefaultPrevented()&&a&&c){this._isSliding=!0,C&&this.pause(),this._setActiveIndicatorElement(c);var I=t.Event(d.SLID,{relatedTarget:c,direction:r,from:l,to:_});P.supportsTransitionEnd()&&t(this._element).hasClass(p)?(t(c).addClass(s),P.reflow(c),t(a).addClass(i),t(c).addClass(i),t(a).one(P.TRANSITION_END,function(){t(c).removeClass(i+" "+s).addClass(g),t(a).removeClass(g+" "+s+" "+i),o._isSliding=!1,setTimeout(function(){return t(o._element).trigger(I)},0)}).emulateTransitionEnd(600)):(t(a).removeClass(g),t(c).addClass(g),this._isSliding=!1,t(this._element).trigger(I)),C&&this.cycle()}},o._jQueryInterface=function(e){return this.each(function(){var i=t(this).data(n),s=r({},a,t(this).data());"object"==typeof e&&(s=r({},s,e));var l="string"==typeof e?e:s.slide;if(i||(i=new o(this,s),t(this).data(n,i)),"number"==typeof e)i.to(e);else if("string"==typeof l){if("undefined"==typeof i[l])throw new TypeError('No method named "'+l+'"');i[l]()}else s.interval&&(i.pause(),i.cycle())})},o._dataApiClickHandler=function(e){var i=P.getSelectorFromElement(this);if(i){var s=t(i)[0];if(s&&t(s).hasClass(_)){var a=r({},t(s).data(),t(this).data()),l=this.getAttribute("data-slide-to");l&&(a.interval=!1),o._jQueryInterface.call(t(s),a),l&&t(s).data(n).to(l),e.preventDefault()}}},s(o,null,[{key:"VERSION",get:function(){return"4.0.0"}},{key:"Default",get:function(){return a}}]),o}();return t(document).on(d.CLICK_DATA_API,y.DATA_SLIDE,C._dataApiClickHandler),t(window).on(d.LOAD_DATA_API,function(){t(y.DATA_RIDE).each(function(){var e=t(this);C._jQueryInterface.call(e,e.data())})}),t.fn[e]=C._jQueryInterface,t.fn[e].Constructor=C,t.fn[e].noConflict=function(){return t.fn[e]=o,C._jQueryInterface},C}(e),H=function(t){var e="collapse",n="bs.collapse",i="."+n,o=t.fn[e],a={toggle:!0,parent:""},l={toggle:"boolean",parent:"(string|element)"},h={SHOW:"show"+i,SHOWN:"shown"+i,HIDE:"hide"+i,HIDDEN:"hidden"+i,CLICK_DATA_API:"click"+i+".data-api"},c="show",u="collapse",f="collapsing",d="collapsed",_="width",g="height",p={ACTIVES:".show, .collapsing",DATA_TOGGLE:'[data-toggle="collapse"]'},m=function(){function i(e,n){this._isTransitioning=!1,this._element=e,this._config=this._getConfig(n),this._triggerArray=t.makeArray(t('[data-toggle="collapse"][href="#'+e.id+'"],[data-toggle="collapse"][data-target="#'+e.id+'"]'));for(var i=t(p.DATA_TOGGLE),s=0;s0&&(this._selector=o,this._triggerArray.push(r))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}var o=i.prototype;return o.toggle=function(){t(this._element).hasClass(c)?this.hide():this.show()},o.show=function(){var e,s,r=this;if(!this._isTransitioning&&!t(this._element).hasClass(c)&&(this._parent&&0===(e=t.makeArray(t(this._parent).find(p.ACTIVES).filter('[data-parent="'+this._config.parent+'"]'))).length&&(e=null),!(e&&(s=t(e).not(this._selector).data(n))&&s._isTransitioning))){var o=t.Event(h.SHOW);if(t(this._element).trigger(o),!o.isDefaultPrevented()){e&&(i._jQueryInterface.call(t(e).not(this._selector),"hide"),s||t(e).data(n,null));var a=this._getDimension();t(this._element).removeClass(u).addClass(f),this._element.style[a]=0,this._triggerArray.length>0&&t(this._triggerArray).removeClass(d).attr("aria-expanded",!0),this.setTransitioning(!0);var l=function(){t(r._element).removeClass(f).addClass(u).addClass(c),r._element.style[a]="",r.setTransitioning(!1),t(r._element).trigger(h.SHOWN)};if(P.supportsTransitionEnd()){var _="scroll"+(a[0].toUpperCase()+a.slice(1));t(this._element).one(P.TRANSITION_END,l).emulateTransitionEnd(600),this._element.style[a]=this._element[_]+"px"}else l()}}},o.hide=function(){var e=this;if(!this._isTransitioning&&t(this._element).hasClass(c)){var n=t.Event(h.HIDE);if(t(this._element).trigger(n),!n.isDefaultPrevented()){var i=this._getDimension();if(this._element.style[i]=this._element.getBoundingClientRect()[i]+"px",P.reflow(this._element),t(this._element).addClass(f).removeClass(u).removeClass(c),this._triggerArray.length>0)for(var s=0;s0&&t(n).toggleClass(d,!i).attr("aria-expanded",i)}},i._getTargetFromElement=function(e){var n=P.getSelectorFromElement(e);return n?t(n)[0]:null},i._jQueryInterface=function(e){return this.each(function(){var s=t(this),o=s.data(n),l=r({},a,s.data(),"object"==typeof e&&e);if(!o&&l.toggle&&/show|hide/.test(e)&&(l.toggle=!1),o||(o=new i(this,l),s.data(n,o)),"string"==typeof e){if("undefined"==typeof o[e])throw new TypeError('No method named "'+e+'"');o[e]()}})},s(i,null,[{key:"VERSION",get:function(){return"4.0.0"}},{key:"Default",get:function(){return a}}]),i}();return t(document).on(h.CLICK_DATA_API,p.DATA_TOGGLE,function(e){"A"===e.currentTarget.tagName&&e.preventDefault();var i=t(this),s=P.getSelectorFromElement(this);t(s).each(function(){var e=t(this),s=e.data(n)?"toggle":i.data();m._jQueryInterface.call(e,s)})}),t.fn[e]=m._jQueryInterface,t.fn[e].Constructor=m,t.fn[e].noConflict=function(){return t.fn[e]=o,m._jQueryInterface},m}(e),W=function(t){var e="dropdown",i="bs.dropdown",o="."+i,a=".data-api",l=t.fn[e],h=new RegExp("38|40|27"),c={HIDE:"hide"+o,HIDDEN:"hidden"+o,SHOW:"show"+o,SHOWN:"shown"+o,CLICK:"click"+o,CLICK_DATA_API:"click"+o+a,KEYDOWN_DATA_API:"keydown"+o+a,KEYUP_DATA_API:"keyup"+o+a},u="disabled",f="show",d="dropup",_="dropright",g="dropleft",p="dropdown-menu-right",m="dropdown-menu-left",v="position-static",E='[data-toggle="dropdown"]',T=".dropdown form",y=".dropdown-menu",C=".navbar-nav",I=".dropdown-menu .dropdown-item:not(.disabled)",A="top-start",b="top-end",D="bottom-start",S="bottom-end",w="right-start",N="left-start",O={offset:0,flip:!0,boundary:"scrollParent"},k={offset:"(number|string|function)",flip:"boolean",boundary:"(string|element)"},L=function(){function a(t,e){this._element=t,this._popper=null,this._config=this._getConfig(e),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar(),this._addEventListeners()}var l=a.prototype;return l.toggle=function(){if(!this._element.disabled&&!t(this._element).hasClass(u)){var e=a._getParentFromElement(this._element),i=t(this._menu).hasClass(f);if(a._clearMenus(),!i){var s={relatedTarget:this._element},r=t.Event(c.SHOW,s);if(t(e).trigger(r),!r.isDefaultPrevented()){if(!this._inNavbar){if("undefined"==typeof n)throw new TypeError("Bootstrap dropdown require Popper.js (https://popper.js.org)");var o=this._element;t(e).hasClass(d)&&(t(this._menu).hasClass(m)||t(this._menu).hasClass(p))&&(o=e),"scrollParent"!==this._config.boundary&&t(e).addClass(v),this._popper=new n(o,this._menu,this._getPopperConfig())}"ontouchstart"in document.documentElement&&0===t(e).closest(C).length&&t("body").children().on("mouseover",null,t.noop),this._element.focus(),this._element.setAttribute("aria-expanded",!0),t(this._menu).toggleClass(f),t(e).toggleClass(f).trigger(t.Event(c.SHOWN,s))}}}},l.dispose=function(){t.removeData(this._element,i),t(this._element).off(o),this._element=null,this._menu=null,null!==this._popper&&(this._popper.destroy(),this._popper=null)},l.update=function(){this._inNavbar=this._detectNavbar(),null!==this._popper&&this._popper.scheduleUpdate()},l._addEventListeners=function(){var e=this;t(this._element).on(c.CLICK,function(t){t.preventDefault(),t.stopPropagation(),e.toggle()})},l._getConfig=function(n){return n=r({},this.constructor.Default,t(this._element).data(),n),P.typeCheckConfig(e,n,this.constructor.DefaultType),n},l._getMenuElement=function(){if(!this._menu){var e=a._getParentFromElement(this._element);this._menu=t(e).find(y)[0]}return this._menu},l._getPlacement=function(){var e=t(this._element).parent(),n=D;return e.hasClass(d)?(n=A,t(this._menu).hasClass(p)&&(n=b)):e.hasClass(_)?n=w:e.hasClass(g)?n=N:t(this._menu).hasClass(p)&&(n=S),n},l._detectNavbar=function(){return t(this._element).closest(".navbar").length>0},l._getPopperConfig=function(){var t=this,e={};return"function"==typeof this._config.offset?e.fn=function(e){return e.offsets=r({},e.offsets,t._config.offset(e.offsets)||{}),e}:e.offset=this._config.offset,{placement:this._getPlacement(),modifiers:{offset:e,flip:{enabled:this._config.flip},preventOverflow:{boundariesElement:this._config.boundary}}}},a._jQueryInterface=function(e){return this.each(function(){var n=t(this).data(i);if(n||(n=new a(this,"object"==typeof e?e:null),t(this).data(i,n)),"string"==typeof e){if("undefined"==typeof n[e])throw new TypeError('No method named "'+e+'"');n[e]()}})},a._clearMenus=function(e){if(!e||3!==e.which&&("keyup"!==e.type||9===e.which))for(var n=t.makeArray(t(E)),s=0;s0&&r--,40===e.which&&rdocument.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},p._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},p._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=t.left+t.right
    ',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent"},f="show",d="out",_={HIDE:"hide"+o,HIDDEN:"hidden"+o,SHOW:"show"+o,SHOWN:"shown"+o,INSERTED:"inserted"+o,CLICK:"click"+o,FOCUSIN:"focusin"+o,FOCUSOUT:"focusout"+o,MOUSEENTER:"mouseenter"+o,MOUSELEAVE:"mouseleave"+o},g="fade",p="show",m=".tooltip-inner",v=".arrow",E="hover",T="focus",y="click",C="manual",I=function(){function a(t,e){if("undefined"==typeof n)throw new TypeError("Bootstrap tooltips require Popper.js (https://popper.js.org)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var I=a.prototype;return I.enable=function(){this._isEnabled=!0},I.disable=function(){this._isEnabled=!1},I.toggleEnabled=function(){this._isEnabled=!this._isEnabled},I.toggle=function(e){if(this._isEnabled)if(e){var n=this.constructor.DATA_KEY,i=t(e.currentTarget).data(n);i||(i=new this.constructor(e.currentTarget,this._getDelegateConfig()),t(e.currentTarget).data(n,i)),i._activeTrigger.click=!i._activeTrigger.click,i._isWithActiveTrigger()?i._enter(null,i):i._leave(null,i)}else{if(t(this.getTipElement()).hasClass(p))return void this._leave(null,this);this._enter(null,this)}},I.dispose=function(){clearTimeout(this._timeout),t.removeData(this.element,this.constructor.DATA_KEY),t(this.element).off(this.constructor.EVENT_KEY),t(this.element).closest(".modal").off("hide.bs.modal"),this.tip&&t(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,null!==this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},I.show=function(){var e=this;if("none"===t(this.element).css("display"))throw new Error("Please use show on visible elements");var i=t.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){t(this.element).trigger(i);var s=t.contains(this.element.ownerDocument.documentElement,this.element);if(i.isDefaultPrevented()||!s)return;var r=this.getTipElement(),o=P.getUID(this.constructor.NAME);r.setAttribute("id",o),this.element.setAttribute("aria-describedby",o),this.setContent(),this.config.animation&&t(r).addClass(g);var l="function"==typeof this.config.placement?this.config.placement.call(this,r,this.element):this.config.placement,h=this._getAttachment(l);this.addAttachmentClass(h);var c=!1===this.config.container?document.body:t(this.config.container);t(r).data(this.constructor.DATA_KEY,this),t.contains(this.element.ownerDocument.documentElement,this.tip)||t(r).appendTo(c),t(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new n(this.element,r,{placement:h,modifiers:{offset:{offset:this.config.offset},flip:{behavior:this.config.fallbackPlacement},arrow:{element:v},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){e._handlePopperPlacementChange(t)}}),t(r).addClass(p),"ontouchstart"in document.documentElement&&t("body").children().on("mouseover",null,t.noop);var u=function(){e.config.animation&&e._fixTransition();var n=e._hoverState;e._hoverState=null,t(e.element).trigger(e.constructor.Event.SHOWN),n===d&&e._leave(null,e)};P.supportsTransitionEnd()&&t(this.tip).hasClass(g)?t(this.tip).one(P.TRANSITION_END,u).emulateTransitionEnd(a._TRANSITION_DURATION):u()}},I.hide=function(e){var n=this,i=this.getTipElement(),s=t.Event(this.constructor.Event.HIDE),r=function(){n._hoverState!==f&&i.parentNode&&i.parentNode.removeChild(i),n._cleanTipClass(),n.element.removeAttribute("aria-describedby"),t(n.element).trigger(n.constructor.Event.HIDDEN),null!==n._popper&&n._popper.destroy(),e&&e()};t(this.element).trigger(s),s.isDefaultPrevented()||(t(i).removeClass(p),"ontouchstart"in document.documentElement&&t("body").children().off("mouseover",null,t.noop),this._activeTrigger[y]=!1,this._activeTrigger[T]=!1,this._activeTrigger[E]=!1,P.supportsTransitionEnd()&&t(this.tip).hasClass(g)?t(i).one(P.TRANSITION_END,r).emulateTransitionEnd(150):r(),this._hoverState="")},I.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},I.isWithContent=function(){return Boolean(this.getTitle())},I.addAttachmentClass=function(e){t(this.getTipElement()).addClass("bs-tooltip-"+e)},I.getTipElement=function(){return this.tip=this.tip||t(this.config.template)[0],this.tip},I.setContent=function(){var e=t(this.getTipElement());this.setElementContent(e.find(m),this.getTitle()),e.removeClass(g+" "+p)},I.setElementContent=function(e,n){var i=this.config.html;"object"==typeof n&&(n.nodeType||n.jquery)?i?t(n).parent().is(e)||e.empty().append(n):e.text(t(n).text()):e[i?"html":"text"](n)},I.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},I._getAttachment=function(t){return c[t.toUpperCase()]},I._setListeners=function(){var e=this;this.config.trigger.split(" ").forEach(function(n){if("click"===n)t(e.element).on(e.constructor.Event.CLICK,e.config.selector,function(t){return e.toggle(t)});else if(n!==C){var i=n===E?e.constructor.Event.MOUSEENTER:e.constructor.Event.FOCUSIN,s=n===E?e.constructor.Event.MOUSELEAVE:e.constructor.Event.FOCUSOUT;t(e.element).on(i,e.config.selector,function(t){return e._enter(t)}).on(s,e.config.selector,function(t){return e._leave(t)})}t(e.element).closest(".modal").on("hide.bs.modal",function(){return e.hide()})}),this.config.selector?this.config=r({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},I._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},I._enter=function(e,n){var i=this.constructor.DATA_KEY;(n=n||t(e.currentTarget).data(i))||(n=new this.constructor(e.currentTarget,this._getDelegateConfig()),t(e.currentTarget).data(i,n)),e&&(n._activeTrigger["focusin"===e.type?T:E]=!0),t(n.getTipElement()).hasClass(p)||n._hoverState===f?n._hoverState=f:(clearTimeout(n._timeout),n._hoverState=f,n.config.delay&&n.config.delay.show?n._timeout=setTimeout(function(){n._hoverState===f&&n.show()},n.config.delay.show):n.show())},I._leave=function(e,n){var i=this.constructor.DATA_KEY;(n=n||t(e.currentTarget).data(i))||(n=new this.constructor(e.currentTarget,this._getDelegateConfig()),t(e.currentTarget).data(i,n)),e&&(n._activeTrigger["focusout"===e.type?T:E]=!1),n._isWithActiveTrigger()||(clearTimeout(n._timeout),n._hoverState=d,n.config.delay&&n.config.delay.hide?n._timeout=setTimeout(function(){n._hoverState===d&&n.hide()},n.config.delay.hide):n.hide())},I._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},I._getConfig=function(n){return"number"==typeof(n=r({},this.constructor.Default,t(this.element).data(),n)).delay&&(n.delay={show:n.delay,hide:n.delay}),"number"==typeof n.title&&(n.title=n.title.toString()),"number"==typeof n.content&&(n.content=n.content.toString()),P.typeCheckConfig(e,n,this.constructor.DefaultType),n},I._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},I._cleanTipClass=function(){var e=t(this.getTipElement()),n=e.attr("class").match(l);null!==n&&n.length>0&&e.removeClass(n.join(""))},I._handlePopperPlacementChange=function(t){this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},I._fixTransition=function(){var e=this.getTipElement(),n=this.config.animation;null===e.getAttribute("x-placement")&&(t(e).removeClass(g),this.config.animation=!1,this.hide(),this.show(),this.config.animation=n)},a._jQueryInterface=function(e){return this.each(function(){var n=t(this).data(i),s="object"==typeof e&&e;if((n||!/dispose|hide/.test(e))&&(n||(n=new a(this,s),t(this).data(i,n)),"string"==typeof e)){if("undefined"==typeof n[e])throw new TypeError('No method named "'+e+'"');n[e]()}})},s(a,null,[{key:"VERSION",get:function(){return"4.0.0"}},{key:"Default",get:function(){return u}},{key:"NAME",get:function(){return e}},{key:"DATA_KEY",get:function(){return i}},{key:"Event",get:function(){return _}},{key:"EVENT_KEY",get:function(){return o}},{key:"DefaultType",get:function(){return h}}]),a}();return t.fn[e]=I._jQueryInterface,t.fn[e].Constructor=I,t.fn[e].noConflict=function(){return t.fn[e]=a,I._jQueryInterface},I}(e),x=function(t){var e="popover",n="bs.popover",i="."+n,o=t.fn[e],a=new RegExp("(^|\\s)bs-popover\\S+","g"),l=r({},U.Default,{placement:"right",trigger:"click",content:"",template:''}),h=r({},U.DefaultType,{content:"(string|element|function)"}),c="fade",u="show",f=".popover-header",d=".popover-body",_={HIDE:"hide"+i,HIDDEN:"hidden"+i,SHOW:"show"+i,SHOWN:"shown"+i,INSERTED:"inserted"+i,CLICK:"click"+i,FOCUSIN:"focusin"+i,FOCUSOUT:"focusout"+i,MOUSEENTER:"mouseenter"+i,MOUSELEAVE:"mouseleave"+i},g=function(r){var o,g;function p(){return r.apply(this,arguments)||this}g=r,(o=p).prototype=Object.create(g.prototype),o.prototype.constructor=o,o.__proto__=g;var m=p.prototype;return m.isWithContent=function(){return this.getTitle()||this._getContent()},m.addAttachmentClass=function(e){t(this.getTipElement()).addClass("bs-popover-"+e)},m.getTipElement=function(){return this.tip=this.tip||t(this.config.template)[0],this.tip},m.setContent=function(){var e=t(this.getTipElement());this.setElementContent(e.find(f),this.getTitle());var n=this._getContent();"function"==typeof n&&(n=n.call(this.element)),this.setElementContent(e.find(d),n),e.removeClass(c+" "+u)},m._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},m._cleanTipClass=function(){var e=t(this.getTipElement()),n=e.attr("class").match(a);null!==n&&n.length>0&&e.removeClass(n.join(""))},p._jQueryInterface=function(e){return this.each(function(){var i=t(this).data(n),s="object"==typeof e?e:null;if((i||!/destroy|hide/.test(e))&&(i||(i=new p(this,s),t(this).data(n,i)),"string"==typeof e)){if("undefined"==typeof i[e])throw new TypeError('No method named "'+e+'"');i[e]()}})},s(p,null,[{key:"VERSION",get:function(){return"4.0.0"}},{key:"Default",get:function(){return l}},{key:"NAME",get:function(){return e}},{key:"DATA_KEY",get:function(){return n}},{key:"Event",get:function(){return _}},{key:"EVENT_KEY",get:function(){return i}},{key:"DefaultType",get:function(){return h}}]),p}(U);return t.fn[e]=g._jQueryInterface,t.fn[e].Constructor=g,t.fn[e].noConflict=function(){return t.fn[e]=o,g._jQueryInterface},g}(e),K=function(t){var e="scrollspy",n="bs.scrollspy",i="."+n,o=t.fn[e],a={offset:10,method:"auto",target:""},l={offset:"number",method:"string",target:"(string|element)"},h={ACTIVATE:"activate"+i,SCROLL:"scroll"+i,LOAD_DATA_API:"load"+i+".data-api"},c="dropdown-item",u="active",f={DATA_SPY:'[data-spy="scroll"]',ACTIVE:".active",NAV_LIST_GROUP:".nav, .list-group",NAV_LINKS:".nav-link",NAV_ITEMS:".nav-item",LIST_ITEMS:".list-group-item",DROPDOWN:".dropdown",DROPDOWN_ITEMS:".dropdown-item",DROPDOWN_TOGGLE:".dropdown-toggle"},d="offset",_="position",g=function(){function o(e,n){var i=this;this._element=e,this._scrollElement="BODY"===e.tagName?window:e,this._config=this._getConfig(n),this._selector=this._config.target+" "+f.NAV_LINKS+","+this._config.target+" "+f.LIST_ITEMS+","+this._config.target+" "+f.DROPDOWN_ITEMS,this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,t(this._scrollElement).on(h.SCROLL,function(t){return i._process(t)}),this.refresh(),this._process()}var g=o.prototype;return g.refresh=function(){var e=this,n=this._scrollElement===this._scrollElement.window?d:_,i="auto"===this._config.method?n:this._config.method,s=i===_?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),t.makeArray(t(this._selector)).map(function(e){var n,r=P.getSelectorFromElement(e);if(r&&(n=t(r)[0]),n){var o=n.getBoundingClientRect();if(o.width||o.height)return[t(n)[i]().top+s,r]}return null}).filter(function(t){return t}).sort(function(t,e){return t[0]-e[0]}).forEach(function(t){e._offsets.push(t[0]),e._targets.push(t[1])})},g.dispose=function(){t.removeData(this._element,n),t(this._scrollElement).off(i),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},g._getConfig=function(n){if("string"!=typeof(n=r({},a,n)).target){var i=t(n.target).attr("id");i||(i=P.getUID(e),t(n.target).attr("id",i)),n.target="#"+i}return P.typeCheckConfig(e,n,l),n},g._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},g._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},g._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},g._process=function(){var t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),n=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=n){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&t0)return this._activeTarget=null,void this._clear();for(var s=this._offsets.length;s--;){this._activeTarget!==this._targets[s]&&t>=this._offsets[s]&&("undefined"==typeof this._offsets[s+1]||t=4)throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")}(e),t.Util=P,t.Alert=L,t.Button=R,t.Carousel=j,t.Collapse=H,t.Dropdown=W,t.Modal=M,t.Popover=x,t.Scrollspy=K,t.Tab=V,t.Tooltip=U,Object.defineProperty(t,"__esModule",{value:!0})}); +//# sourceMappingURL=bootstrap.min.js.map \ No newline at end of file diff --git a/apps/nps/0.29.21/web/static/js/echarts.min.js b/apps/nps/0.29.21/web/static/js/echarts.min.js new file mode 100755 index 0000000..8141437 --- /dev/null +++ b/apps/nps/0.29.21/web/static/js/echarts.min.js @@ -0,0 +1 @@ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).echarts={})}(this,function(t){"use strict";var a=function(t,e){return(a=Object.setPrototypeOf||({__proto__:[]}instanceof Array?function(t,e){t.__proto__=e}:function(t,e){for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n])}))(t,e)};function u(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function n(){this.constructor=t}a(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}var s=function(){this.firefox=!1,this.ie=!1,this.edge=!1,this.newEdge=!1,this.weChat=!1},w=new function(){this.browser=new s,this.node=!1,this.wxa=!1,this.worker=!1,this.svgSupported=!1,this.touchEventsSupported=!1,this.pointerEventsSupported=!1,this.domSupported=!1,this.transformSupported=!1,this.transform3dSupported=!1,this.hasGlobalWindow="undefined"!=typeof window};"object"==typeof wx&&"function"==typeof wx.getSystemInfoSync?(w.wxa=!0,w.touchEventsSupported=!0):"undefined"==typeof document&&"undefined"!=typeof self?w.worker=!0:"undefined"==typeof navigator||0===navigator.userAgent.indexOf("Node.js")?(w.node=!0,w.svgSupported=!0):(tt=navigator.userAgent,se=(Gt=w).browser,st=tt.match(/Firefox\/([\d.]+)/),_=tt.match(/MSIE\s([\d.]+)/)||tt.match(/Trident\/.+?rv:(([\d.]+))/),k=tt.match(/Edge?\/([\d.]+)/),tt=/micromessenger/i.test(tt),st&&(se.firefox=!0,se.version=st[1]),_&&(se.ie=!0,se.version=_[1]),k&&(se.edge=!0,se.version=k[1],se.newEdge=18<+k[1].split(".")[0]),tt&&(se.weChat=!0),Gt.svgSupported="undefined"!=typeof SVGRect,Gt.touchEventsSupported="ontouchstart"in window&&!se.ie&&!se.edge,Gt.pointerEventsSupported="onpointerdown"in window&&(se.edge||se.ie&&11<=+se.version),Gt.domSupported="undefined"!=typeof document,st=document.documentElement.style,Gt.transform3dSupported=(se.ie&&"transition"in st||se.edge||"WebKitCSSMatrix"in window&&"m11"in new WebKitCSSMatrix||"MozPerspective"in st)&&!("OTransition"in st),Gt.transformSupported=Gt.transform3dSupported||se.ie&&9<=+se.version);var l=12,f="sans-serif",J=l+"px "+f;var h,c,p=function(t){var e={};if("undefined"!=typeof JSON)for(var n=0;n>1)%2;s.cssText=["position: absolute","visibility: hidden","padding: 0","margin: 0","border-width: 0","user-select: none","width:0","height:0",i[l]+":0",o[u]+":0",i[1-l]+":auto",o[1-u]+":auto",""].join("!important;"),t.appendChild(a),n.push(a)}}return n}(e,r),r,o);if(e)return e(t,n,i),!0}return!1}function xe(t){return"CANVAS"===t.nodeName.toUpperCase()}var _e=/([&<>"'])/g,be={"&":"&","<":"<",">":">",'"':""","'":"'"};function we(t){return null==t?"":(t+"").replace(_e,function(t,e){return be[e]})}var Se=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Me=[],Ie=w.browser.firefox&&+w.browser.version.split(".")[0]<39;function Te(t,e,n,i){return n=n||{},i?Ce(t,e,n):Ie&&null!=e.layerX&&e.layerX!==e.offsetX?(n.zrX=e.layerX,n.zrY=e.layerY):null!=e.offsetX?(n.zrX=e.offsetX,n.zrY=e.offsetY):Ce(t,e,n),n}function Ce(t,e,n){if(w.domSupported&&t.getBoundingClientRect){var i,o=e.clientX,e=e.clientY;if(xe(t))return i=t.getBoundingClientRect(),n.zrX=o-i.left,void(n.zrY=e-i.top);if(ve(Me,t,o,e))return n.zrX=Me[0],void(n.zrY=Me[1])}n.zrX=n.zrY=0}function De(t){return t||window.event}function Ae(t,e,n){var i;return null==(e=De(e)).zrX&&((i=e.type)&&0<=i.indexOf("touch")?(i=("touchend"!==i?e.targetTouches:e.changedTouches)[0])&&Te(t,i,e,n):(Te(t,e,e,n),i=function(t){var e=t.wheelDelta;if(e)return e;var n=t.deltaX,t=t.deltaY;return null!=n&&null!=t?3*(0!==t?Math.abs(t):Math.abs(n))*(0=n.x&&t<=n.x+n.width&&e>=n.y&&e<=n.y+n.height},nn.prototype.clone=function(){return new nn(this.x,this.y,this.width,this.height)},nn.prototype.copy=function(t){nn.copy(this,t)},nn.prototype.plain=function(){return{x:this.x,y:this.y,width:this.width,height:this.height}},nn.prototype.isFinite=function(){return isFinite(this.x)&&isFinite(this.y)&&isFinite(this.width)&&isFinite(this.height)},nn.prototype.isZero=function(){return 0===this.width||0===this.height},nn.create=function(t){return new nn(t.x,t.y,t.width,t.height)},nn.copy=function(t,e){t.x=e.x,t.y=e.y,t.width=e.width,t.height=e.height},nn.applyTransform=function(t,e,n){var i,o,r,a;n?n[1]<1e-5&&-1e-5t.getWidth()||n<0||n>t.getHeight()}nt(["click","mousedown","mouseup","mousewheel","dblclick","contextmenu"],function(a){dn.prototype[a]=function(t){var e,n,i=t.zrX,o=t.zrY,r=yn(this,i,o);if("mouseup"===a&&r||(n=(e=this.findHover(i,o)).target),"mousedown"===a)this._downEl=n,this._downPoint=[t.zrX,t.zrY],this._upEl=n;else if("mouseup"===a)this._upEl=n;else if("click"===a){if(this._downEl!==this._upEl||!this._downPoint||4>>1])<0?l=r:s=1+r;var u=i-s;switch(u){case 3:t[s+3]=t[s+2];case 2:t[s+2]=t[s+1];case 1:t[s+1]=t[s];break;default:for(;0>>1);0>>1);r(t,e[n+h])<0?l=h:a=h+1}return l}function Sn(k,L){var P,O,N=vn,R=0,E=[];function e(t){var e=P[t],n=O[t],i=P[t+1],o=O[t+1],t=(O[t]=n+o,t===R-3&&(P[t+1]=P[t+2],O[t+1]=O[t+2]),R--,wn(k[i],k,e,n,0,L));if(e+=t,0!=(n-=t)&&0!==(o=bn(k[e+n-1],k,i,o,o-1,L)))if(n<=o){var r=e,a=n,t=i,s=o,l=0;for(l=0;lO[t+1])break;e(t)}},forceMergeRuns:function(){for(;1>=1;return t+e}(o);do{}while((r=xn(t,n,i,e))=this._maxSize&&0>4|(3840&o)>>8,240&o|(240&o)>>4,15&o|(15&o)<<4,5===i?parseInt(n.slice(4),16)/15:1),wi(t,e),e):void vi(e,0,0,0,1):7===i||9===i?0<=(o=parseInt(n.slice(1,7),16))&&o<=16777215?(vi(e,(16711680&o)>>16,(65280&o)>>8,255&o,9===i?parseInt(n.slice(7),16)/255:1),wi(t,e),e):void vi(e,0,0,0,1):void 0;var o=n.indexOf("("),r=n.indexOf(")");if(-1!==o&&r+1===i){var i=n.substr(0,o),a=n.substr(o+1,r-(o+1)).split(","),s=1;switch(i){case"rgba":if(4!==a.length)return 3===a.length?vi(e,+a[0],+a[1],+a[2],1):vi(e,0,0,0,1);s=fi(a.pop());case"rgb":return 3<=a.length?(vi(e,gi(a[0]),gi(a[1]),gi(a[2]),3===a.length?s:fi(a[3])),wi(t,e),e):void vi(e,0,0,0,1);case"hsla":return 4!==a.length?void vi(e,0,0,0,1):(a[3]=fi(a[3]),Mi(a,e),wi(t,e),e);case"hsl":return 3!==a.length?void vi(e,0,0,0,1):(Mi(a,e),wi(t,e),e);default:return}}vi(e,0,0,0,1)}}function Mi(t,e){var n=(parseFloat(t[0])%360+360)%360/360,i=fi(t[1]),o=fi(t[2]),i=o<=.5?o*(i+1):o+i-o*i,o=2*o-i;return vi(e=e||[],pi(255*yi(o,i,n+1/3)),pi(255*yi(o,i,n)),pi(255*yi(o,i,n-1/3)),1),4===t.length&&(e[3]=t[3]),e}function Ii(t,e){var n=Si(t);if(n){for(var i=0;i<3;i++)n[i]=e<0?n[i]*(1-e)|0:(255-n[i])*e+n[i]|0,255e);f++);f=g(f-1,h-2)}i=u[f+1],n=u[f]}n&&i&&(this._lastFr=f,this._lastFrP=e,d=i.percent-n.percent,o=0==d?1:g((e-n.percent)/d,1),i.easingFunc&&(o=i.easingFunc(o)),g=a?this._additiveValue:p?ro:t[c],(oo(l)||p)&&(g=g||(this._additiveValue=[])),this.discrete?t[c]=(o<1?n:i).rawValue:oo(l)?(1===l?Ji:function(t,e,n,i){for(var o=e.length,r=o&&e[0].length,a=0;athis._sleepAfterStill)&&this.animation.stop()},_r.prototype.setSleepAfterStill=function(t){this._sleepAfterStill=t},_r.prototype.wakeUp=function(){this._disposed||(this.animation.start(),this._stillFrameAccum=0)},_r.prototype.refreshHover=function(){this._needsRefreshHover=!0},_r.prototype.refreshHoverImmediately=function(){this._disposed||(this._needsRefreshHover=!1,this.painter.refreshHover&&"canvas"===this.painter.getType()&&this.painter.refreshHover())},_r.prototype.resize=function(t){this._disposed||(this.painter.resize((t=t||{}).width,t.height),this.handler.resize())},_r.prototype.clearAnimation=function(){this._disposed||this.animation.clear()},_r.prototype.getWidth=function(){if(!this._disposed)return this.painter.getWidth()},_r.prototype.getHeight=function(){if(!this._disposed)return this.painter.getHeight()},_r.prototype.setCursorStyle=function(t){this._disposed||this.handler.setCursorStyle(t)},_r.prototype.findHover=function(t,e){if(!this._disposed)return this.handler.findHover(t,e)},_r.prototype.on=function(t,e,n){return this._disposed||this.handler.on(t,e,n),this},_r.prototype.off=function(t,e){this._disposed||this.handler.off(t,e)},_r.prototype.trigger=function(t,e){this._disposed||this.handler.trigger(t,e)},_r.prototype.clear=function(){if(!this._disposed){for(var t=this.storage.getRoots(),e=0;el&&(l=s[h],u=h);++r[u],s[u]=0,++a}return V(r,function(t){return t/i})}var Nr=9007199254740991;function Rr(t){var e=2*Math.PI;return(t%e+e)%e}function Er(t){return-1e-4=e.maxIterations){t+=e.ellipsis;break}var s=0===a?function(t,e,n,i){for(var o=0,r=0,a=t.length;rr){0i.width&&(r=e.split("\n"),c=!0),i.accumWidth=t):(t=Za(e,h,i.width,i.breakAll,i.accumWidth),i.accumWidth=t.accumWidth+n,a=t.linesWidths,r=t.lines)):r=e.split("\n");for(var p=0;pthis._ux||i>this._uy;return this.addData(ys.L,t,e),this._ctx&&o&&this._ctx.lineTo(t,e),o?(this._xi=t,this._yi=e,this._pendingPtDist=0):(o=n*n+i*i)>this._pendingPtDist&&(this._pendingPtX=t,this._pendingPtY=e,this._pendingPtDist=o),this},Rs.prototype.bezierCurveTo=function(t,e,n,i,o,r){return this._drawPendingPt(),this.addData(ys.C,t,e,n,i,o,r),this._ctx&&this._ctx.bezierCurveTo(t,e,n,i,o,r),this._xi=o,this._yi=r,this},Rs.prototype.quadraticCurveTo=function(t,e,n,i){return this._drawPendingPt(),this.addData(ys.Q,t,e,n,i),this._ctx&&this._ctx.quadraticCurveTo(t,e,n,i),this._xi=n,this._yi=i,this},Rs.prototype.arc=function(t,e,n,i,o,r){return this._drawPendingPt(),Ls[0]=i,Ls[1]=o,Os(Ls,r),this.addData(ys.A,t,e,n,n,i=Ls[0],(o=Ls[1])-i,0,r?0:1),this._ctx&&this._ctx.arc(t,e,n,i,o,r),this._xi=Is(o)*n+t,this._yi=Ts(o)*n+e,this},Rs.prototype.arcTo=function(t,e,n,i,o){return this._drawPendingPt(),this._ctx&&this._ctx.arcTo(t,e,n,i,o),this},Rs.prototype.rect=function(t,e,n,i){return this._drawPendingPt(),this._ctx&&this._ctx.rect(t,e,n,i),this.addData(ys.R,t,e,n,i),this},Rs.prototype.closePath=function(){this._drawPendingPt(),this.addData(ys.Z);var t=this._ctx,e=this._x0,n=this._y0;return t&&t.closePath(),this._xi=e,this._yi=n,this},Rs.prototype.fill=function(t){t&&t.fill(),this.toStatic()},Rs.prototype.stroke=function(t){t&&t.stroke(),this.toStatic()},Rs.prototype.len=function(){return this._len},Rs.prototype.setData=function(t){var e=t.length;this.data&&this.data.length===e||!ks||(this.data=new Float32Array(e));for(var n=0;nu.length&&(this._expandData(),u=this.data);for(var h=0;hn||Cs(y)>i||c===e-1)&&(g=Math.sqrt(C*C+y*y),o=f,r=x);break;case ys.C:var m=t[c++],v=t[c++],f=t[c++],x=t[c++],_=t[c++],b=t[c++],g=function(t,e,n,i,o,r,a,s,l){for(var u=t,h=e,c=0,p=1/l,d=1;d<=l;d++){var g=d*p,f=Xn(t,n,o,a,g),g=Xn(e,i,r,s,g),y=f-u,m=g-h;c+=Math.sqrt(y*y+m*m),u=f,h=g}return c}(o,r,m,v,f,x,_,b,10),o=_,r=b;break;case ys.Q:g=function(t,e,n,i,o,r,a){for(var s=t,l=e,u=0,h=1/a,c=1;c<=a;c++){var p=c*h,d=$n(t,n,o,p),p=$n(e,i,r,p),g=d-s,f=p-l;u+=Math.sqrt(g*g+f*f),s=d,l=p}return u}(o,r,m=t[c++],v=t[c++],f=t[c++],x=t[c++],10),o=f,r=x;break;case ys.A:var _=t[c++],b=t[c++],w=t[c++],S=t[c++],M=t[c++],I=t[c++],T=I+M;c+=1,d&&(a=Is(M)*w+_,s=Ts(M)*S+b),g=Ms(w,S)*Ss(As,Math.abs(I)),o=Is(T)*w+_,r=Ts(T)*S+b;break;case ys.R:a=o=t[c++],s=r=t[c++];g=2*t[c++]+2*t[c++];break;case ys.Z:var C=a-o,y=s-r;g=Math.sqrt(C*C+y*y),o=a,r=s}0<=g&&(u+=l[h++]=g)}return this._pathLen=u},Rs.prototype.rebuildPath=function(t,e){var n,i,o,r,a,s,l,u,h=this.data,E=this._ux,z=this._uy,V=this._len,c=e<1,p=0,d=0,g=0;if(!c||(this._pathSegLen||this._calculateLength(),a=this._pathSegLen,s=e*this._pathLen))t:for(var f=0;f=Xs[i=0]+t&&a<=Xs[1]+t?h:0;oMath.PI/2&&c<1.5*Math.PI?-h:h)}return l}(y,m,x,_,_+b,w,I,o);u=Math.cos(_+b)*v+y,h=Math.sin(_+b)*x+m;break;case Ws.R:c=u=a[d++],p=h=a[d++];if(S=c+a[d++],M=p+a[d++],n){if(Es(c,p,S,p,e,i,o)||Es(S,p,S,M,e,i,o)||Es(S,M,c,M,e,i,o)||Es(c,M,c,p,e,i,o))return!0}else l=(l+=Gs(S,p,S,M,i,o))+Gs(c,M,c,p,i,o);break;case Ws.Z:if(n){if(Es(u,h,c,p,e,i,o))return!0}else l+=Gs(u,h,c,p,i,o);u=c,h=p}}return n||(t=h,r=p,Math.abs(t-r)i.len()&&(uMath.abs(i[1])?0':'':{renderMode:o,content:"{"+(t.markerId||"markerX")+"|} ",style:"subItem"===i?{width:4,height:4,borderRadius:2,backgroundColor:n}:{width:10,height:10,borderRadius:5,backgroundColor:n}}:""}function Md(t,e){return e=e||"transparent",H(t)?t:O(t)&&t.colorStops&&(t.colorStops[0]||{}).color||e}function Id(t,e){var n;"_blank"===e||"blank"===e?((n=window.open()).opener=null,n.location.href=t):window.open(t,e)}var Td=nt,Cd=["left","right","top","bottom","width","height"],Dd=[["width","left","right"],["height","top","bottom"]];function Ad(a,s,l,u,h){var c=0,p=0,d=(null==u&&(u=1/0),null==h&&(h=1/0),0);s.eachChild(function(t,e){var n,i,o,r=t.getBoundingRect(),e=s.childAt(e+1),e=e&&e.getBoundingRect();d="horizontal"===a?(i=r.width+(e?-e.x+r.x:0),u<(n=c+i)||t.newline?(c=0,n=i,p+=d+l,r.height):Math.max(d,r.height)):(i=r.height+(e?-e.y+r.y:0),h<(o=p+i)||t.newline?(c+=d+l,p=0,o=i,r.width):Math.max(d,r.width)),t.newline||(t.x=c,t.y=p,t.markRedraw(),"horizontal"===a?c=n+l:p=o+l)})}var kd=Ad;function Ld(t,e,n){n=vd(n||0);var i=e.width,o=e.height,r=j(t.left,i),a=j(t.top,o),e=j(t.right,i),s=j(t.bottom,o),l=j(t.width,i),u=j(t.height,o),h=n[2]+n[0],c=n[1]+n[3],p=t.aspect;switch(isNaN(l)&&(l=i-e-c-r),isNaN(u)&&(u=o-s-h-a),null!=p&&(isNaN(l)&&isNaN(u)&&(i/oe)return t[i];return t[n-1]}(i,a):n)||n)&&i.length?(a=i[t],o&&(r[o]=a),e.paletteIdx=(t+1)%i.length,a):void 0}var yg,mg="\0_ec_inner",vg=(u(xg,yg=kp),xg.prototype.init=function(t,e,n,i,o,r){i=i||{},this.option=null,this._theme=new kp(i),this._locale=new kp(o),this._optionManager=r},xg.prototype.setOption=function(t,e,n){e=wg(e);this._optionManager.setOption(t,n,e),this._resetOption(null,e)},xg.prototype.resetOption=function(t,e){return this._resetOption(t,wg(e))},xg.prototype._resetOption=function(t,e){var n,i=!1,o=this._optionManager;return t&&"recreate"!==t||(n=o.mountOption("recreate"===t),this.option&&"recreate"!==t?(this.restoreData(),this._mergeOption(n,e)):hg(this,n),i=!0),"timeline"!==t&&"media"!==t||this.restoreData(),t&&"recreate"!==t&&"timeline"!==t||(n=o.getTimelineOption(this))&&(i=!0,this._mergeOption(n,e)),t&&"recreate"!==t&&"media"!==t||(n=o.getMediaOption(this)).length&&nt(n,function(t){i=!0,this._mergeOption(t,e)},this),i},xg.prototype.mergeOption=function(t){this._mergeOption(t,null)},xg.prototype._mergeOption=function(i,t){var o=this.option,h=this._componentsMap,c=this._componentsCount,n=[],r=R(),p=t&&t.replaceMergeMainTypeMap;eg(this).datasetMap=R(),nt(i,function(t,e){null!=t&&(g.hasClass(e)?e&&(n.push(e),r.set(e,!0)):o[e]=null==o[e]?S(t):d(o[e],t,!0))}),p&&p.each(function(t,e){g.hasClass(e)&&!r.get(e)&&(n.push(e),r.set(e,!0))}),g.topologicalTravel(n,g.getAllClassMainTypes(),function(r){var a,t=function(t,e,n){return(e=(e=sg.get(e))&&e(t))?n.concat(e):n}(this,r,Jr(i[r])),e=h.get(r),n=e?p&&p.get(r)?"replaceMerge":"normalMerge":"replaceAll",e=na(e,t,n),s=(la(e,r,g),o[r]=null,h.set(r,null),c.set(r,0),[]),l=[],u=0;nt(e,function(t,e){var n=t.existing,i=t.newOption;if(i){var o=g.getClass(r,t.keyInfo.subType,!("series"===r));if(!o)return;if("tooltip"===r){if(a)return;a=!0}n&&n.constructor===o?(n.name=t.keyInfo.name,n.mergeOption(i,this),n.optionUpdated(i,!1)):(e=F({componentIndex:e},t.keyInfo),F(n=new o(i,this,this,e),e),t.brandNew&&(n.__requireNewView=!0),n.init(i,this,this),n.optionUpdated(null,!0))}else n&&(n.mergeOption({},this),n.optionUpdated({},!1));n?(s.push(n.option),l.push(n),u++):(s.push(void 0),l.push(void 0))},this),o[r]=s,h.set(r,l),c.set(r,u),"series"===r&&lg(this)},this),this._seriesIndices||lg(this)},xg.prototype.getOption=function(){var a=S(this.option);return nt(a,function(t,e){if(g.hasClass(e)){for(var n=Jr(t),i=n.length,o=!1,r=i-1;0<=r;r--)n[r]&&!sa(n[r])?o=!0:(n[r]=null,o||i--);n.length=i,a[e]=n}}),delete a[mg],a},xg.prototype.getTheme=function(){return this._theme},xg.prototype.getLocaleModel=function(){return this._locale},xg.prototype.setUpdatePayload=function(t){this._payload=t},xg.prototype.getUpdatePayload=function(){return this._payload},xg.prototype.getComponent=function(t,e){var n=this._componentsMap.get(t);if(n){t=n[e||0];if(t)return t;if(null==e)for(var i=0;if[1]&&(f[1]=g)}return{start:a,end:this._rawCount=this._count=s}},fy.prototype._initDataFromProvider=function(t,e,n){for(var i=this._provider,o=this._chunks,r=this._dimensions,a=r.length,s=this._rawExtent,l=V(r,function(t){return t.property}),u=0;ug[1]&&(g[1]=f)}!i.persistent&&i.clean&&i.clean(),this._rawCount=this._count=e,this._extent=[]},fy.prototype.count=function(){return this._count},fy.prototype.get=function(t,e){return 0<=e&&e=this._rawCount||t<0)){if(!this._indices)return t;var e=this._indices,n=e[t];if(null!=n&&nt))return r;o=r-1}}}return-1},fy.prototype.indicesOfNearest=function(t,e,n){var i=this._chunks[t],o=[];if(i){null==n&&(n=1/0);for(var r=1/0,a=-1,s=0,l=0,u=this.count();lt[S][1])&&(b=!1)}b&&(a[s++]=e.getRawIndex(g))}return sy[1]&&(y[1]=f)}}}},fy.prototype.lttbDownSample=function(t,e){var n,i=this.clone([t],!0),o=i._chunks[t],r=this.count(),a=0,s=Math.floor(1/e),l=this.getRawIndex(0),u=new(cy(this._rawCount))(Math.min(2*(Math.ceil(r/s)+2),r));u[a++]=l;for(var h=1;hh[1]&&(h[1]=y),c[p++]=m}return o._count=p,o._indices=c,o._updateGetRawIdx(),o},fy.prototype.each=function(t,e){if(this._count)for(var n=t.length,i=this._chunks,o=0,r=this.count();o'+we(u)+"
    "+h,t))}function ky(t,e,n,i){var o,r,a,s,l=t.renderMode,u=e.noName,h=e.noValue,c=!e.markerType,p=e.name,d=t.useUTC,g=e.valueFormatter||t.valueFormatter||function(t){return V(t=B(t)?t:[t],function(t,e){return xd(t,B(r)?r[e]:r,d)})};if(!u||!h)return o=c?"":t.markupStyleCreator.makeTooltipMarker(e.markerType,e.markerColor||"#333",l),p=u?"":xd(p,"ordinal",d),r=e.valueType,g=h?[]:g(e.value,e.dataIndex),e=!c||!u,a=!c&&u,i=Sy(i,l),s=i.nameStyle,i=i.valueStyle,"richText"===l?(c?"":o)+(u?"":Oy(t,p,s))+(h?"":function(t,e,n,i,o){o=[o],i=i?10:20;return n&&o.push({padding:[0,0,0,i],align:"right"}),t.markupStyleCreator.wrapRichTextStyle(B(e)?e.join(" "):e,o)}(t,g,e,a,i)):Py((c?"":o)+(u?"":''+we(p)+"")+(h?"":function(t,e,n,i){n=n?"10px":"20px",e=e?"float:right;margin-left:"+n:"";return t=B(t)?t:[t],''+V(t,we).join("  ")+""}(g,e,a,i)),n)}function Ly(t,e,n,i,o,r){if(t)return Dy(t)({useUTC:o,renderMode:n,orderMode:i,markupStyleCreator:e,valueFormatter:t.valueFormatter},t,0,r)}function Py(t,e){return'
    '+t+'
    '}function Oy(t,e,n){return t.markupStyleCreator.wrapRichTextStyle(e,n)}function Ny(t,e){return Md(t.getData().getItemVisual(e,"style")[t.visualDrawType])}function Ry(t,e){t=t.get("padding");return null!=t?t:"richText"===e?[8,10]:10}zy.prototype._generateStyleName=function(){return"__EC_aUTo_"+this._nextStyleNameId++},zy.prototype.makeTooltipMarker=function(t,e,n){var i="richText"===n?this._generateStyleName():null,e=Sd({color:e,type:t,renderMode:n,markerId:i});return H(e)?e:(this.richTextStyles[i]=e.style,e.content)},zy.prototype.wrapRichTextStyle=function(t,e){var n={},e=(B(e)?nt(e,function(t){return F(n,t)}):F(n,e),this._generateStyleName());return this.richTextStyles[e]=n,"{"+e+"|"+t+"}"};var Ey=zy;function zy(){this.richTextStyles={},this._nextStyleNameId=Ur()}function Vy(t){var e,n,i,o,r,a,s,l,u,h,c,p=t.series,d=t.dataIndex,t=t.multipleSeries,g=p.getData(),f=g.mapDimensionsAll("defaultedTooltip"),y=f.length,m=p.getRawValue(d),v=B(m),x=Ny(p,d);function _(t,e){e=s.getDimensionInfo(e);e&&!1!==e.otherDims.tooltip&&(l?c.push(Ty("nameValue",{markerType:"subItem",markerColor:a,name:e.displayName,value:t,valueType:e.type})):(u.push(t),h.push(e.type)))}1this.getShallow("animationThreshold")?!1:t)},Hy.prototype.restoreData=function(){this.dataTask.dirty()},Hy.prototype.getColorFromPalette=function(t,e,n){var i=this.ecModel;return dg.prototype.getColorFromPalette.call(this,t,e,n)||i.getColorFromPalette(t,e,n)},Hy.prototype.coordDimToDataDim=function(t){return this.getRawData().mapDimensionsAll(t)},Hy.prototype.getProgressive=function(){return this.get("progressive")},Hy.prototype.getProgressiveThreshold=function(){return this.get("progressiveThreshold")},Hy.prototype.select=function(t,e){this._innerSelect(this.getData(e),t)},Hy.prototype.unselect=function(t,e){var n=this.option.selectedMap;if(n){var i=this.option.selectedMode,o=this.getData(e);if("series"===i||"all"===n)this.option.selectedMap={},this._selectedDataIndicesMap={};else for(var r=0;re.outputData.count()&&e.model.getRawData().cloneShallow(e.outputData)}function jy(e,n){nt(Et(e.CHANGABLE_METHODS,e.DOWNSAMPLE_METHODS),function(t){e.wrapMethod(t,P(qy,n))})}function qy(t,e){t=Ky(t);return t&&t.setOutputEnd((e||this).count()),e}function Ky(t){var e,n=(t.ecModel||{}).scheduler,n=n&&n.getPipeline(t.uid);if(n)return(n=n.currentTask)&&(e=n.agentStubMap)?e.get(t.uid):n}ut(Wy,Tf),ut(Wy,dg),Ma(Wy,g);Jy.prototype.init=function(t,e){},Jy.prototype.render=function(t,e,n,i){},Jy.prototype.dispose=function(t,e){},Jy.prototype.updateView=function(t,e,n,i){},Jy.prototype.updateLayout=function(t,e,n,i){},Jy.prototype.updateVisual=function(t,e,n,i){},Jy.prototype.toggleBlurSeries=function(t,e,n){},Jy.prototype.eachRendered=function(t){var e=this.group;e&&e.traverse(t)};var $y=Jy;function Jy(){this.group=new Z,this.uid=Op("viewComponent")}function Qy(){var r=i();return function(t){var e=r(t),t=t.pipelineContext,n=!!e.large,i=!!e.progressiveRender,o=e.large=!(!t||!t.large),e=e.progressiveRender=!(!t||!t.progressiveRender);return!(n==o&&i==e)&&"reset"}}Sa($y),Da($y);var tm=i(),em=Qy(),nm=(im.prototype.init=function(t,e){},im.prototype.render=function(t,e,n,i){},im.prototype.highlight=function(t,e,n,i){t=t.getData(i&&i.dataType);t&&rm(t,i,"emphasis")},im.prototype.downplay=function(t,e,n,i){t=t.getData(i&&i.dataType);t&&rm(t,i,"normal")},im.prototype.remove=function(t,e){this.group.removeAll()},im.prototype.dispose=function(t,e){},im.prototype.updateView=function(t,e,n,i){this.render(t,e,n,i)},im.prototype.updateLayout=function(t,e,n,i){this.render(t,e,n,i)},im.prototype.updateVisual=function(t,e,n,i){this.render(t,e,n,i)},im.prototype.eachRendered=function(t){Qc(this.group,t)},im.markUpdateMethod=function(t,e){tm(t).updateMethod=e},im.protoInitialize=void(im.prototype.type="chart"),im);function im(){this.group=new Z,this.uid=Op("viewChart"),this.renderTask=Af({plan:am,reset:sm}),this.renderTask.context={view:this}}function om(t,e,n){t&&ku(t)&&("emphasis"===e?cu:pu)(t,n)}function rm(e,t,n){var i,o=ua(e,t),r=t&&null!=t.highlightKey?(t=t.highlightKey,i=null==(i=El[t])&&Rl<=32?El[t]=Rl++:i):null;null!=o?nt(Jr(o),function(t){om(e.getItemGraphicEl(t),n,r)}):e.eachItemGraphicEl(function(t){om(t,n,r)})}function am(t){return em(t.model)}function sm(t){var e=t.model,n=t.ecModel,i=t.api,o=t.payload,r=e.pipelineContext.progressiveRender,t=t.view,a=o&&tm(o).updateMethod,r=r?"incrementalPrepareRender":a&&t[a]?a:"render";return"render"!==r&&t[r](e,n,i,o),lm[r]}Sa(nm),Da(nm);var lm={incrementalPrepareRender:{progress:function(t,e){e.view.incrementalRender(t,e.model,e.ecModel,e.api,e.payload)}},render:{forceFirstProgress:!0,progress:function(t,e){e.view.render(e.model,e.ecModel,e.api,e.payload)}}},um="\0__throttleOriginMethod",hm="\0__throttleRate",cm="\0__throttleType";function pm(t,o,r){var a,s,l,u,h,c=0,p=0,d=null;function g(){p=(new Date).getTime(),d=null,t.apply(l,u||[])}o=o||0;function e(){for(var t=[],e=0;en.blockIndex?n.step:null,modBy:null!=(t=i&&i.modDataCount)?Math.ceil(t/e):null,modDataCount:t}},Sm.prototype.getPipeline=function(t){return this._pipelineMap.get(t)},Sm.prototype.updateStreamModes=function(t,e){var n=this._pipelineMap.get(t.uid),i=t.getData().count(),e=n.progressiveEnabled&&e.incrementalPrepareRender&&i>=n.threshold,o=t.get("large")&&i>=t.get("largeThreshold"),i="mod"===t.get("progressiveChunkMode")?i:null;t.pipelineContext=n.context={progressiveRender:e,modDataCount:i,large:o}},Sm.prototype.restorePipelines=function(t){var i=this,o=i._pipelineMap=R();t.eachSeries(function(t){var e=t.getProgressive(),n=t.uid;o.set(n,{id:n,head:null,tail:null,threshold:t.getProgressiveThreshold(),progressiveEnabled:e&&!(t.preventIncremental&&t.preventIncremental()),blockIndex:-1,step:Math.round(e||700),count:0}),i._pipe(t,t.dataTask)})},Sm.prototype.prepareStageTasks=function(){var n=this._stageTaskMap,i=this.api.getModel(),o=this.api;nt(this._allHandlers,function(t){var e=n.get(t.uid)||n.set(t.uid,{});Tt(!(t.reset&&t.overallReset),""),t.reset&&this._createSeriesStageTask(t,e,i,o),t.overallReset&&this._createOverallStageTask(t,e,i,o)},this)},Sm.prototype.prepareView=function(t,e,n,i){var o=t.renderTask,r=o.context;r.model=e,r.ecModel=n,r.api=i,o.__block=!t.incrementalPrepareRender,this._pipe(e,o)},Sm.prototype.performDataProcessorTasks=function(t,e){this._performStageTasks(this._dataProcessorHandlers,t,e,{block:!0})},Sm.prototype.performVisualTasks=function(t,e,n){this._performStageTasks(this._visualHandlers,t,e,n)},Sm.prototype._performStageTasks=function(t,s,l,u){u=u||{};var h=!1,c=this;function p(t,e){return t.setDirty&&(!t.dirtyMap||t.dirtyMap.get(e.__pipeline.id))}nt(t,function(i,t){var e,n,o,r,a;u.visualType&&u.visualType!==i.visualType||(e=(n=c._stageTaskMap.get(i.uid)).seriesTaskMap,(n=n.overallTask)?((r=n.agentStubMap).each(function(t){p(u,t)&&(t.dirty(),o=!0)}),o&&n.dirty(),c.updatePayload(n,l),a=c.getPerformArgs(n,u.block),r.each(function(t){t.perform(a)}),n.perform(a)&&(h=!0)):e&&e.each(function(t,e){p(u,t)&&t.dirty();var n=c.getPerformArgs(t,u.block);n.skip=!i.performRawSeries&&s.isSeriesFiltered(t.context.model),c.updatePayload(t,l),t.perform(n)&&(h=!0)}))}),this.unfinished=h||this.unfinished},Sm.prototype.performSeriesTasks=function(t){var e;t.eachSeries(function(t){e=t.dataTask.perform()||e}),this.unfinished=e||this.unfinished},Sm.prototype.plan=function(){this._pipelineMap.each(function(t){var e=t.tail;do{if(e.__block){t.blockIndex=e.__idxInPipeline;break}}while(e=e.getUpstream())})},Sm.prototype.updatePayload=function(t,e){"remain"!==e&&(t.context.payload=e)},Sm.prototype._createSeriesStageTask=function(n,t,i,o){var r=this,a=t.seriesTaskMap,s=t.seriesTaskMap=R(),t=n.seriesType,e=n.getTargetSeries;function l(t){var e=t.uid,e=s.set(e,a&&a.get(e)||Af({plan:Dm,reset:Am,count:Pm}));e.context={model:t,ecModel:i,api:o,useClearVisual:n.isVisual&&!n.isLayout,plan:n.plan,reset:n.reset,scheduler:r},r._pipe(t,e)}n.createOnAllSeries?i.eachRawSeries(l):t?i.eachRawSeriesByType(t,l):e&&e(i,o).each(l)},Sm.prototype._createOverallStageTask=function(t,e,n,i){var o=this,r=e.overallTask=e.overallTask||Af({reset:Mm}),a=(r.context={ecModel:n,api:i,overallReset:t.overallReset,scheduler:o},r.agentStubMap),s=r.agentStubMap=R(),e=t.seriesType,l=t.getTargetSeries,u=!0,h=!1;function c(t){var e=t.uid,e=s.set(e,a&&a.get(e)||(h=!0,Af({reset:Im,onDirty:Cm})));e.context={model:t,overallProgress:u},e.agent=r,e.__block=u,o._pipe(t,e)}Tt(!t.createOnAllSeries,""),e?n.eachRawSeriesByType(e,c):l?l(n,i).each(c):(u=!1,nt(n.getSeries(),c)),h&&r.dirty()},Sm.prototype._pipe=function(t,e){t=t.uid,t=this._pipelineMap.get(t);t.head||(t.head=e),t.tail&&t.tail.pipe(e),(t.tail=e).__idxInPipeline=t.count++,e.__pipeline=t},Sm.wrapStageHandler=function(t,e){return(t=D(t)?{overallReset:t,seriesType:function(t){Om=null;try{t(Nm,Rm)}catch(t){}return Om}(t)}:t).uid=Op("stageHandler"),e&&(t.visualType=e),t};var wm=Sm;function Sm(t,e,n,i){this._stageTaskMap=R(),this.ecInstance=t,this.api=e,n=this._dataProcessorHandlers=n.slice(),i=this._visualHandlers=i.slice(),this._allHandlers=n.concat(i)}function Mm(t){t.overallReset(t.ecModel,t.api,t.payload)}function Im(t){return t.overallProgress&&Tm}function Tm(){this.agent.dirty(),this.getDownstream().dirty()}function Cm(){this.agent&&this.agent.dirty()}function Dm(t){return t.plan?t.plan(t.model,t.ecModel,t.api,t.payload):null}function Am(t){t.useClearVisual&&t.data.clearAllVisual();t=t.resetDefines=Jr(t.reset(t.model,t.ecModel,t.api,t.payload));return 1'+t.dom+""}),g.painter.getSvgRoot().innerHTML=f,i.connectedBackgroundColor&&g.painter.setBackgroundColor(i.connectedBackgroundColor),g.refreshImmediately(),g.painter.toDataURL()):(i.connectedBackgroundColor&&g.add(new L({shape:{x:0,y:0,width:t,height:n},style:{fill:i.connectedBackgroundColor}})),nt(p,function(t){t=new ll({style:{x:t.left*e-l,y:t.top*e-u,image:t.dom}});g.add(t)}),g.refreshImmediately(),d.toDataURL("image/"+(i&&i.type||"png")))):this.getDataURL(i);this.id},xv.prototype.convertToPixel=function(t,e){return iv(this,"convertToPixel",t,e)},xv.prototype.convertFromPixel=function(t,e){return iv(this,"convertFromPixel",t,e)},xv.prototype.containPixel=function(t,i){var o;if(!this._disposed)return nt(ca(this._model,t),function(t,n){0<=n.indexOf("Models")&&nt(t,function(t){var e=t.coordinateSystem;e&&e.containPoint?o=o||!!e.containPoint(i):"seriesModels"===n&&(e=this._chartsMap[t.__viewId])&&e.containPoint&&(o=o||e.containPoint(i,t))},this)},this),!!o;this.id},xv.prototype.getVisual=function(t,e){var t=ca(this._model,t,{defaultMainType:"series"}),n=t.seriesModel.getData(),t=t.hasOwnProperty("dataIndexInside")?t.dataIndexInside:t.hasOwnProperty("dataIndex")?n.indexOfRawIndex(t.dataIndex):null;return null!=t?Hm(n,t,e):Ym(n,e)},xv.prototype.getViewOfComponentModel=function(t){return this._componentsMap[t.__viewId]},xv.prototype.getViewOfSeriesModel=function(t){return this._chartsMap[t.__viewId]},xv.prototype._initEvents=function(){var t,n,i,s=this;nt(Iv,function(a){function t(t){var n,e,i,o=s.getModel(),r=t.target;"globalout"===a?n={}:r&&jm(r,function(t){var e,t=$(t);return t&&null!=t.dataIndex?(e=t.dataModel||o.getSeriesByIndex(t.seriesIndex),n=e&&e.getDataParams(t.dataIndex,t.dataType,r)||{},1):t.eventData&&(n=F({},t.eventData),1)},!0),n&&(e=n.componentType,i=n.componentIndex,"markLine"!==e&&"markPoint"!==e&&"markArea"!==e||(e="series",i=n.seriesIndex),i=(e=e&&null!=i&&o.getComponent(e,i))&&s["series"===e.mainType?"_chartsMap":"_componentsMap"][e.__viewId],n.event=t,n.type=a,s._$eventProcessor.eventInfo={targetEl:r,packedEvent:n,model:e,view:i},s.trigger(a,n))}t.zrEventfulCallAtLast=!0,s._zr.on(a,t,s)}),nt(Cv,function(t,e){s._messageCenter.on(e,function(t){this.trigger(e,t)},s)}),nt(["selectchanged"],function(e){s._messageCenter.on(e,function(t){this.trigger(e,t)},s)}),t=this._messageCenter,i=(n=this)._api,t.on("selectchanged",function(t){var e=i.getModel();t.isFromClick?(Zm("map","selectchanged",n,e,t),Zm("pie","selectchanged",n,e,t)):"select"===t.fromAction?(Zm("map","selected",n,e,t),Zm("pie","selected",n,e,t)):"unselect"===t.fromAction&&(Zm("map","unselected",n,e,t),Zm("pie","unselected",n,e,t))})},xv.prototype.isDisposed=function(){return this._disposed},xv.prototype.clear=function(){this._disposed?this.id:this.setOption({series:[]},!0)},xv.prototype.dispose=function(){var t,e,n;this._disposed?this.id:(this._disposed=!0,this.getDom()&&ya(this.getDom(),zv,""),e=(t=this)._api,n=t._model,nt(t._componentsViews,function(t){t.dispose(n,e)}),nt(t._chartsViews,function(t){t.dispose(n,e)}),t._zr.dispose(),t._dom=t._model=t._chartsMap=t._componentsMap=t._chartsViews=t._componentsViews=t._scheduler=t._api=t._zr=t._throttledZrFlush=t._theme=t._coordSysMgr=t._messageCenter=null,delete Ov[t.id])},xv.prototype.resize=function(t){if(!this[W0])if(this._disposed)this.id;else{this._zr.resize(t);var e=this._model;if(this._loadingFX&&this._loadingFX.resize(),e){var e=e.resetOption("media"),n=t&&t.silent;this[H0]&&(null==n&&(n=this[H0].silent),e=!0,this[H0]=null),this[W0]=!0;try{e&&Q0(this),nv.update.call(this,{type:"resize",animation:F({duration:0},t&&t.animation)})}catch(t){throw this[W0]=!1,t}this[W0]=!1,av.call(this,n),sv.call(this,n)}}},xv.prototype.showLoading=function(t,e){this._disposed?this.id:(O(t)&&(e=t,t=""),t=t||"default",this.hideLoading(),Pv[t]&&(t=Pv[t](this._api,e),e=this._zr,this._loadingFX=t,e.add(t)))},xv.prototype.hideLoading=function(){this._disposed?this.id:(this._loadingFX&&this._zr.remove(this._loadingFX),this._loadingFX=null)},xv.prototype.makeActionFromEvent=function(t){var e=F({},t);return e.type=Cv[t.type],e},xv.prototype.dispatchAction=function(t,e){var n;this._disposed?this.id:(O(e)||(e={silent:!!e}),Tv[t.type]&&this._model&&(this[W0]?this._pendingActions.push(t):(n=e.silent,rv.call(this,t,n),(t=e.flush)?this._zr.flush():!1!==t&&w.browser.weChat&&this._throttledZrFlush(),av.call(this,n),sv.call(this,n))))},xv.prototype.updateLabelLayout=function(){F0.trigger("series:layoutlabels",this._model,this._api,{updatedSeries:[]})},xv.prototype.appendData=function(t){var e;this._disposed?this.id:(e=t.seriesIndex,this.getModel().getSeriesByIndex(e).appendData(t),this._scheduler.unfinished=!0,this.getZr().wakeUp())},xv.internalField=(Q0=function(t){var e=t._scheduler;e.restorePipelines(t._model),e.prepareStageTasks(),tv(t,!0),tv(t,!1),e.plan()},tv=function(t,o){for(var r=t._model,a=t._scheduler,s=o?t._componentsViews:t._chartsViews,l=o?t._componentsMap:t._chartsMap,u=t._zr,h=t._api,e=0;es.get("hoverLayerThreshold")&&!w.node&&!w.worker&&s.eachSeries(function(t){t.preventUsingHoverLayer||(t=i._chartsMap[t.__viewId]).__alive&&t.eachRendered(function(t){t.states.emphasis&&(t.states.emphasis.hoverLayer=!0)})}),F0.trigger("series:afterupdate",t,e,n)},fv=function(t){t[Y0]=!0,t.getZr().wakeUp()},yv=function(t){t[Y0]&&(t.getZr().storage.traverse(function(t){bc(t)||bv(t)}),t[Y0]=!1)},dv=function(n){return u(t,e=Sg),t.prototype.getCoordinateSystems=function(){return n._coordSysMgr.getCoordinateSystems()},t.prototype.getComponentByElement=function(t){for(;t;){var e=t.__ecComponentInfo;if(null!=e)return n._model.getComponent(e.mainType,e.index);t=t.parent}},t.prototype.enterEmphasis=function(t,e){cu(t,e),fv(n)},t.prototype.leaveEmphasis=function(t,e){pu(t,e),fv(n)},t.prototype.enterBlur=function(t){du(t),fv(n)},t.prototype.leaveBlur=function(t){gu(t),fv(n)},t.prototype.enterSelect=function(t){fu(t),fv(n)},t.prototype.leaveSelect=function(t){yu(t),fv(n)},t.prototype.getModel=function(){return n.getModel()},t.prototype.getViewOfComponentModel=function(t){return n.getViewOfComponentModel(t)},t.prototype.getViewOfSeriesModel=function(t){return n.getViewOfSeriesModel(t)},new t(n);function t(){return null!==e&&e.apply(this,arguments)||this}var e},void(gv=function(i){function o(t,e){for(var n=0;ne[1]&&(e[1]=t[1])},F1.prototype.unionExtentFromData=function(t,e){this.unionExtent(t.getApproximateExtent(e))},F1.prototype.getExtent=function(){return this._extent.slice()},F1.prototype.setExtent=function(t,e){var n=this._extent;isNaN(t)||(n[0]=t),isNaN(e)||(n[1]=e)},F1.prototype.isInExtentRange=function(t){return this._extent[0]<=t&&this._extent[1]>=t},F1.prototype.isBlank=function(){return this._isBlank},F1.prototype.setBlank=function(t){this._isBlank=t};var B1=F1;function F1(t){this._setting=t||{},this._extent=[1/0,-1/0]}Da(B1);var G1=0,W1=(H1.createByAxisModel=function(t){var t=t.option,e=t.data,e=e&&V(e,Y1);return new H1({categories:e,needCollect:!e,deduplication:!1!==t.dedplication})},H1.prototype.getOrdinal=function(t){return this._getOrCreateMap().get(t)},H1.prototype.parseAndCollect=function(t){var e,n,i=this._needCollect;return H(t)||i?(i&&!this._deduplication?(n=this.categories.length,this.categories[n]=t):null==(n=(e=this._getOrCreateMap()).get(t))&&(i?(n=this.categories.length,this.categories[n]=t,e.set(t,n)):n=NaN),n):t},H1.prototype._getOrCreateMap=function(){return this._map||(this._map=R(this.categories))},H1);function H1(t){this.categories=t.categories||[],this._needCollect=t.needCollect,this._deduplication=t.deduplication,this.uid=++G1}function Y1(t){return O(t)&&null!=t.value?t.value:t+""}function X1(t){return"interval"===t.type||"log"===t.type}function U1(t,e,n,i){var o={},r=t[1]-t[0],r=o.interval=Gr(r/e,!0),e=(null!=n&&ri[1]&&(i[0]=i[1]),o}function Z1(t){var e=Math.pow(10,Fr(t)),t=t/e;return t?2===t?t=3:3===t?t=5:t*=2:t=1,Dr(t*e)}function j1(t){return kr(t)+2}function q1(t,e,n){t[e]=Math.max(Math.min(t[e],n[1]),n[0])}function K1(t,e){return t>=e[0]&&t<=e[1]}function $1(t,e){return e[1]===e[0]?.5:(t-e[0])/(e[1]-e[0])}function J1(t,e){return t*(e[1]-e[0])+e[0]}u(ex,Q1=B1),ex.prototype.parse=function(t){return null==t?NaN:H(t)?this._ordinalMeta.getOrdinal(t):Math.round(t)},ex.prototype.contain=function(t){return K1(t=this.parse(t),this._extent)&&null!=this._ordinalMeta.categories[t]},ex.prototype.normalize=function(t){return $1(t=this._getTickNumber(this.parse(t)),this._extent)},ex.prototype.scale=function(t){return t=Math.round(J1(t,this._extent)),this.getRawOrdinalNumber(t)},ex.prototype.getTicks=function(){for(var t=[],e=this._extent,n=e[0];n<=e[1];)t.push({value:n}),n++;return t},ex.prototype.getMinorTicks=function(t){},ex.prototype.setSortInfo=function(t){if(null==t)this._ordinalNumbersByTick=this._ticksByOrdinalNumber=null;else{for(var e=t.ordinalNumbers,n=this._ordinalNumbersByTick=[],i=this._ticksByOrdinalNumber=[],o=0,r=this._ordinalMeta.categories.length,a=Math.min(r,e.length);o=t},ex.prototype.getOrdinalMeta=function(){return this._ordinalMeta},ex.prototype.calcNiceTicks=function(){},ex.prototype.calcNiceExtent=function(){},ex.type="ordinal";var Q1,tx=ex;function ex(t){var t=Q1.call(this,t)||this,e=(t.type="ordinal",t.getSetting("ordinalMeta"));return B(e=e||new W1({}))&&(e=new W1({categories:V(e,function(t){return O(t)?t.value:t})})),t._ordinalMeta=e,t._extent=t.getSetting("extent")||[0,e.categories.length-1],t}B1.registerClass(tx);var nx,ix=Dr,ox=(u(rx,nx=B1),rx.prototype.parse=function(t){return t},rx.prototype.contain=function(t){return K1(t,this._extent)},rx.prototype.normalize=function(t){return $1(t,this._extent)},rx.prototype.scale=function(t){return J1(t,this._extent)},rx.prototype.setExtent=function(t,e){var n=this._extent;isNaN(t)||(n[0]=parseFloat(t)),isNaN(e)||(n[1]=parseFloat(e))},rx.prototype.unionExtent=function(t){var e=this._extent;t[0]e[1]&&(e[1]=t[1]),this.setExtent(e[0],e[1])},rx.prototype.getInterval=function(){return this._interval},rx.prototype.setInterval=function(t){this._interval=t,this._niceExtent=this._extent.slice(),this._intervalPrecision=j1(t)},rx.prototype.getTicks=function(t){var e=this._interval,n=this._extent,i=this._niceExtent,o=this._intervalPrecision,r=[];if(e){n[0]s&&r.push(t?{value:ix(s+e,o)}:{value:n[1]})}return r},rx.prototype.getMinorTicks=function(t){for(var e=this.getTicks(!0),n=[],i=this.getExtent(),o=1;oi[0]&&h=M[0]&&d<=M[1]&&a++)}u=(M[1]-M[0])/w;if(1.5*u=M[0]&&t.value<=M[1]&&!t.notAdd})}),function(t){return 0n&&(this._approxInterval=n),Sx.length),t=Math.min(function(t,e,n,i){for(;n>>1;t[o][1]>1^-(1&s),l=(l=t.charCodeAt(a+1)-64)>>1^-(1&l);i.push([(o=s+=o)/n,(r=l+=r)/n])}return i}function v_(t,r){var e,n,o;return V(pt((t=(e=t).UTF8Encoding?(null==(o=(n=e).UTF8Scale)&&(o=1024),nt(n.features,function(t){var e=t.geometry,n=e.encodeOffsets,i=e.coordinates;if(n)switch(e.type){case"LineString":e.coordinates=m_(i,n,o);break;case"Polygon":case"MultiLineString":y_(i,n,o);break;case"MultiPolygon":nt(i,function(t,e){return y_(t,n[e],o)})}}),n.UTF8Encoding=!1,n):e).features,function(t){return t.geometry&&t.properties&&0l[1],h(n[0].coord,l[0])&&(t?n[0].coord=l[0]:n.shift()),t&&h(l[0],n[0].coord)&&n.unshift({coord:l[0]}),h(l[1],i.coord)&&(t?i.coord=l[1]:n.pop()),t)&&h(i.coord,l[1])&&n.push({coord:l[1]}),u},k_.prototype.getMinorTicksCoords=function(){var t;return"ordinal"===this.scale.type?[]:(t=this.model.getModel("minorTick").get("splitNumber"),V(this.scale.getMinorTicks(t=0=u}}for(var r,a=this.__startIndex;ao[0]){for(l=0;lt);l++);s=i[o[l]]}o.splice(l+1,0,t),(i[t]=e).virtual||(s?(n=s.dom).nextSibling?a.insertBefore(e.dom,n.nextSibling):a.appendChild(e.dom):a.firstChild?a.insertBefore(e.dom,a.firstChild):a.appendChild(e.dom)),e.painter||(e.painter=this)}},xb.prototype.eachLayer=function(t,e){for(var n=this._zlevelList,i=0;ie&&(e=t[n]);return isFinite(e)?e:NaN},min:function(t){for(var e=1/0,n=0;n=o.r0?"endArc":"startArc":o.endAngle>=o.startAngle?"endAngle":"startAngle":a?0<=o.height?"bottom":"top":0<=o.width?"right":"left"),h=rp(i),l=(op(t,h,{labelFetcher:r,labelDataIndex:n,defaultText:Hb(r.getData(),n),inheritColor:l.fill,defaultOpacity:l.opacity,defaultOutsidePosition:u}),t.getTextContent()),u=(s&&l&&(s=i.get(["label","position"]),t.textConfig.inside="middle"===s||null,function(t,e,n,i){if(Y(i))t.setTextConfig({rotation:i});else if(B(e))t.setTextConfig({rotation:0});else{var o,i=t.shape,r=i.clockwise?i.startAngle:i.endAngle,a=i.clockwise?i.endAngle:i.startAngle,s=(r+a)/2,i=n(e);switch(i){case"startArc":case"insideStartArc":case"middle":case"insideEndArc":case"endArc":o=s;break;case"startAngle":case"insideStartAngle":o=r;break;case"endAngle":case"insideEndAngle":o=a;break;default:return t.setTextConfig({rotation:0})}n=1.5*Math.PI-o;"middle"===i&&n>Math.PI/2&&n<1.5*Math.PI&&(n-=Math.PI),t.setTextConfig({rotation:n})}}(t,"outside"===s?u:s,sw(a),i.get(["label","rotate"]))),gp(l,h,r.getRawValue(n),function(t){return Yb(e,t)}),i.getModel(["emphasis"]));Mu(t,u.get("focus"),u.get("blurScope"),u.get("disabled")),Du(t,i),null!=(s=o).startAngle&&null!=s.endAngle&&s.startAngle===s.endAngle&&(t.style.fill="none",t.style.stroke="none",nt(t.states,function(t){t.style&&(t.style.fill=t.style.stroke="none")}))}var uw,hw=function(){},cw=(u(pw,uw=q),pw.prototype.getDefaultShape=function(){return new hw},pw.prototype.buildPath=function(t,e){for(var n=e.points,i=this.baseDimIdx,o=1-this.baseDimIdx,r=[],a=[],s=this.barWidth,l=0;le[u-1].coord&&(e.reverse(),h.reverse()),function(t,e){var n,i,o=[],r=t.length;function a(t,e,n){var i=t.coord;return{coord:n,color:Di((n-i)/(e.coord-i),[t.color,e.color])}}for(var s=0;si)return;return 1}(a,e))return o=e.mapDimension(a.dim),r={},nt(a.getViewLabels(),function(t){t=a.scale.getRawOrdinalNumber(t.tickValue);r[t]=1}),function(t){return!r.hasOwnProperty(e.get(o,t))}}}function $w(t){for(var e,n,i=t.length/2;0l?_:x,(f=Math.abs(d.label.y-l))>=g.maxY&&(m=d.label.x-s-d.len2*h,y=u+d.len,m=Math.abs(m)t.unconstrainedWidth)?null:s,i.setStyle("width",l)),u=i.getBoundingRect(),o.width=u.width,e=(i.style.margin||0)+2.1,o.height=u.height+e,o.y-=(o.height-a)/2)}function fS(t){return"center"===t.position}function yS(t){var S,M,I=t.getData(),T=[],C=!1,D=(t.get("minShowLabelAngle")||0)*pS,e=I.getLayout("viewRect"),A=I.getLayout("r"),k=e.width,L=e.x,n=e.y,e=e.height;function P(t){t.ignore=!0}if(I.each(function(t){var e,n,i,o,r,a,s,l,u,h,c=I.getItemGraphicEl(t),p=c.shape,d=c.getTextContent(),g=c.getTextGuideLine(),t=I.getItemModel(t),f=t.getModel("label"),y=f.get("position")||t.get(["emphasis","label","position"]),m=f.get("distanceToLabelLine"),v=f.get("alignTo"),x=j(f.get("edgeDistance"),k),_=f.get("bleedMargin"),t=t.getModel("labelLine"),b=j(t.get("length"),k),w=j(t.get("length2"),k);Math.abs(p.endAngle-p.startAngle)=e.r0},wS.type="pie";var _S,bS=wS;function wS(){var t=null!==_S&&_S.apply(this,arguments)||this;return t.ignoreLabelLineUpdate=!0,t}function SS(t,e,n){e=B(e)?{coordDimensions:e}:F({encodeDefine:t.getEncode()},e);var i=t.getSource(),e=L1(i,e).dimensions,e=new k1(e,t);return e.initData(i,n),e}IS.prototype.getAllNames=function(){var t=this._getRawData();return t.mapArray(t.getName)},IS.prototype.containName=function(t){return 0<=this._getRawData().indexOfName(t)},IS.prototype.indexOfName=function(t){return this._getDataWithEncodedVisual().indexOfName(t)},IS.prototype.getItemVisual=function(t,e){return this._getDataWithEncodedVisual().getItemVisual(t,e)};var MS=IS;function IS(t,e){this._getDataWithEncodedVisual=t,this._getRawData=e}var TS,CS=i(),DS=(u(AS,TS=Wy),AS.prototype.init=function(t){TS.prototype.init.apply(this,arguments),this.legendVisualProvider=new MS(T(this.getData,this),T(this.getRawData,this)),this._defaultLabelLine(t)},AS.prototype.mergeOption=function(){TS.prototype.mergeOption.apply(this,arguments)},AS.prototype.getInitialData=function(){return SS(this,{coordDimensions:["value"],encodeDefaulter:P(ig,this)})},AS.prototype.getDataParams=function(t){var e,n=this.getData(),i=CS(n),o=i.seats,i=(o||(e=[],n.each(n.mapDimension("value"),function(t){e.push(t)}),o=i.seats=Or(e,n.hostModel.get("percentPrecision"))),TS.prototype.getDataParams.call(this,t));return i.percent=o[t]||0,i.$vars.push("percent"),i},AS.prototype._defaultLabelLine=function(t){Qr(t,"labelLine",["show"]);var e=t.labelLine,n=t.emphasis.labelLine;e.show=e.show&&t.label.show,n.show=n.show&&t.emphasis.label.show},AS.type="series.pie",AS.defaultOption={z:2,legendHoverLink:!0,colorBy:"data",center:["50%","50%"],radius:[0,"75%"],clockwise:!0,startAngle:90,endAngle:"auto",padAngle:0,minAngle:0,minShowLabelAngle:0,selectedOffset:10,percentPrecision:2,stillShowZeroSum:!0,left:0,top:0,right:0,bottom:0,width:null,height:null,label:{rotate:0,show:!0,overflow:"truncate",position:"outer",alignTo:"none",edgeDistance:"25%",bleedMargin:10,distanceToLabelLine:5},labelLine:{show:!0,length:15,length2:15,smooth:!1,minTurnAngle:90,maxSurfaceAngle:90,lineStyle:{width:1,type:"solid"}},itemStyle:{borderWidth:1,borderJoin:"round"},showEmptyCircle:!0,emptyCircleStyle:{color:"lightgray",opacity:1},labelLayout:{hideOverlap:!0},emphasis:{scale:!0,scaleSize:5},avoidLabelOverlap:!0,animationType:"expansion",animationDuration:1e3,animationTypeUpdate:"transition",animationEasingUpdate:"cubicInOut",animationDurationUpdate:500,animationEasing:"cubicInOut"},AS);function AS(){return null!==TS&&TS.apply(this,arguments)||this}r(function(t){t.registerChartView(bS),t.registerSeriesModel(DS),Um("pie",t.registerAction),t.registerLayout(P(uS,"pie")),t.registerProcessor(cS("pie")),t.registerProcessor({seriesType:"pie",reset:function(t,e){var n=t.getData();n.filterSelf(function(t){var e=n.mapDimension("value"),e=n.get(e,t);return!(Y(e)&&!isNaN(e)&&e<0)})}})});u(PS,kS=Wy),PS.prototype.getInitialData=function(t,e){return V1(null,this,{useEncodeDefaulter:!0})},PS.prototype.getProgressive=function(){var t=this.option.progressive;return null==t?this.option.large?5e3:this.get("progressive"):t},PS.prototype.getProgressiveThreshold=function(){var t=this.option.progressiveThreshold;return null==t?this.option.large?1e4:this.get("progressiveThreshold"):t},PS.prototype.brushSelector=function(t,e,n){return n.point(e.getItemLayout(t))},PS.prototype.getZLevelKey=function(){return this.getData().count()>this.getProgressiveThreshold()?this.id:""},PS.type="series.scatter",PS.dependencies=["grid","polar","geo","singleAxis","calendar"],PS.defaultOption={coordinateSystem:"cartesian2d",z:2,legendHoverLink:!0,symbolSize:10,large:!1,largeThreshold:2e3,itemStyle:{opacity:.8},emphasis:{scale:!0},clip:!0,select:{itemStyle:{borderColor:"#212121"}},universalTransition:{divideShape:"clone"}};var kS,LS=PS;function PS(){var t=null!==kS&&kS.apply(this,arguments)||this;return t.type=PS.type,t.hasSymbolVisual=!0,t}var OS,NS=function(){},RS=(u(ES,OS=q),ES.prototype.getDefaultShape=function(){return new NS},ES.prototype.reset=function(){this.notClear=!1,this._off=0},ES.prototype.buildPath=function(t,e){var n,i=e.points,o=e.size,r=this.symbolProxy,a=r.shape,e=t.getContext?t.getContext():t,s=e&&o[0]<4,l=this.softClipShape;if(s)this._ctx=e;else{for(this._ctx=null,n=this._off;ne[1]&&e.reverse(),e},aM.prototype.pointToData=function(t,e){return this.coordToData(this.toLocalCoord(t["x"===this.dim?0:1]),e)},aM.prototype.setCategorySortInfo=function(t){if("category"!==this.type)return!1;this.model.option.categorySortInfo=t,this.scale.setSortInfo(t)};var oM,rM=aM;function aM(t,e,n,i,o){t=oM.call(this,t,e,n)||this;return t.index=0,t.type=i||"value",t.position=o||"bottom",t}function sM(t,e,n){n=n||{};var t=t.coordinateSystem,i=e.axis,o={},r=i.getAxesOnZeroOf()[0],a=i.position,s=r?"onZero":a,i=i.dim,t=t.getRect(),t=[t.x,t.x+t.width,t.y,t.y+t.height],l={left:0,right:1,top:0,bottom:1,onZero:2},u=e.get("offset")||0,u="x"===i?[t[2]-u,t[3]+u]:[t[0]-u,t[1]+u],h=(r&&(h=r.toGlobalCoord(r.dataToCoord(0)),u[l.onZero]=Math.max(Math.min(h,u[1]),u[0])),o.position=["y"===i?u[l[s]]:t[0],"x"===i?u[l[s]]:t[3]],o.rotation=Math.PI/2*("x"===i?0:1),o.labelDirection=o.tickDirection=o.nameDirection={top:-1,bottom:1,left:-1,right:1}[a],o.labelOffset=r?u[l[a]]-u[l.onZero]:0,e.get(["axisTick","inside"])&&(o.tickDirection=-o.tickDirection),wt(n.labelInside,e.get(["axisLabel","inside"]))&&(o.labelDirection=-o.labelDirection),e.get(["axisLabel","rotate"]));return o.labelRotate="top"===s?-h:h,o.z2=1,o}function lM(t){return"cartesian2d"===t.get("coordinateSystem")}function uM(i){var o={xAxisModel:null,yAxisModel:null};return nt(o,function(t,e){var n=e.replace(/Model$/,""),n=i.getReferringComponents(n,da).models[0];o[e]=n}),o}var hM=Math.log;function cM(t,e,n){var i=ox.prototype,o=i.getTicks.call(n),r=i.getTicks.call(n,!0),a=o.length-1,n=i.getInterval.call(n),e=Wx(t,e),s=e.extent,l=e.fixMin,e=e.fixMax,u=("log"===t.type&&(u=hM(t.base),s=[hM(s[0])/u,hM(s[1])/u]),t.setExtent(s[0],s[1]),t.calcNiceExtent({splitNumber:a,fixMin:l,fixMax:e}),i.getExtent.call(t)),h=(l&&(s[0]=u[0]),e&&(s[1]=u[1]),i.getInterval.call(t)),c=s[0],p=s[1];if(l&&e)h=(p-c)/a;else if(l)for(p=s[0]+h*a;ps[0]&&isFinite(c)&&isFinite(s[0]);)h=Z1(h),c=s[1]-h*a;else{u=(h=ah[1]?-1:1,r=["start"===c?h[0]-r*u:"end"===c?h[1]+r*u:(h[0]+h[1])/2,SM(c)?t.labelOffset+l*u:0],null!=(u=e.get("nameRotate"))&&(u=u*mM/180),SM(c)?a=vM.innerTextLayout(t.rotation,null!=u?u:t.rotation,l):(a=function(t,e,n,i){var o,n=Rr(n-t),t=i[0]>i[1],i="start"===e&&!t||"start"!==e&&t;e=Er(n-mM/2)?(o=i?"bottom":"top","center"):Er(n-1.5*mM)?(o=i?"top":"bottom","center"):(o="middle",n<1.5*mM&&mM/2u[1]&&u.reverse(),(s=null==s||s>u[1]?u[1]:s)l[1]||Du[1])continue;var C=h.dataToPoint([C,D]),I=new L({shape:{x:C[0]-a/2,y:C[1]-s/2,width:a,height:s},style:T})}else{if(isNaN(d.get(S[1],M)))continue;I=new L({z2:1,shape:h.dataToRect([d.get(S[0],M)]).contentShape,style:T})}d.hasItemOption&&(g=(C=(D=d.getItemModel(M)).getModel("emphasis")).getModel("itemStyle").getItemStyle(),f=D.getModel(["blur","itemStyle"]).getItemStyle(),y=D.getModel(["select","itemStyle"]).getItemStyle(),m=D.get(["itemStyle","borderRadius"]),_=C.get("focus"),b=C.get("blurScope"),w=C.get("disabled"),v=rp(D)),I.shape.r=m;var A=t.getRawValue(M),k="-";A&&null!=A[2]&&(k=A[2]+""),op(I,v,{labelFetcher:t,labelDataIndex:M,defaultOpacity:T.opacity,defaultText:k}),I.ensureState("emphasis").style=g,I.ensureState("blur").style=f,I.ensureState("select").style=y,Mu(I,_,b,w),(I.incremental=o)&&(I.states.emphasis.hoverLayer=!0),p.add(I),d.setItemGraphicEl(M,I),this._progressiveEls&&this._progressiveEls.push(I)}},g2.prototype._renderOnGeo=function(i,t,e,n){var o,r,a,s,l,u,h,c=e.targetVisuals.inRange,p=e.targetVisuals.outOfRange,d=t.getData(),g=this._hmLayer||this._hmLayer||new u2,t=(g.blurSize=t.get("blurSize"),g.pointSize=t.get("pointSize"),g.minOpacity=t.get("minOpacity"),g.maxOpacity=t.get("maxOpacity"),i.getViewRect().clone()),f=i.getRoamTransform(),y=(t.applyTransform(f),Math.max(t.x,0)),m=Math.max(t.y,0),f=Math.min(t.width+t.x,n.getWidth()),t=Math.min(t.height+t.y,n.getHeight()),n=f-y,f=t-m,t=[d.mapDimension("lng"),d.mapDimension("lat"),d.mapDimension("value")],d=d.mapArray(t,function(t,e,n){t=i.dataToPoint([t,e]);return t[0]-=y,t[1]-=m,t.push(n),t}),t=e.getExtent(),v="visualMap.continuous"===e.type?(h=e.option.range,v=t[1]-t[0],h=[(h[0]-t[0])/v,(h[1]-t[0])/v],function(t){return t>=h[0]&&t<=h[1]}):(o=t,r=e.getPieceList(),a=e.option.selected,s=o[1]-o[0],l=(r=V(r,function(t){return{interval:[(t.interval[0]-o[0])/s,(t.interval[1]-o[0])/s]}})).length,u=0,function(t){for(var e,n=u;nt.x)||(f-=Math.PI)),d=y?"left":"right",t=(g=(l=s.getModel("label")).get("rotate"))*(Math.PI/180),y=r.getTextContent())&&(r.setTextConfig({position:l.get("position")||d,rotation:null==g?-f:t,origin:"center"}),y.setStyle("verticalAlign","middle")),s.get(["emphasis","focus"])),l="relative"===r?Et(a.getAncestorsIndices(),a.getDescendantIndices()):"ancestor"===r?a.getAncestorsIndices():"descendant"===r?a.getDescendantIndices():null,d=(l&&($(i).focus=l),o),g=a,f=u,t=i,y=c,s=h,r=p,l=e,o=g.getModel(),u=d.get("edgeShape"),c=d.get("layout"),h=d.getOrient(),p=d.get(["lineStyle","curveness"]),e=d.get("edgeForkPosition"),m=o.getModel("lineStyle").getLineStyle(),v=t.__edge;if("curve"===u)g.parentNode&&g.parentNode!==f&&C(v=v||(t.__edge=new Uh({shape:eT(c,h,p,y,y)})),{shape:eT(c,h,p,s,r)},d);else if("polyline"===u&&"orthogonal"===c&&g!==f&&g.children&&0!==g.children.length&&!0===g.isExpand){for(var x=g.children,_=[],b=0;be&&(e=i.height)}this.height=e+1},pT.prototype.getNodeById=function(t){if(this.getId()===t)return this;for(var e=0,n=this.children,i=n.length;er&&(r=t.depth)});var a=t.expandAndCollapse&&0<=t.initialTreeDepth?t.initialTreeDepth:r;return o.root.eachNode("preorder",function(t){var e=t.hostTree.data.getRawDataItem(t.dataIndex);t.isExpand=e&&null!=e.collapsed?!e.collapsed:t.depth<=a}),o.data},wT.prototype.getOrient=function(){var t=this.get("orient");return"horizontal"===t?t="LR":"vertical"===t&&(t="TB"),t},wT.prototype.setZoom=function(t){this.option.zoom=t},wT.prototype.setCenter=function(t){this.option.center=t},wT.prototype.formatTooltip=function(t,e,n){for(var i=this.getData().tree,o=i.root.children[0],r=i.getNodeByDataIndex(t),i=r.getValue(),a=r.name;r&&r!==o;)a=r.parentNode.name+"."+a,r=r.parentNode;return Ty("nameValue",{name:a,value:i,noValue:isNaN(i)||null==i})},wT.prototype.getDataParams=function(t){var e=_T.prototype.getDataParams.apply(this,arguments),t=this.getData().tree.getNodeByDataIndex(t);return e.treeAncestors=xT(t,this),e.collapsed=!t.isExpand,e},wT.type="series.tree",wT.layoutMode="box",wT.defaultOption={z:2,coordinateSystem:"view",left:"12%",top:"12%",right:"12%",bottom:"12%",layout:"orthogonal",edgeShape:"curve",edgeForkPosition:"50%",roam:!1,nodeScaleRatio:.4,center:null,zoom:1,orient:"LR",symbol:"emptyCircle",symbolSize:7,expandAndCollapse:!0,initialTreeDepth:2,lineStyle:{color:"#ccc",width:1.5,curveness:.5},itemStyle:{color:"lightsteelblue",borderWidth:1.5},label:{show:!0},animationEasing:"linear",animationDuration:700,animationDurationUpdate:500};var _T,bT=wT;function wT(){var t=null!==_T&&_T.apply(this,arguments)||this;return t.hasSymbolVisual=!0,t.ignoreStyleOnData=!0,t}function ST(t,e){for(var n,i=[t];n=i.pop();)if(e(n),n.isExpand){var o=n.children;if(o.length)for(var r=o.length-1;0<=r;r--)i.push(o[r])}}function MT(t,A){t.eachSeriesByType("tree",function(t){var e=function(t,e){return Ld(t.getBoxLayoutParams(),{width:e.getWidth(),height:e.getHeight()})}(t,e=A),n=(t.layoutInfo=e,t.get("layout")),i=0,o=0,r=null;r="radial"===n?(i=2*Math.PI,o=Math.min(e.height,e.width)/2,_2(function(t,e){return(t.parentNode===e.parentNode?1:2)/t.depth})):(i=e.width,o=e.height,_2());var a,s,l,u,h,c,p,d,g,f=(e=t.getData().tree.root).children[0];if(f){var y=e;y.hierNode={defaultAncestor:null,ancestor:y,prelim:0,modifier:0,change:0,shift:0,i:0,thread:null};for(var m,v,x=[y];m=x.pop();)if(v=m.children,m.isExpand&&v.length)for(var _=v.length-1;0<=_;_--){var b=v[_];b.hierNode={defaultAncestor:null,ancestor:b,prelim:0,modifier:0,change:0,shift:0,i:_,thread:null},x.push(b)}for(var w,S=v2,M=r,I=[f],T=[];w=I.pop();)if(T.push(w),w.isExpand){var C=w.children;if(C.length)for(var D=0;Ds.getLayout().x&&(s=t),t.depth>l.depth&&(l=t)}),e=a===s?1:r(a,s)/2,u=e-a.getLayout().x,d=p=c=h=0,"radial"===n?(h=i/(s.getLayout().x+e+u),c=o/(l.depth-1||1),ST(f,function(t){p=(t.getLayout().x+u)*h,d=(t.depth-1)*c;var e=b2(p,d);t.setLayout({x:e.x,y:e.y,rawX:p,rawY:d},!0)})):"RL"===(g=t.getOrient())||"LR"===g?(c=o/(s.getLayout().x+e+u),h=i/(l.depth-1||1),ST(f,function(t){d=(t.getLayout().x+u)*c,p="LR"===g?(t.depth-1)*h:i-(t.depth-1)*h,t.setLayout({x:p,y:d},!0)})):"TB"!==g&&"BT"!==g||(h=i/(s.getLayout().x+e+u),c=o/(l.depth-1||1),ST(f,function(t){p=(t.getLayout().x+u)*h,d="TB"===g?(t.depth-1)*c:o-(t.depth-1)*c,t.setLayout({x:p,y:d},!0)}))}})}function IT(t){t.eachSeriesByType("tree",function(t){var n=t.getData();n.tree.eachNode(function(t){var e=t.getModel().getModel("itemStyle").getItemStyle();F(n.ensureUniqueItemVisual(t.dataIndex,"style"),e)})})}function TT(t,e){return t.pointToProjected?t.pointToProjected(e):t.pointToData(e)}function CT(t,e,n,i){var o,r=t.getZoom(),a=t.getCenter(),s=e.zoom,a=t.projectedToPoint?t.projectedToPoint(a):t.dataToPoint(a);return null!=e.dx&&null!=e.dy&&(a[0]-=e.dx,a[1]-=e.dy,t.setCenter(TT(t,a),i)),null!=s&&(n&&(o=n.min||0,n=n.max||1/0,s=Math.max(Math.min(r*s,n),o)/r),t.scaleX*=s,t.scaleY*=s,n=(e.originX-t.x)*(s-1),o=(e.originY-t.y)*(s-1),t.x-=n,t.y-=o,t.updateTransform(),t.setCenter(TT(t,a),i),t.setZoom(s*r)),{center:t.getCenter(),zoom:t.getZoom()}}r(function(t){t.registerChartView(j2),t.registerSeriesModel(bT),t.registerLayout(MT),t.registerVisual(IT),(t=t).registerAction({type:"treeExpandAndCollapse",event:"treeExpandAndCollapse",update:"update"},function(n,t){t.eachComponent({mainType:"series",subType:"tree",query:n},function(t){var e=n.dataIndex,t=t.getData().tree.getNodeByDataIndex(e);t.isExpand=!t.isExpand})}),t.registerAction({type:"treeRoam",event:"treeRoam",update:"none"},function(n,t,i){t.eachComponent({mainType:"series",subType:"tree",query:n},function(t){var e=CT(t.coordinateSystem,n,void 0,i);t.setCenter&&t.setCenter(e.center),t.setZoom&&t.setZoom(e.zoom)})})});var DT=["treemapZoomToNode","treemapRender","treemapMove"];function AT(t){for(var e=0;e=i.length||t===i[t.depth])&&(e=SC(r,u,t,e,p,o),n(t,e,i,o))})):(c=vC(u),e.fill=c)}}(e,{},t.getViewRoot().getAncestors(),t)}};function mC(n,i,t){var o=F({},i),r=t.designatedVisualItemStyle;return nt(["color","colorAlpha","colorSaturation"],function(t){r[t]=i[t];var e=n.get(t);(r[t]=null)!=e&&(o[t]=e)}),o}function vC(t){var e,n=_C(t,"color");if(n)return e=_C(t,"colorAlpha"),(t=_C(t,"colorSaturation"))&&(n=Ai(n,null,null,t)),e?ki(n,e):n}function xC(t,e){return null!=e?Ai(e,null,null,t):null}function _C(t,e){t=t[e];if(null!=t&&"none"!==t)return t}function bC(t,e,n,i,o,r){if(r&&r.length){var a,r=wC(e,"color")||null!=o.color&&"none"!==o.color&&(wC(e,"colorAlpha")||wC(e,"colorSaturation"));if(r)return o=e.get("visualMin"),a=e.get("visualMax"),n=n.dataExtent.slice(),null!=o&&on[1]&&(n[1]=a),o=e.get("colorMappingBy"),"color"!==(a={type:r.name,dataExtent:n,visual:r.range}).type||"index"!==o&&"id"!==o?a.mappingMethod="linear":(a.mappingMethod="category",a.loop=!0),e=new eC(a),fC(e).drColorMappingBy=o,e}}function wC(t,e){t=t.get(e);return B(t)&&t.length?{name:e,range:t}:null}function SC(t,e,n,i,o,r){var a,s,e=F({},e);return o&&(i="index"===(s="color"===(a=o.type)&&fC(o).drColorMappingBy)?i:"id"===s?r.mapIdToIndex(n.getId()):n.getValue(t.get("visualDimension")),e[a]=o.mapValueToVisual(i)),e}var MC=Math.max,IC=Math.min,TC=wt,CC=nt,DC=["itemStyle","borderWidth"],AC=["itemStyle","gapWidth"],kC=["upperLabel","show"],LC=["upperLabel","height"],PC={seriesType:"treemap",reset:function(t,e,n,i){var o,r=n.getWidth(),a=n.getHeight(),s=t.option,n=Ld(t.getBoxLayoutParams(),{width:n.getWidth(),height:n.getHeight()}),l=s.size||[],u=j(TC(n.width,l[0]),r),l=j(TC(n.height,l[1]),a),h=i&&i.type,c=yT(i,["treemapZoomToNode","treemapRootToNode"],t),i="treemapRender"===h||"treemapMove"===h?i.rootRect:null,p=t.getViewRoot(),d=mT(p),u=("treemapMove"!==h&&(h="treemapZoomToNode"===h?function(t,e,n,i,o){var r,a=(e||{}).node,s=[i,o];if(!a||a===n)return s;var e=i*o,l=e*t.option.zoomToNodeRatio;for(;r=a.parentNode;){for(var u=0,h=r.children,c=0,p=h.length;ca[1]&&(a[1]=t)})):a=[NaN,NaN];return{sum:i,dataExtent:a}}(e,s,l);if(0===u.sum)return t.viewChildren=[];if(u.sum=function(t,e,n,i,o){if(i){for(var r=t.get("visibleMin"),a=o.length,s=a,l=a-1;0<=l;l--){var u=o["asc"===i?a-l-1:l].getValue();u/n*en[l[a]])&&(h=n[l[a]]);for(var c=0,p=t.length;c=e.r0},UC.type="sunburst";var YC,XC=UC;function UC(){var t=null!==YC&&YC.apply(this,arguments)||this;return t.type=UC.type,t}u(qC,ZC=Wy),qC.prototype.getInitialData=function(t,e){var n={name:t.name,children:t.data},i=(!function e(t){var n=0;nt(t.children,function(t){e(t);t=t.value;B(t)&&(t=t[0]),n+=t});var i=t.value;B(i)&&(i=i[0]);null!=i&&!isNaN(i)||(i=n);i<0&&(i=0);B(t.value)?t.value[0]=i:t.value=i}(n),this._levelModels=V(t.levels||[],function(t){return new kp(t,this,e)},this)),o=dT.createTree(n,this,function(t){t.wrapMethod("getItemModel",function(t,e){e=o.getNodeByDataIndex(e),e=i[e.depth];return e&&(t.parentModel=e),t})});return o.data},qC.prototype.optionUpdated=function(){this.resetViewRoot()},qC.prototype.getDataParams=function(t){var e=ZC.prototype.getDataParams.apply(this,arguments),t=this.getData().tree.getNodeByDataIndex(t);return e.treePathInfo=xT(t,this),e},qC.prototype.getLevelModel=function(t){return this._levelModels&&this._levelModels[t.depth]},qC.prototype.getViewRoot=function(){return this._viewRoot},qC.prototype.resetViewRoot=function(t){t?this._viewRoot=t:t=this._viewRoot;var e=this.getRawData().tree.root;t&&(t===e||e.contains(t))||(this._viewRoot=e)},qC.prototype.enableAriaDecal=function(){kT(this)},qC.type="series.sunburst",qC.defaultOption={z:2,center:["50%","50%"],radius:[0,"75%"],clockwise:!0,startAngle:90,minAngle:0,stillShowZeroSum:!0,nodeClick:"rootToNode",renderLabelForZeroData:!1,label:{rotate:"radial",show:!0,opacity:1,align:"center",position:"inside",distance:5,silent:!0},itemStyle:{borderWidth:1,borderColor:"white",borderType:"solid",shadowBlur:0,shadowColor:"rgba(0, 0, 0, 0.2)",shadowOffsetX:0,shadowOffsetY:0,opacity:1},emphasis:{focus:"descendant"},blur:{itemStyle:{opacity:.2},label:{opacity:.1}},animationType:"expansion",animationDuration:1e3,animationDurationUpdate:500,data:[],sort:"desc"};var ZC,jC=qC;function qC(){var t=null!==ZC&&ZC.apply(this,arguments)||this;return t.type=qC.type,t.ignoreStyleOnData=!0,t}var KC,$C=Math.PI/180;function JC(t,e,r){e.eachSeriesByType(t,function(h){var t=h.get("center"),e=h.get("radius"),n=(B(e)||(e=[0,e]),B(t)||(t=[t,t]),r.getWidth()),i=r.getHeight(),c=Math.min(n,i),p=j(t[0],n),d=j(t[1],i),g=j(e[0],c/2),n=j(e[1],c/2),t=-h.get("startAngle")*$C,f=h.get("minAngle")*$C,y=h.getData().tree.root,i=h.getViewRoot(),m=i.depth,e=h.get("sort"),o=(null!=e&&!function e(t,n){var i=t.children||[];t.children=QC(i,n);i.length&&nt(t.children,function(t){e(t,n)})}(i,e),0),v=(nt(i.children,function(t){isNaN(t.getValue())||o++}),i.getValue()),x=Math.PI/(v||o)*2,_=0e);a++);a=Math.min(a-1,o-2)}var r=(e-i[a])/(i[a+1]-i[a]),s=n[a],n=n[a+1],r=(t.x=s[0]*(1-r)+r*n[0],t.y=s[1]*(1-r)+r*n[1],t.__t<1?n[0]-s[0]:s[0]-n[0]),s=t.__t<1?n[1]-s[1]:s[1]-n[1];t.rotation=-Math.atan2(s,r)-Math.PI/2,this._lastFrame=a,this._lastFramePercent=e,t.ignore=!1}};var qA,KA=$A;function $A(){var t=null!==qA&&qA.apply(this,arguments)||this;return t._lastFrame=0,t._lastFramePercent=0,t}var JA,QA=function(){this.polyline=!1,this.curveness=0,this.segs=[]},tk=(u(ek,JA=q),ek.prototype.reset=function(){this.notClear=!1,this._off=0},ek.prototype.getDefaultStyle=function(){return{stroke:"#000",fill:null}},ek.prototype.getDefaultShape=function(){return new QA},ek.prototype.buildPath=function(t,e){var n,i=e.segs,o=e.curveness;if(e.polyline)for(n=this._off;n ")}))},dk.prototype.preventIncremental=function(){return!!this.get(["effect","show"])},dk.prototype.getProgressive=function(){var t=this.option.progressive;return null==t?this.option.large?1e4:this.get("progressive"):t},dk.prototype.getProgressiveThreshold=function(){var t=this.option.progressiveThreshold;return null==t?this.option.large?2e4:this.get("progressiveThreshold"):t},dk.prototype.getZLevelKey=function(){var t=this.getModel("effect"),e=t.get("trailLength");return this.getData().count()>this.getProgressiveThreshold()?this.id:t.get("show")&&0 "+p)),u++)}var d,i=n.get("coordinateSystem"),i=("cartesian2d"===i||"polar"===i?d=V1(t,n):(G(i=(i=Tg.get(i))&&i.dimensions||[],"value")<0&&i.concat(["value"]),i=L1(t,{coordDimensions:i,encodeDefine:n.getEncode()}).dimensions,(d=new k1(i,n)).initData(t)),new k1(["value"],n));return i.initData(l,s),o&&o(d,i),iT({mainData:d,struct:r,structAttr:"graph",datas:{node:d,edge:i},datasAttr:{node:"data",edge:"edgeData"}}),r.update(),r}ut(oL,lL("hostGraph","data")),ut(aL,lL("hostGraph","edgeData"));u(pL,hL=Wy),pL.prototype.init=function(t){hL.prototype.init.apply(this,arguments);var e=this;function n(){return e._categoriesData}this.legendVisualProvider=new MS(n,n),this.fillDataTextStyle(t.edges||t.links),this._updateCategoriesData()},pL.prototype.mergeOption=function(t){hL.prototype.mergeOption.apply(this,arguments),this.fillDataTextStyle(t.edges||t.links),this._updateCategoriesData()},pL.prototype.mergeDefaultAndTheme=function(t){hL.prototype.mergeDefaultAndTheme.apply(this,arguments),Qr(t,"edgeLabel",["show"])},pL.prototype.getInitialData=function(t,e){var n,i=t.edges||t.links||[],t=t.data||t.nodes||[],r=this;if(t&&i)return bk(n=this)&&(n.__curvenessList=[],n.__edgeMap={},wk(n)),nt((n=uL(t,i,this,!0,function(t,e){t.wrapMethod("getItemModel",function(t){var e=r._categoriesModels[t.getShallow("category")];return e&&(e.parentModel=t.parentModel,t.parentModel=e),t});var n=kp.prototype.getModel;function i(t,e){t=n.call(this,t,e);return t.resolveParentPath=o,t}function o(t){var e;return!t||"label"!==t[0]&&"label"!==t[1]?t:(e=t.slice(),"label"===t[0]?e[0]="edgeLabel":"label"===t[1]&&(e[1]="edgeLabel"),e)}e.wrapMethod("getItemModel",function(t){return t.resolveParentPath=o,t.getModel=i,t})})).edges,function(t){var e,n,i;e=t.node1,n=t.node2,i=this,t=t.dataIndex,bk(i)&&(e=Sk(e,n,i),i=(n=i.__edgeMap)[Mk(e)],n[e]&&!i?n[e].isForward=!0:i&&n[e]&&(i.isForward=!0,n[e].isForward=!1),n[e]=n[e]||[],n[e].push(t))},this),n.data},pL.prototype.getGraph=function(){return this.getData().graph},pL.prototype.getEdgeData=function(){return this.getGraph().edgeData},pL.prototype.getCategoriesData=function(){return this._categoriesData},pL.prototype.formatTooltip=function(t,e,n){var i,o,r;return"edge"===n?(o=this.getData(),n=this.getDataParams(t,n),r=o.graph.getEdgeByIndex(t),i=o.getName(r.node1.dataIndex),o=o.getName(r.node2.dataIndex),r=[],null!=i&&r.push(i),null!=o&&r.push(o),Ty("nameValue",{name:r.join(" > "),value:n.value,noValue:null==n.value})):Vy({series:this,dataIndex:t,multipleSeries:e})},pL.prototype._updateCategoriesData=function(){var t=V(this.option.categories||[],function(t){return null!=t.value?t:F({value:0},t)}),e=new k1(["value"],this);e.initData(t),this._categoriesData=e,this._categoriesModels=e.mapArray(function(t){return e.getItemModel(t)})},pL.prototype.setZoom=function(t){this.option.zoom=t},pL.prototype.setCenter=function(t){this.option.center=t},pL.prototype.isAnimationEnabled=function(){return hL.prototype.isAnimationEnabled.call(this)&&!("force"===this.get("layout")&&this.get(["force","layoutAnimation"]))},pL.type="series.graph",pL.dependencies=["grid","polar","geo","singleAxis","calendar"],pL.defaultOption={z:2,coordinateSystem:"view",legendHoverLink:!0,layout:null,circular:{rotateLabel:!1},force:{initLayout:null,repulsion:[0,50],gravity:.1,friction:.6,edgeLength:30,layoutAnimation:!0},left:"center",top:"center",symbol:"circle",symbolSize:10,edgeSymbol:["none","none"],edgeSymbolSize:10,edgeLabel:{position:"middle",distance:5},draggable:!1,roam:!1,center:null,zoom:1,nodeScaleRatio:.6,label:{show:!1,formatter:"{b}"},itemStyle:{},lineStyle:{color:"#aaa",width:1,opacity:.5},emphasis:{scale:!0,label:{show:!0}},select:{itemStyle:{borderColor:"#212121"}}};var hL,cL=pL;function pL(){var t=null!==hL&&hL.apply(this,arguments)||this;return t.type=pL.type,t.hasSymbolVisual=!0,t}var dL={type:"graphRoam",event:"graphRoam",update:"none"};r(function(t){t.registerChartView(Qk),t.registerSeriesModel(cL),t.registerProcessor(yk),t.registerVisual(mk),t.registerVisual(xk),t.registerLayout(Lk),t.registerLayout(t.PRIORITY.VISUAL.POST_CHART_LAYOUT,Bk),t.registerLayout(Gk),t.registerCoordinateSystem("graphView",{dimensions:C2.dimensions,create:Wk}),t.registerAction({type:"focusNodeAdjacency",event:"focusNodeAdjacency",update:"series:focusNodeAdjacency"},Bt),t.registerAction({type:"unfocusNodeAdjacency",event:"unfocusNodeAdjacency",update:"series:unfocusNodeAdjacency"},Bt),t.registerAction(dL,function(n,t,i){t.eachComponent({mainType:"series",query:n},function(t){var e=CT(t.coordinateSystem,n,void 0,i);t.setCenter&&t.setCenter(e.center),t.setZoom&&t.setZoom(e.zoom)})})});u(yL,gL=Wy),yL.type="series.boxplot",yL.dependencies=["xAxis","yAxis","grid"],yL.defaultOption={z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,layout:null,boxWidth:[7,50],itemStyle:{color:"#fff",borderWidth:1},emphasis:{scale:!0,itemStyle:{borderWidth:2,shadowBlur:5,shadowOffsetX:1,shadowOffsetY:1,shadowColor:"rgba(0,0,0,0.2)"}},animationDuration:800};var gL,fL=yL;function yL(){var t=null!==gL&&gL.apply(this,arguments)||this;return t.type=yL.type,t.defaultValueDimensions=[{name:"min",defaultTooltip:!0},{name:"Q1",defaultTooltip:!0},{name:"median",defaultTooltip:!0},{name:"Q3",defaultTooltip:!0},{name:"max",defaultTooltip:!0}],t.visualDrawType="stroke",t}ut(fL,Ia,!0);u(xL,mL=nm),xL.prototype.render=function(t,e,n){var i=t.getData(),o=this.group,r=this._data,a=(this._data||o.removeAll(),"horizontal"===t.get("layout")?1:0);i.diff(r).add(function(t){var e;i.hasValue(t)&&(e=ML(i.getItemLayout(t),i,t,a,!0),i.setItemGraphicEl(t,e),o.add(e))}).update(function(t,e){var n,e=r.getItemGraphicEl(e);i.hasValue(t)?(n=i.getItemLayout(t),e?(Ic(e),IL(n,e,i,t)):e=ML(n,i,t,a),o.add(e),i.setItemGraphicEl(t,e)):o.remove(e)}).remove(function(t){t=r.getItemGraphicEl(t);t&&o.remove(t)}).execute(),this._data=i},xL.prototype.remove=function(t){var e=this.group,n=this._data;this._data=null,n&&n.eachItemGraphicEl(function(t){t&&e.remove(t)})},xL.type="boxplot";var mL,vL=xL;function xL(){var t=null!==mL&&mL.apply(this,arguments)||this;return t.type=xL.type,t}var _L,bL=function(){},wL=(u(SL,_L=q),SL.prototype.getDefaultShape=function(){return new bL},SL.prototype.buildPath=function(t,e){var n=e.points,i=0;for(t.moveTo(n[i][0],n[i][1]),i++;i<4;i++)t.lineTo(n[i][0],n[i][1]);for(t.closePath();ir&&(e[1-i]=e[i]+n.sign*r),e}function eP(t,e){t=t[e]-t[1-e];return{span:Math.abs(t),sign:0l*(1-i[0])?(a="jump",e=t-l*(1-i[2])):0<=(e=t-l*i[1])&&(e=t-l*(1-i[1]))<=0&&(e=0),(e*=r.axisExpandWidth/n)?tP(e,s,u,"all"):a="none"):(o=s[1]-s[0],(s=[rP(0,u[1]*t/o-o/2)])[1]=oP(u[1],s[0]+o),s[0]=s[1]-o),{axisExpandWindow:s,behavior:a}):{behavior:"none",axisExpandWindow:s}},cP);function cP(t,e,n){this.type="parallel",this._axesMap=R(),this._axesLayout={},this.dimensions=t.dimensions,this._model=t,this._init(t,e,n)}function pP(t,e){return oP(rP(t,e[0]),e[1])}var dP,gP={create:function(i,o){var r=[];return i.eachComponent("parallel",function(t,e){var n=new hP(t,i,o);n.name="parallel_"+e,n.resize(t,o),(t.coordinateSystem=n).model=t,r.push(n)}),i.eachSeries(function(t){var e;"parallel"===t.get("coordinateSystem")&&(e=t.getReferringComponents("parallel",da).models[0],t.coordinateSystem=e.coordinateSystem)}),r}},fP=(u(yP,dP=g),yP.prototype.getAreaSelectStyle=function(){return Aa([["fill","color"],["lineWidth","borderWidth"],["stroke","borderColor"],["width","width"],["opacity","opacity"]])(this.getModel("areaSelectStyle"))},yP.prototype.setActiveIntervals=function(t){var e=this.activeIntervals=S(t);if(e)for(var n=e.length-1;0<=n;n--)Ar(e[n])},yP.prototype.getActiveState=function(t){var e=this.activeIntervals;if(!e.length)return"normal";if(null!=t&&!isNaN(+t))if(1===e.length){var n=e[0];if(n[0]<=t&&t<=n[1])return"active"}else for(var i=0,o=e.length;it.getWidth()||n<0||n>t.getHeight()}(t,e.offsetX,e.offsetY)){var i=t._zr,o=t._covers,r=VP(t,e,n);if(!t._dragging)for(var a=0;a=t&&(0===e?0:i[e-1][0])Math.PI/2&&(c+=Math.PI):"tangential"===h?c=-I-Math.PI/2:Y(h)&&(c=h*Math.PI/180),0===c?d.add(new K({style:ap(_,{text:a,x:l,y:u,verticalAlign:N<-.8?"top":.8v&&(v=b.depth),_.setLayout({depth:V?b.depth:y},!0),"vertical"===c?_.setLayout({dy:h},!0):_.setLayout({dx:h},!0);for(var w=0;w<_.outEdges.length;w++){var S=_.outEdges[w],M=E.indexOf(S),M=(p[M]=0,S.node2),S=u.indexOf(M);0==--d[S]&&f.indexOf(M)<0&&f.push(M)}}++y,g=f,f=[]}for(m=0;mt[1]&&t.reverse(),{coordSys:{type:"polar",cx:i.cx,cy:i.cy,r:t[1],r0:t[0]},api:{coord:function(t){var e=o.dataToRadius(t[0]),t=r.dataToAngle(t[1]),n=i.coordToPoint([e,t]);return n.push(e,t*Math.PI/180),n},size:T(QN,i)}}},calendar:function(n){var t=n.getRect(),e=n.getRangeInfo();return{coordSys:{type:"calendar",x:t.x,y:t.y,width:t.width,height:t.height,cellWidth:n.getCellWidth(),cellHeight:n.getCellHeight(),rangeInfo:{start:e.start,end:e.end,weeks:e.weeks,dayCount:e.allDay}},api:{coord:function(t,e){return n.dataToPoint(t,e)}}}}};function PR(t){return t instanceof q}function OR(t){return t instanceof ts}u(ER,NR=nm),ER.prototype.render=function(n,t,i,o){this._progressiveEls=null;var r=this._data,a=n.getData(),s=this.group,l=GR(n,a,t,i),t=(r||s.removeAll(),a.diff(r).add(function(t){WR(i,null,t,l(t,o),n,s,a)}).remove(function(t){t=r.getItemGraphicEl(t);t&&pR(t,ZN(t).option,n)}).update(function(t,e){e=r.getItemGraphicEl(e);WR(i,e,t,l(t,o),n,s,a)}).execute(),n.get("clip",!0)?zb(n.coordinateSystem,!1,n):null);t?s.setClipPath(t):s.removeClipPath(),this._data=a},ER.prototype.incrementalPrepareRender=function(t,e,n){this.group.removeAll(),this._data=null},ER.prototype.incrementalRender=function(t,e,n,i,o){var r=e.getData(),a=GR(e,r,n,i),s=this._progressiveEls=[];function l(t){t.isGroup||(t.incremental=!0,t.ensureState("emphasis").hoverLayer=!0)}for(var u=t.start;un||!!e&&(r=CM(t).seriesDataCount,e=o.getExtent(),Math.abs(e[0]-e[1])/r>n)):!0===i)},eE.prototype.makeElOption=function(t,e,n,i,o){},eE.prototype.createPointerEl=function(t,e,n,i){var o=e.pointer;o&&(o=JR(t).pointerEl=new tp[o.type](QR(e.pointer)),t.add(o))},eE.prototype.createLabelEl=function(t,e,n,i){e.label&&(e=JR(t).labelEl=new K(QR(e.label)),t.add(e),iE(e,i))},eE.prototype.updatePointerEl=function(t,e,n){t=JR(t).pointerEl;t&&e.pointer&&(t.setStyle(e.pointer.style),n(t,{shape:e.pointer.shape}))},eE.prototype.updateLabelEl=function(t,e,n,i){t=JR(t).labelEl;t&&(t.setStyle(e.label.style),n(t,{x:e.label.x,y:e.label.y}),iE(t,i))},eE.prototype._renderHandle=function(t){var e,n,i,o,r,a;!this._dragging&&this.updateHandleTransform&&(e=this._axisPointerModel,n=this._api.getZr(),i=this._handle,o=e.getModel("handle"),a=e.get("status"),o.get("show")&&a&&"hide"!==a?(this._handle||(r=!0,i=this._handle=jc(o.get("icon"),{cursor:"move",draggable:!0,onmousemove:function(t){Le(t.event)},onmousedown:tE(this._onHandleDragMove,this,0,0),drift:tE(this._onHandleDragMove,this),ondragend:tE(this._onHandleDragEnd,this)}),n.add(i)),rE(i,e,!1),i.setStyle(o.getItemStyle(null,["color","borderColor","borderWidth","opacity","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY"])),B(a=o.get("size"))||(a=[a,a]),i.scaleX=a[0]/2,i.scaleY=a[1]/2,dm(this,"_doDispatchAxisPointer",o.get("throttle")||0,"fixRate"),this._moveHandleToValue(t,r)):(i&&n.remove(i),this._handle=null))},eE.prototype._moveHandleToValue=function(t,e){nE(this._axisPointerModel,!e&&this._moveAnimation,this._handle,oE(this.getHandleTransform(t,this._axisModel,this._axisPointerModel)))},eE.prototype._onHandleDragMove=function(t,e){var n=this._handle;n&&(this._dragging=!0,t=this.updateHandleTransform(oE(n),[t,e],this._axisModel,this._axisPointerModel),this._payloadInfo=t,n.stopAnimation(),n.attr(oE(t)),JR(n).lastProp=null,this._doDispatchAxisPointer())},eE.prototype._doDispatchAxisPointer=function(){var t,e;this._handle&&(t=this._payloadInfo,e=this._axisModel,this._api.dispatchAction({type:"updateAxisPointer",x:t.cursorPoint[0],y:t.cursorPoint[1],tooltipOption:t.tooltipOption,axesInfo:[{axisDim:e.axis.dim,axisIndex:e.componentIndex}]}))},eE.prototype._onHandleDragEnd=function(){var t;this._dragging=!1,this._handle&&(t=this._axisPointerModel.get("value"),this._moveHandleToValue(t),this._api.dispatchAction({type:"hideTip"}))},eE.prototype.clear=function(t){this._lastValue=null,this._lastStatus=null;var t=t.getZr(),e=this._group,n=this._handle;t&&e&&(this._lastGraphicKey=null,e&&t.remove(e),n&&t.remove(n),this._group=null,this._handle=null,this._payloadInfo=null),gm(this,"_doDispatchAxisPointer")},eE.prototype.doClear=function(){},eE.prototype.buildLabel=function(t,e,n){return{x:t[n=n||0],y:t[1-n],width:e[n],height:e[1-n]}},eE);function eE(){this._dragging=!1,this.animationThreshold=15}function nE(t,e,n,i){!function n(i,t){{var o;return O(i)&&O(t)?(o=!0,nt(t,function(t,e){o=o&&n(i[e],t)}),!!o):i===t}}(JR(n).lastProp,i)&&(JR(n).lastProp=i,e?C(n,i,t):(n.stopAnimation(),n.attr(i)))}function iE(t,e){t[e.get(["label","show"])?"show":"hide"]()}function oE(t){return{x:t.x||0,y:t.y||0,rotation:t.rotation||0}}function rE(t,e,n){var i=e.get("z"),o=e.get("zlevel");t&&t.traverse(function(t){"group"!==t.type&&(null!=i&&(t.z=i),null!=o&&(t.zlevel=o),t.silent=n)})}function aE(t){var e,n=t.get("type"),t=t.getModel(n+"Style");return"line"===n?(e=t.getLineStyle()).fill=null:"shadow"===n&&((e=t.getAreaStyle()).stroke=null),e}function sE(t,e,n,i,o){var r=lE(n.get("value"),e.axis,e.ecModel,n.get("seriesDataIndices"),{precision:n.get(["label","precision"]),formatter:n.get(["label","formatter"])}),n=n.getModel("label"),a=vd(n.get("padding")||0),s=n.getFont(),l=$o(r,s),u=o.position,h=l.width+a[1]+a[3],l=l.height+a[0]+a[2],c=o.align,c=("right"===c&&(u[0]-=h),"center"===c&&(u[0]-=h/2),o.verticalAlign),i=("bottom"===c&&(u[1]-=l),"middle"===c&&(u[1]-=l/2),o=u,c=h,h=l,i=(l=i).getWidth(),l=l.getHeight(),o[0]=Math.min(o[0]+c,i)-c,o[1]=Math.min(o[1]+h,l)-h,o[0]=Math.max(o[0],0),o[1]=Math.max(o[1],0),n.get("backgroundColor"));i&&"auto"!==i||(i=e.get(["axisLine","lineStyle","color"])),t.label={x:u[0],y:u[1],style:ap(n,{text:r,font:s,fill:n.getTextColor(),padding:a,backgroundColor:i}),z2:10}}function lE(t,e,n,i,o){t=e.scale.parse(t);var r,a=e.scale.getLabel({value:t},{precision:o.precision}),o=o.formatter;return o&&(r={value:Ux(e,{value:t}),axisDimension:e.dim,axisIndex:e.index,seriesData:[]},nt(i,function(t){var e=n.getSeriesByIndex(t.seriesIndex),t=t.dataIndexInside,e=e&&e.getDataParams(t);e&&r.seriesData.push(e)}),H(o)?a=o.replace("{value}",a):D(o)&&(a=o(r))),a}function uE(t,e,n){var i=ze();return We(i,i,n.rotation),Ge(i,i,n.position),Wc([t.dataToCoord(e),(n.labelOffset||0)+(n.labelDirection||1)*(n.labelMargin||0)],i)}function hE(t,e,n,i,o,r){var a=vM.innerTextLayout(n.rotation,0,n.labelDirection);n.labelMargin=o.get(["label","margin"]),sE(e,i,o,r,{position:uE(i.axis,t,n),align:a.textAlign,verticalAlign:a.textVerticalAlign})}function cE(t,e,n){return{x1:t[n=n||0],y1:t[1-n],x2:e[n],y2:e[1-n]}}function pE(t,e,n){return{x:t[n=n||0],y:t[1-n],width:e[n],height:e[1-n]}}function dE(t,e,n,i,o,r){return{cx:t,cy:e,r0:n,r:i,startAngle:o,endAngle:r,clockwise:!0}}u(yE,gE=n0),yE.prototype.makeElOption=function(t,e,n,i,o){var r,a=n.axis,s=("angle"===a.dim&&(this.animationThreshold=Math.PI/18),a.polar),l=s.getOtherAxis(a).getExtent(),u=a.dataToCoord(e),h=i.get("type"),a=(h&&"none"!==h&&(r=aE(i),(h=vE[h](a,s,u,l)).style=r,t.graphicKey=h.type,t.pointer=h),i.get(["label","margin"]));sE(t,n,i,o,function(t,e,n,i){var o,r,a=e.axis,t=a.dataToCoord(t),s=(l=(l=n.getAngleAxis().getExtent()[0])/180*Math.PI,n.getRadiusAxis().getExtent());{var l;s="radius"===a.dim?(a=ze(),We(a,a,l),Ge(a,a,[n.cx,n.cy]),o=Wc([t,-i],a),a=e.getModel("axisLabel").get("rotate")||0,e=vM.innerTextLayout(l,a*Math.PI/180,-1),r=e.textAlign,e.textVerticalAlign):(l=s[1],o=n.coordToPoint([l+i,t]),a=n.cx,e=n.cy,r=Math.abs(o[0]-a)/l<.3?"center":o[0]>a?"left":"right",Math.abs(o[1]-e)/l<.3?"middle":o[1]>e?"top":"bottom")}return{position:o,align:r,verticalAlign:s}}(e,n,s,a))};var gE,fE=yE;function yE(){return null!==gE&&gE.apply(this,arguments)||this}var mE,vE={line:function(t,e,n,i){return"angle"===t.dim?{type:"Line",shape:cE(e.coordToPoint([i[0],n]),e.coordToPoint([i[1],n]))}:{type:"Circle",shape:{cx:e.cx,cy:e.cy,r:n}}},shadow:function(t,e,n,i){var o=Math.max(1,t.getBandWidth()),r=Math.PI/180;return"angle"===t.dim?{type:"Sector",shape:dE(e.cx,e.cy,i[0],i[1],(-n-o/2)*r,(o/2-n)*r)}:{type:"Sector",shape:dE(e.cx,e.cy,n-o/2,n+o/2,0,2*Math.PI)}}},xE=(u(_E,mE=n0),_E.prototype.makeElOption=function(t,e,n,i,o){var r,a=n.axis,s=a.grid,l=i.get("type"),u=bE(s,a).getOtherAxis(a).getGlobalExtent(),h=a.toGlobalCoord(a.dataToCoord(e,!0)),a=(l&&"none"!==l&&(r=aE(i),(l=wE[l](a,h,u)).style=r,t.graphicKey=l.type,t.pointer=l),sM(s.model,n));hE(e,t,a,n,i,o)},_E.prototype.getHandleTransform=function(t,e,n){var i=sM(e.axis.grid.model,e,{labelInside:!1}),n=(i.labelMargin=n.get(["handle","margin"]),uE(e.axis,t,i));return{x:n[0],y:n[1],rotation:i.rotation+(i.labelDirection<0?Math.PI:0)}},_E.prototype.updateHandleTransform=function(t,e,n,i){var n=n.axis,o=n.grid,r=n.getGlobalExtent(!0),o=bE(o,n).getOtherAxis(n).getGlobalExtent(),n="x"===n.dim?0:1,a=[t.x,t.y],e=(a[n]+=e[n],a[n]=Math.min(r[1],a[n]),a[n]=Math.max(r[0],a[n]),(o[1]+o[0])/2),r=[e,e];r[n]=a[n];return{x:a[0],y:a[1],rotation:t.rotation,cursorPoint:r,tooltipOption:[{verticalAlign:"middle"},{align:"center"}][n]}},_E);function _E(){return null!==mE&&mE.apply(this,arguments)||this}function bE(t,e){var n={};return n[e.dim+"AxisIndex"]=e.index,t.getCartesian(n)}var wE={line:function(t,e,n){return{type:"Line",subPixelOptimize:!0,shape:cE([e,n[0]],[e,n[1]],SE(t))}},shadow:function(t,e,n){var i=Math.max(1,t.getBandWidth()),o=n[1]-n[0];return{type:"Rect",shape:pE([e-i/2,n[0]],[i,o],SE(t))}}};function SE(t){return"x"===t.dim?0:1}u(TE,ME=g),TE.type="axisPointer",TE.defaultOption={show:"auto",z:50,type:"line",snap:!1,triggerTooltip:!0,triggerEmphasis:!0,value:null,status:null,link:[],animation:null,animationDurationUpdate:200,lineStyle:{color:"#B9BEC9",width:1,type:"dashed"},shadowStyle:{color:"rgba(210,219,238,0.2)"},label:{show:!0,formatter:null,precision:"auto",margin:3,color:"#fff",padding:[5,7,5,7],backgroundColor:"auto",borderColor:null,borderWidth:0,borderRadius:3},handle:{show:!1,icon:"M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4h1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7v-1.2h6.6z M13.3,22H6.7v-1.2h6.6z M13.3,19.6H6.7v-1.2h6.6z",size:45,margin:50,color:"#333",shadowBlur:3,shadowColor:"#aaa",shadowOffsetX:0,shadowOffsetY:2,throttle:40}};var ME,IE=TE;function TE(){var t=null!==ME&&ME.apply(this,arguments)||this;return t.type=TE.type,t}var CE=i(),DE=nt;function AE(t,e,n){var i,c,p;function o(t,h){c.on(t,function(e){n=p;var n,i,o={dispatchAction:r,pendings:i={showTip:[],hideTip:[]}};function r(t){var e=i[t.type];e?e.push(t):(t.dispatchAction=r,n.dispatchAction(t))}DE(CE(c).records,function(t){t&&h(t,e,o.dispatchAction)});var t,a=o.pendings,s=p,l=a.showTip.length,u=a.hideTip.length;l?t=a.showTip[l-1]:u&&(t=a.hideTip[u-1]),t&&(t.dispatchAction=null,s.dispatchAction(t))})}w.node||(i=e.getZr(),CE(i).records||(CE(i).records={}),p=e,CE(c=i).initialized||(CE(c).initialized=!0,o("click",P(LE,"click")),o("mousemove",P(LE,"mousemove")),o("globalout",kE)),(CE(i).records[t]||(CE(i).records[t]={})).handler=n)}function kE(t,e,n){t.handler("leave",null,n)}function LE(t,e,n,i){e.handler(t,n,i)}function PE(t,e){w.node||(e=e.getZr(),(CE(e).records||{})[t]&&(CE(e).records[t]=null))}u(RE,OE=$y),RE.prototype.render=function(t,e,n){var e=e.getComponent("tooltip"),i=t.get("triggerOn")||e&&e.get("triggerOn")||"mousemove|click";AE("axisPointer",n,function(t,e,n){"none"!==i&&("leave"===t||0<=i.indexOf(t))&&n({type:"updateAxisPointer",currTrigger:t,x:e&&e.offsetX,y:e&&e.offsetY})})},RE.prototype.remove=function(t,e){PE("axisPointer",e)},RE.prototype.dispose=function(t,e){PE("axisPointer",e)},RE.type="axisPointer";var OE,NE=RE;function RE(){var t=null!==OE&&OE.apply(this,arguments)||this;return t.type=RE.type,t}function EE(t,e){var n,i,o,r,a=[],s=t.seriesIndex;return null==s||!(e=e.getSeriesByIndex(s))||null==(s=ua(n=e.getData(),t))||s<0||B(s)?{point:[]}:(i=n.getItemGraphicEl(s),o=e.coordinateSystem,e.getTooltipPosition?a=e.getTooltipPosition(s)||[]:o&&o.dataToPoint?a=t.isStacked?(e=o.getBaseAxis(),t=o.getOtherAxis(e).dim,e=e.dim,t="x"===t||"radius"===t?1:0,e=n.mapDimension(e),(r=[])[t]=n.get(e,s),r[1-t]=n.get(n.getCalculationInfo("stackResultDimension"),s),o.dataToPoint(r)||[]):o.dataToPoint(n.getValues(V(o.dimensions,function(t){return n.mapDimension(t)}),s))||[]:i&&((e=i.getBoundingRect().clone()).applyTransform(i.transform),a=[e.x+e.width/2,e.y+e.height/2]),{point:a,el:i})}var zE=i();function VE(t,e,n){var r,a,i,s,l,o,u,h,c,p,d,g,f,y,m=t.currTrigger,v=[t.x,t.y],x=t,_=t.dispatchAction||T(n.dispatchAction,n),b=e.getComponent("axisPointer").coordSysAxesInfo;if(b)return HE(v)&&(v=EE({seriesIndex:x.seriesIndex,dataIndex:x.dataIndex},e).point),r=HE(v),a=x.axesInfo,i=b.axesInfo,s="leave"===m||HE(v),l={},e={list:[],map:{}},u={showPointer:P(FE,o={}),showTooltip:P(GE,e)},nt(b.coordSysMap,function(t,e){var o=r||t.containPoint(v);nt(b.coordSysAxesInfo[e],function(t,e){var n=t.axis,i=function(t,e){for(var n=0;n<(t||[]).length;n++){var i=t[n];if(e.axis.dim===i.axisDim&&e.axis.model.componentIndex===i.axisIndex)return i}}(a,t);s||!o||a&&!i||null!=(i=null!=(i=i&&i.value)||r?i:n.pointToData(v))&&BE(t,i,u,!1,l)})}),h={},nt(i,function(n,t){var i=n.linkGroup;i&&!o[t]&&nt(i.axesInfo,function(t,e){var e=o[e];t!==n&&e&&(e=e.value,i.mapper&&(e=n.axis.scale.parse(i.mapper(e,WE(t),WE(n)))),h[n.key]=e)})}),nt(h,function(t,e){BE(i[e],t,u,!0,l)}),c=o,x=i,p=l.axesInfo=[],nt(x,function(t,e){var n=t.axisPointerModel.option,e=c[e];e?(t.useHandle||(n.status="show"),n.value=e.value,n.seriesDataIndices=(e.payloadBatch||[]).slice()):t.useHandle||(n.status="hide"),"show"===n.status&&p.push({axisDim:t.axis.dim,axisIndex:t.axis.model.componentIndex,value:n.value})}),m=e,x=t,e=_,HE(t=v)||!m.list.length?e({type:"hideTip"}):(_=((m.list[0].dataByAxis[0]||{}).seriesDataIndices||[])[0]||{},e({type:"showTip",escapeConnect:!0,x:t[0],y:t[1],tooltipOption:x.tooltipOption,position:x.position,dataIndexInside:_.dataIndexInside,dataIndex:_.dataIndex,seriesIndex:_.seriesIndex,dataByCoordSys:m.list})),e=i,x=(t=n).getZr(),_="axisPointerLastHighlights",d=zE(x)[_]||{},g=zE(x)[_]={},nt(e,function(t,e){var n=t.axisPointerModel.option;"show"===n.status&&t.triggerEmphasis&&nt(n.seriesDataIndices,function(t){var e=t.seriesIndex+" | "+t.dataIndex;g[e]=t})}),f=[],y=[],nt(d,function(t,e){g[e]||y.push(t)}),nt(g,function(t,e){d[e]||f.push(t)}),y.length&&t.dispatchAction({type:"downplay",escapeConnect:!0,notBlur:!0,batch:y}),f.length&&t.dispatchAction({type:"highlight",escapeConnect:!0,notBlur:!0,batch:f}),l}function BE(t,e,n,i,o){var r,a,s,l,u,h,c,p,d,g,f=t.axis;!f.scale.isBlank()&&f.containData(e)&&(t.involveSeries?(a=e,s=t.axis,l=s.dim,u=a,h=[],c=Number.MAX_VALUE,p=-1,nt(t.seriesModels,function(e,t){var n,i=e.getData().mapDimensionsAll(l);if(e.getAxisTooltipData)var o=e.getAxisTooltipData(i,a,s),r=o.dataIndices,o=o.nestestValue;else{if(!(r=e.getData().indicesOfNearest(i[0],a,"category"===s.type?.5:null)).length)return;o=e.getData().get(i[0],r[0])}null!=o&&isFinite(o)&&(i=a-o,(n=Math.abs(i))<=c)&&((ne[1]&&e.reverse(),t.getExtent()),i=Math.PI/180;return{cx:this.cx,cy:this.cy,r0:e[0],r:e[1],startAngle:-n[0]*i,endAngle:-n[1]*i,clockwise:t.inverse,contain:function(t,e){var t=t-this.cx,e=e-this.cy,t=t*t+e*e-1e-4,e=this.r,n=this.r0;return t<=e*e&&n*n<=t}}},c5.prototype.convertToPixel=function(t,e,n){return p5(e)===this?this.dataToPoint(n):null},c5.prototype.convertFromPixel=function(t,e,n){return p5(e)===this?this.pointToData(n):null},c5);function c5(t){this.dimensions=u5,this.type="polar",this.cx=0,this.cy=0,this._radiusAxis=new i5,this._angleAxis=new s5,this.axisPointerEnabled=!0,this.name=t||"",this._radiusAxis.polar=this._angleAxis.polar=this}function p5(t){var e=t.seriesModel,t=t.polarModel;return t&&t.coordinateSystem||e&&e.coordinateSystem}function d5(t,e){var n,i=this,o=i.getAngleAxis(),r=i.getRadiusAxis();o.scale.setExtent(1/0,-1/0),r.scale.setExtent(1/0,-1/0),t.eachSeries(function(t){var e;t.coordinateSystem===i&&(nt(Kx(e=t.getData(),"radius"),function(t){r.scale.unionExtentFromData(e,t)}),nt(Kx(e,"angle"),function(t){o.scale.unionExtentFromData(e,t)}))}),Hx(o.scale,o.model),Hx(r.scale,r.model),"category"!==o.type||o.onBand||(t=o.getExtent(),n=360/o.scale.count(),o.inverse?t[1]+=n:t[1]-=n,o.setExtent(t[0],t[1]))}function g5(t,e){var n,i;t.type=e.get("type"),t.scale=Yx(e),t.onBand=e.get("boundaryGap")&&"category"===t.type,t.inverse=e.get("inverse"),"angleAxis"===e.mainType&&(t.inverse=t.inverse!==e.get("clockwise"),n=e.get("startAngle"),i=null!=(i=e.get("endAngle"))?i:n+(t.inverse?-360:360),t.setExtent(n,i)),(e.axis=t).model=e}var f5={dimensions:u5,create:function(t,s){var l=[];return t.eachComponent("polar",function(t,e){var n,e=new h5(e+""),i=(e.update=d5,e.getRadiusAxis()),o=e.getAngleAxis(),r=t.findAxisModel("radiusAxis"),a=t.findAxisModel("angleAxis");g5(i,r),g5(o,a),i=e,r=s,a=(o=t).get("center"),n=r.getWidth(),r=r.getHeight(),i.cx=j(a[0],n),i.cy=j(a[1],r),a=i.getRadiusAxis(),i=Math.min(n,r)/2,null==(n=o.get("radius"))?n=[0,"100%"]:B(n)||(n=[0,n]),r=[j(n[0],i),j(n[1],i)],a.inverse?a.setExtent(r[1],r[0]):a.setExtent(r[0],r[1]),l.push(e),(t.coordinateSystem=e).model=t}),t.eachSeries(function(t){var e;"polar"===t.get("coordinateSystem")&&(e=t.getReferringComponents("polar",da).models[0],t.coordinateSystem=e.coordinateSystem)}),l}},y5=["axisLine","axisLabel","axisTick","minorTick","splitLine","minorSplitLine","splitArea"];function m5(t,e,n){e[1]>e[0]&&(e=e.slice().reverse());var i=t.coordToPoint([e[0],n]),t=t.coordToPoint([e[1],n]);return{x1:i[0],y1:i[1],x2:t[0],y2:t[1]}}function v5(t){return t.getRadiusAxis().inverse?0:1}function x5(t){var e=t[0],n=t[t.length-1];e&&n&&Math.abs(Math.abs(e.coord-n.coord)-360)<1e-4&&t.pop()}u(w5,_5=PM),w5.prototype.render=function(e,t){var n,i,o,r,a,s;this.group.removeAll(),e.get("show")&&(n=e.axis,i=n.polar,o=i.getRadiusAxis().getExtent(),r=n.getTicksCoords(),a=n.getMinorTicksCoords(),x5(s=V(n.getViewLabels(),function(t){t=S(t);var e=n.scale,e="ordinal"===e.type?e.getRawOrdinalNumber(t.tickValue):t.tickValue;return t.coord=n.dataToCoord(e),t})),x5(r),nt(y5,function(t){!e.get([t,"show"])||n.scale.isBlank()&&"axisLine"!==t||M5[t](this.group,e,i,r,a,o,s)},this))},w5.type="angleAxis";var _5,b5=w5;function w5(){var t=null!==_5&&_5.apply(this,arguments)||this;return t.type=w5.type,t.axisPointerClass="PolarAxisPointer",t}var S5,M5={axisLine:function(t,e,n,i,o,r){var e=e.getModel(["axisLine","lineStyle"]),a=n.getAngleAxis(),s=Math.PI/180,l=a.getExtent(),u=v5(n),h=u?0:1,c=360===Math.abs(l[1]-l[0])?"Circle":"Arc",c=0===r[h]?new tp[c]({shape:{cx:n.cx,cy:n.cy,r:r[u],startAngle:-l[0]*s,endAngle:-l[1]*s,clockwise:a.inverse},style:e.getLineStyle(),z2:1,silent:!0}):new Th({shape:{cx:n.cx,cy:n.cy,r:r[u],r0:r[h]},style:e.getLineStyle(),z2:1,silent:!0});c.style.fill=null,t.add(c)},axisTick:function(t,e,n,i,o,r){var a=e.getModel("axisTick"),s=(a.get("inside")?-1:1)*a.get("length"),l=r[v5(n)],r=V(i,function(t){return new Fh({shape:m5(n,[l,l+s],t.coord)})});t.add(zc(r,{style:z(a.getModel("lineStyle").getLineStyle(),{stroke:e.get(["axisLine","lineStyle","color"])})}))},minorTick:function(t,e,n,i,o,r){if(o.length){for(var a=e.getModel("axisTick"),s=e.getModel("minorTick"),l=(a.get("inside")?-1:1)*s.get("length"),u=r[v5(n)],h=[],c=0;ca?"left":"right",o=Math.abs(r[1]-s)/o<.3?"middle":r[1]>s?"top":"bottom",i=(p&&p[i]&&O(s=p[i])&&s.textStyle&&(n=new kp(s.textStyle,d,d.ecModel)),new K({silent:vM.isLabelSilent(u),style:ap(n,{x:r[0],y:r[1],fill:n.getTextColor()||u.get(["axisLine","lineStyle","color"]),text:t.formattedLabel,align:a,verticalAlign:o})}));l.add(i),f&&((s=vM.makeAxisEventDataBase(u)).targetType="axisLabel",s.value=t.rawLabel,$(i).eventData=s)},this)},splitLine:function(t,e,n,i,o,r){for(var a=e.getModel("splitLine").getModel("lineStyle"),s=0,l=(l=a.get("color"))instanceof Array?l:[l],u=[],h=0;h=e.y&&t[1]<=e.y+e.height:n.contain(n.toLocalCoord(t[1]))&&t[0]>=e.y&&t[0]<=e.y+e.height},Q5.prototype.pointToData=function(t){var e=this.getAxis();return[e.coordToData(e.toLocalCoord(t["horizontal"===e.orient?0:1]))]},Q5.prototype.dataToPoint=function(t){var e=this.getAxis(),n=this.getRect(),i=[],o="horizontal"===e.orient?0:1;return t instanceof Array&&(t=t[0]),i[o]=e.toGlobalCoord(e.dataToCoord(+t)),i[1-o]=0==o?n.y+n.height/2:n.x+n.width/2,i},Q5.prototype.convertToPixel=function(t,e,n){return tz(e)===this?this.dataToPoint(n):null},Q5.prototype.convertFromPixel=function(t,e,n){return tz(e)===this?this.pointToData(n):null},Q5);function Q5(t,e,n){this.type="single",this.dimension="single",this.dimensions=$5,this.axisPointerEnabled=!0,this.model=t,this._init(t,e,n)}function tz(t){var e=t.seriesModel,t=t.singleAxisModel;return t&&t.coordinateSystem||e&&e.coordinateSystem}var ez,nz={create:function(i,o){var r=[];return i.eachComponent("singleAxis",function(t,e){var n=new J5(t,i,o);n.name="single_"+e,n.resize(t,o),t.coordinateSystem=n,r.push(n)}),i.eachSeries(function(t){var e;"singleAxis"===t.get("coordinateSystem")&&(e=t.getReferringComponents("singleAxis",da).models[0],t.coordinateSystem=e&&e.coordinateSystem)}),r},dimensions:$5},iz=["x","y"],oz=["width","height"],rz=(u(az,ez=n0),az.prototype.makeElOption=function(t,e,n,i,o){var r,a=n.axis,s=a.coordinateSystem,l=uz(s,1-lz(a)),s=s.dataToPoint(e)[0],u=i.get("type"),a=(u&&"none"!==u&&(r=aE(i),(u=sz[u](a,s,l)).style=r,t.graphicKey=u.type,t.pointer=u),V5(n));hE(e,t,a,n,i,o)},az.prototype.getHandleTransform=function(t,e,n){var i=V5(e,{labelInside:!1}),n=(i.labelMargin=n.get(["handle","margin"]),uE(e.axis,t,i));return{x:n[0],y:n[1],rotation:i.rotation+(i.labelDirection<0?Math.PI:0)}},az.prototype.updateHandleTransform=function(t,e,n,i){var n=n.axis,o=n.coordinateSystem,n=lz(n),r=uz(o,n),a=[t.x,t.y],e=(a[n]+=e[n],a[n]=Math.min(r[1],a[n]),a[n]=Math.max(r[0],a[n]),uz(o,1-n)),r=(e[1]+e[0])/2,o=[r,r];return o[n]=a[n],{x:a[0],y:a[1],rotation:t.rotation,cursorPoint:o,tooltipOption:{verticalAlign:"middle"}}},az);function az(){return null!==ez&&ez.apply(this,arguments)||this}var sz={line:function(t,e,n){return{type:"Line",subPixelOptimize:!0,shape:cE([e,n[0]],[e,n[1]],lz(t))}},shadow:function(t,e,n){var i=t.getBandWidth(),o=n[1]-n[0];return{type:"Rect",shape:pE([e-i/2,n[0]],[i,o],lz(t))}}};function lz(t){return t.isHorizontal()?0:1}function uz(t,e){t=t.getRect();return[t[iz[e]],t[iz[e]]+t[oz[e]]]}u(pz,hz=$y),pz.type="single";var hz,cz=pz;function pz(){var t=null!==hz&&hz.apply(this,arguments)||this;return t.type=pz.type,t}r(function(t){r(YE),PM.registerAxisPointerClass("SingleAxisPointer",rz),t.registerComponentView(cz),t.registerComponentView(W5),t.registerComponentModel(U5),KS(t,"single",U5,U5.defaultOption),t.registerCoordinateSystem("single",nz)});u(fz,dz=g),fz.prototype.init=function(t,e,n){var i=Rd(t);dz.prototype.init.apply(this,arguments),yz(t,i)},fz.prototype.mergeOption=function(t){dz.prototype.mergeOption.apply(this,arguments),yz(this.option,t)},fz.prototype.getCellSize=function(){return this.option.cellSize},fz.type="calendar",fz.defaultOption={z:2,left:80,top:60,cellSize:20,orient:"horizontal",splitLine:{show:!0,lineStyle:{color:"#000",width:1,type:"solid"}},itemStyle:{color:"#fff",borderWidth:1,borderColor:"#ccc"},dayLabel:{show:!0,firstDay:0,position:"start",margin:"50%",color:"#000"},monthLabel:{show:!0,position:"start",margin:5,align:"center",formatter:null,color:"#000"},yearLabel:{show:!0,position:null,margin:30,formatter:null,color:"#ccc",fontFamily:"sans-serif",fontWeight:"bolder",fontSize:20}};var dz,gz=fz;function fz(){var t=null!==dz&&dz.apply(this,arguments)||this;return t.type=fz.type,t}function yz(t,i){var e=t.cellSize,o=B(e)?e:t.cellSize=[e,e],e=(1===o.length&&(o[1]=o[0]),V([0,1],function(t){var e,n;return(null!=(e=i)[Dd[n=t][0]]||null!=e[Dd[n][1]]&&null!=e[Dd[n][2]])&&(o[t]="auto"),null!=o[t]&&"auto"!==o[t]}));Nd(t,i,{type:"box",ignoreSize:e})}u(xz,mz=$y),xz.prototype.render=function(t,e,n){var i=this.group,o=(i.removeAll(),t.coordinateSystem),r=o.getRangeInfo(),o=o.getOrient(),e=e.getLocaleModel();this._renderDayRect(t,r,i),this._renderLines(t,r,o,i),this._renderYearText(t,r,o,i),this._renderMonthText(t,e,o,i),this._renderWeekText(t,e,r,o,i)},xz.prototype._renderDayRect=function(t,e,n){for(var i=t.coordinateSystem,o=t.getModel("itemStyle").getItemStyle(),r=i.getCellWidth(),a=i.getCellHeight(),s=e.start.time;s<=e.end.time;s=i.getNextNDay(s,1).time){var l=i.dataToRect([s],!1).tl,l=new L({shape:{x:l[0],y:l[1],width:r,height:a},cursor:"default",style:o});n.add(l)}},xz.prototype._renderLines=function(e,t,n,i){for(var o=this,r=e.coordinateSystem,a=e.getModel(["splitLine","lineStyle"]).getLineStyle(),s=e.get(["splitLine","show"]),l=a.lineWidth,u=(this._tlpoints=[],this._blpoints=[],this._firstDayOfMonth=[],this._firstDayPoints=[],t.start),h=0;u.time<=t.end.time;h++){p(u.formatedDate);var c=(u=0===h?r.getDateInfo(t.start.y+"-"+t.start.m):u).date;c.setMonth(c.getMonth()+1),u=r.getDateInfo(c)}function p(t){o._firstDayOfMonth.push(r.getDateInfo(t)),o._firstDayPoints.push(r.dataToRect([t],!1).tl);t=o._getLinePointsOfOneWeek(e,t,n);o._tlpoints.push(t[0]),o._blpoints.push(t[t.length-1]),s&&o._drawSplitline(t,a,i)}p(r.getNextNDay(t.end.time,1).formatedDate),s&&this._drawSplitline(o._getEdgesPoints(o._tlpoints,l,n),a,i),s&&this._drawSplitline(o._getEdgesPoints(o._blpoints,l,n),a,i)},xz.prototype._getEdgesPoints=function(t,e,n){t=[t[0].slice(),t[t.length-1].slice()],n="horizontal"===n?0:1;return t[0][n]=t[0][n]-e/2,t[1][n]=t[1][n]+e/2,t},xz.prototype._drawSplitline=function(t,e,n){t=new Rh({z2:20,shape:{points:t},style:e});n.add(t)},xz.prototype._getLinePointsOfOneWeek=function(t,e,n){for(var i=t.coordinateSystem,o=i.getDateInfo(e),r=[],a=0;a<7;a++){var s=i.getNextNDay(o.time,a),l=i.dataToRect([s.time],!1);r[2*s.day]=l.tl,r[2*s.day+1]=l["horizontal"===n?"bl":"tr"]}return r},xz.prototype._formatterLabel=function(t,e){var n,i;return H(t)&&t?(n=t,nt(e,function(t,e){n=n.replace("{"+e+"}",i?we(t):t)}),n):D(t)?t(e):e.nameMap},xz.prototype._yearTextPositionControl=function(t,e,n,i,o){var r=e[0],e=e[1],a=["center","bottom"],o=("bottom"===i?(e+=o,a=["center","top"]):"left"===i?r-=o:"right"===i?(r+=o,a=["center","top"]):e-=o,0);return{rotation:o="left"!==i&&"right"!==i?o:Math.PI/2,x:r,y:e,style:{align:a[0],verticalAlign:a[1]}}},xz.prototype._renderYearText=function(t,e,n,i){var o,r,a,s,l,u,t=t.getModel("yearLabel");t.get("show")&&(o=t.get("margin"),r=(r=t.get("position"))||("horizontal"!==n?"top":"left"),a=((u=[this._tlpoints[this._tlpoints.length-1],this._blpoints[0]])[0][0]+u[1][0])/2,l=(u[0][1]+u[1][1])/2,a={top:[a,u[s="horizontal"===n?0:1][1]],bottom:[a,u[1-s][1]],left:[u[1-s][0],l],right:[u[s][0],l]},u=e.start.y,+e.end.y>+e.start.y&&(u=u+"-"+e.end.y),s=t.get("formatter"),l={start:e.start.y,end:e.end.y,nameMap:u},e=this._formatterLabel(s,l),(u=new K({z2:30,style:ap(t,{text:e})})).attr(this._yearTextPositionControl(u,a[r],n,r,o)),i.add(u))},xz.prototype._monthTextPositionControl=function(t,e,n,i,o){var r="left",a="top",s=t[0],t=t[1];return"horizontal"===n?(t+=o,e&&(r="center"),"start"===i&&(a="bottom")):(s+=o,e&&(a="middle"),"start"===i&&(r="right")),{x:s,y:t,align:r,verticalAlign:a}},xz.prototype._renderMonthText=function(t,e,n,i){var o=t.getModel("monthLabel");if(o.get("show"))for(var r=o.get("nameMap"),a=o.get("margin"),s=o.get("position"),t=o.get("align"),l=[this._tlpoints,this._blpoints],u=(r&&!H(r)||(r=(e=r?Wp(r)||e:e).get(["time","monthAbbr"])||[]),"start"===s?0:1),h="horizontal"===n?0:1,a="start"===s?-a:a,c="center"===t,p=0;p=n.start.time&&t.timei.end.time&&n.reverse(),n):o},bz.prototype._getRangeInfo=function(t){var e,n,i=[this.getDateInfo(t[0]),this.getDateInfo(t[1])],o=(i[0].time>i[1].time&&(e=!0,i.reverse()),Math.floor(i[1].time/864e5)-Math.floor(i[0].time/864e5)+1),r=new Date(i[0].time),t=r.getDate(),a=i[1].date.getDate();if(r.setDate(t+o-1),r.getDate()!==a)for(var s=0n.weeks||0===t&&en.lweek?null:(t=7*(t-1)-n.fweek+e,(e=new Date(n.start.time)).setDate(+n.start.d+t),this.getDateInfo(e))},bz.create=function(t,e){var n=[];return t.eachComponent("calendar",function(t){var e=new bz(t);n.push(e),t.coordinateSystem=e}),t.eachSeries(function(t){"calendar"===t.get("coordinateSystem")&&(t.coordinateSystem=n[t.get("calendarIndex")||0])}),n},bz.dimensions=["time","value"];var _z=bz;function bz(t,e,n){this.type="calendar",this.dimensions=bz.dimensions,this.getDimensionsInfo=bz.getDimensionsInfo,this._model=t}function wz(t){var e=t.calendarModel,t=t.seriesModel;return e?e.coordinateSystem:t?t.coordinateSystem:null}r(function(t){t.registerComponentModel(gz),t.registerComponentView(vz),t.registerCoordinateSystem("calendar",_z)});u(Iz,Sz=g),Iz.type="title",Iz.defaultOption={z:6,show:!0,text:"",target:"blank",subtext:"",subtarget:"blank",left:0,top:0,backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderWidth:0,padding:5,itemGap:10,textStyle:{fontSize:18,fontWeight:"bold",color:"#464646"},subtextStyle:{fontSize:12,color:"#6E7079"}};var Sz,Mz=Iz;function Iz(){var t=null!==Sz&&Sz.apply(this,arguments)||this;return t.type=Iz.type,t.layoutMode={type:"box",ignoreSize:!0},t}u(Dz,Tz=$y),Dz.prototype.render=function(t,e,n){var i,o,r,a,s,l,u,h,c;this.group.removeAll(),t.get("show")&&(i=this.group,u=t.getModel("textStyle"),o=t.getModel("subtextStyle"),h=t.get("textAlign"),c=N(t.get("textBaseline"),t.get("textVerticalAlign")),s=(u=new K({style:ap(u,{text:t.get("text"),fill:u.getTextColor()},{disableBox:!0}),z2:10})).getBoundingRect(),l=t.get("subtext"),o=new K({style:ap(o,{text:l,fill:o.getTextColor(),y:s.height+t.get("itemGap"),verticalAlign:"top"},{disableBox:!0}),z2:10}),r=t.get("link"),a=t.get("sublink"),s=t.get("triggerEvent",!0),u.silent=!r&&!s,o.silent=!a&&!s,r&&u.on("click",function(){Id(r,"_"+t.get("target"))}),a&&o.on("click",function(){Id(a,"_"+t.get("subtarget"))}),$(u).eventData=$(o).eventData=s?{componentType:"title",componentIndex:t.componentIndex}:null,i.add(u),l&&i.add(o),s=i.getBoundingRect(),(l=t.getBoxLayoutParams()).width=s.width,l.height=s.height,l=Ld(l,{width:n.getWidth(),height:n.getHeight()},t.get("padding")),h||("right"===(h="middle"===(h=t.get("left")||t.get("right"))?"center":h)?l.x+=l.width:"center"===h&&(l.x+=l.width/2)),c||("bottom"===(c="center"===(c=t.get("top")||t.get("bottom"))?"middle":c)?l.y+=l.height:"middle"===c&&(l.y+=l.height/2),c=c||"top"),i.x=l.x,i.y=l.y,i.markRedraw(),u.setStyle(n={align:h,verticalAlign:c}),o.setStyle(n),s=i.getBoundingRect(),u=l.margin,(h=t.getItemStyle(["color","opacity"])).fill=t.get("backgroundColor"),c=new L({shape:{x:s.x-u[3],y:s.y-u[0],width:s.width+u[1]+u[3],height:s.height+u[0]+u[2],r:t.get("borderRadius")},style:h,subPixelOptimize:!0,silent:!0}),i.add(c))},Dz.type="title";var Tz,Cz=Dz;function Dz(){var t=null!==Tz&&Tz.apply(this,arguments)||this;return t.type=Dz.type,t}r(function(t){t.registerComponentModel(Mz),t.registerComponentView(Cz)});u(Lz,Az=g),Lz.prototype.init=function(t,e,n){this.mergeDefaultAndTheme(t,n),t.selected=t.selected||{},this._updateSelector(t)},Lz.prototype.mergeOption=function(t,e){Az.prototype.mergeOption.call(this,t,e),this._updateSelector(t)},Lz.prototype._updateSelector=function(t){var n=t.selector,i=this.ecModel;B(n=!0===n?t.selector=["all","inverse"]:n)&&nt(n,function(t,e){H(t)&&(t={type:t}),n[e]=d(t,(e=i,"all"===(t=t.type)?{type:"all",title:e.getLocaleModel().get(["legend","selector","all"])}:"inverse"===t?{type:"inverse",title:e.getLocaleModel().get(["legend","selector","inverse"])}:void 0))})},Lz.prototype.optionUpdated=function(){this._updateData(this.ecModel);var t=this._data;if(t[0]&&"single"===this.get("selectedMode")){for(var e=!1,n=0;nn[o],g=[-c.x,-c.y],e=(e||(g[i]=l[s]),[0,0]),s=[-p.x,-p.y],f=N(t.get("pageButtonGap",!0),t.get("itemGap",!0)),g=(d&&("end"===t.get("pageButtonPosition",!0)?s[i]+=n[o]-p[o]:e[i]+=p[o]+f),s[1-i]+=c[r]/2-p[r]/2,l.setPosition(g),u.setPosition(e),h.setPosition(s),{x:0,y:0}),c=(g[o]=(d?n:c)[o],g[r]=Math.max(c[r],p[r]),g[a]=Math.min(0,p[a]+s[1-i]),u.__rectSize=n[o],d?((e={x:0,y:0})[o]=Math.max(n[o]-p[o]-f,0),e[r]=g[r],u.setClipPath(new L({shape:e})),u.__rectSize=e[o]):h.eachChild(function(t){t.attr({invisible:!0,silent:!0})}),this._getPageInfo(t));return null!=c.pageIndex&&C(l,{x:c.contentPosition[0],y:c.contentPosition[1]},d?t:null),this._updatePageInfoView(t,c),g},eV.prototype._pageGo=function(t,e,n){t=this._getPageInfo(e)[t];null!=t&&n.dispatchAction({type:"legendScroll",scrollDataIndex:t,legendId:e.id})},eV.prototype._updatePageInfoView=function(n,i){var o=this._controllerGroup,t=(nt(["pagePrev","pageNext"],function(t){var e=null!=i[t+"DataIndex"],t=o.childOfName(t);t&&(t.setStyle("fill",e?n.get("pageIconColor",!0):n.get("pageIconInactiveColor",!0)),t.cursor=e?"pointer":"default")}),o.childOfName("pageText")),e=n.get("pageFormatter"),r=i.pageIndex,r=null!=r?r+1:0,a=i.pageCount;t&&e&&t.setStyle("text",H(e)?e.replace("{current}",null==r?"":r+"").replace("{total}",null==a?"":a+""):e({current:r,total:a}))},eV.prototype._getPageInfo=function(t){var e=t.get("scrollDataIndex",!0),n=this.getContentGroup(),i=this._containerGroup.__rectSize,t=t.getOrient().index,o=Jz[t],r=Qz[t],e=this._findTargetItemIndex(e),a=n.children(),s=a[e],l=a.length,u=l?1:0,h={contentPosition:[n.x,n.y],pageCount:u,pageIndex:u-1,pagePrevDataIndex:null,pageNextDataIndex:null};if(s){n=f(s);h.contentPosition[t]=-n.s;for(var c=e+1,p=n,d=n,g=null;c<=l;++c)(!(g=f(a[c]))&&d.e>p.s+i||g&&!y(g,p.s))&&(p=d.i>p.i?d:g)&&(null==h.pageNextDataIndex&&(h.pageNextDataIndex=p.i),++h.pageCount),d=g;for(c=e-1,p=n,d=n,g=null;-1<=c;--c)(g=f(a[c]))&&y(d,g.s)||!(p.i=e&&t.s<=e+i}},eV.prototype._findTargetItemIndex=function(n){var i,o;return this._showController?(this.getContentGroup().eachChild(function(t,e){t=t.__legendDataIndex;null==o&&null!=t&&(o=e),t===n&&(i=e)}),null!=i?i:o):0},eV.type="legend.scroll",eV);function eV(){var t=null!==Kz&&Kz.apply(this,arguments)||this;return t.type=eV.type,t.newlineDisabled=!0,t._currentIndex=0,t}r(function(t){r(Xz),t.registerComponentModel(Zz),t.registerComponentView(tV),t.registerAction("legendScroll","legendscroll",function(t,e){var n=t.scrollDataIndex;null!=n&&e.eachComponent({mainType:"legend",subType:"scroll",query:t},function(t){t.setScrollDataIndex(n)})})});u(oV,nV=g),oV.type="tooltip",oV.dependencies=["axisPointer"],oV.defaultOption={z:60,show:!0,showContent:!0,trigger:"item",triggerOn:"mousemove|click",alwaysShowContent:!1,displayMode:"single",renderMode:"auto",confine:null,showDelay:0,hideDelay:100,transitionDuration:.4,enterable:!1,backgroundColor:"#fff",shadowBlur:10,shadowColor:"rgba(0, 0, 0, .2)",shadowOffsetX:1,shadowOffsetY:2,borderRadius:4,borderWidth:1,padding:null,extraCssText:"",axisPointer:{type:"line",axis:"auto",animation:"auto",animationDurationUpdate:200,animationEasingUpdate:"exponentialOut",crossStyle:{color:"#999",width:1,type:"dashed",textStyle:{}}},textStyle:{color:"#666",fontSize:14}};var nV,iV=oV;function oV(){var t=null!==nV&&nV.apply(this,arguments)||this;return t.type=oV.type,t}function rV(t){var e=t.get("confine");return null!=e?e:"richText"===t.get("renderMode")}function aV(t){if(w.domSupported)for(var e=document.documentElement.style,n=0,i=t.length;n'):""),H(t))r.innerHTML=t+c;else if(t){r.innerHTML="",B(t)||(t=[t]);for(var p,d=0;d"),r=g.join(e);this._showOrMove(i,function(){this._updateContentNotChangedOnAxis(t,p)?this._updatePosition(i,o,n[0],n[1],this._tooltipContent,p):this._showTooltipContent(i,r,p,Math.random()+"",n[0],n[1],o,null,f)})},IV.prototype._showSeriesItemTooltip=function(t,e,n){var i,o,r,a,s,l=this._ecModel,e=$(e),u=e.seriesIndex,h=l.getSeriesByIndex(u),c=e.dataModel||h,p=e.dataIndex,e=e.dataType,d=c.getData(e),g=this._renderMode,f=t.positionDefault,y=TV([d.getItemModel(p),c,h&&(h.coordinateSystem||{}).model],this._tooltipModel,f?{position:f}:null),h=y.get("trigger");null!=h&&"item"!==h||(i=c.getDataParams(p,e),o=new Ey,i.marker=o.makeTooltipMarker("item",Md(i.color),g),f=Df(c.formatTooltip(p,!1,e)),h=y.get("order"),e=y.get("valueFormatter"),r=f.frag,a=r?Ly(e?F({valueFormatter:e},r):r,o,g,h,l.get("useUTC"),y.get("textStyle")):f.text,s="item_"+c.name+"_"+p,this._showOrMove(y,function(){this._showTooltipContent(y,a,i,s,t.offsetX,t.offsetY,t.position,t.target,o)}),n({type:"showTip",dataIndexInside:p,dataIndex:d.getRawIndex(p),seriesIndex:u,from:this.uid}))},IV.prototype._showComponentItemTooltip=function(e,n,t){var i="html"===this._renderMode,o=$(n),r=o.tooltipConfig.option||{},a=r.encodeHTMLContent,a=(H(r)&&(r={content:r,formatter:r},a=!0),a&&i&&r.content&&((r=S(r)).content=we(r.content)),[r]),i=this._ecModel.getComponent(o.componentMainType,o.componentIndex),o=(i&&a.push(i),a.push({formatter:r.content}),e.positionDefault),s=TV(a,this._tooltipModel,o?{position:o}:null),l=s.get("content"),u=Math.random()+"",h=new Ey;this._showOrMove(s,function(){var t=S(s.get("formatterParams")||{});this._showTooltipContent(s,l,t,u,e.offsetX,e.offsetY,e.position,n,h)}),t({type:"showTip",from:this.uid})},IV.prototype._showTooltipContent=function(n,t,i,e,o,r,a,s,l){var u,h,c,p,d;this._ticket="",n.get("showContent")&&n.get("show")&&((u=this._tooltipContent).setEnterable(n.get("enterable")),h=n.get("formatter"),a=a||n.get("position"),t=t,c=this._getNearestPoint([o,r],i,n.get("trigger"),n.get("borderColor")).color,h&&(t=H(h)?(p=n.ecModel.get("useUTC"),t=h,wd(t=(d=B(i)?i[0]:i)&&d.axisType&&0<=d.axisType.indexOf("time")?td(d.axisValue,t,p):t,i,!0)):D(h)?(d=T(function(t,e){t===this._ticket&&(u.setContent(e,l,n,c,a),this._updatePosition(n,a,o,r,u,i,s))},this),this._ticket=e,h(i,e,d)):h),u.setContent(t,l,n,c,a),u.show(n,c),this._updatePosition(n,a,o,r,u,i,s))},IV.prototype._getNearestPoint=function(t,e,n,i){return"axis"===n||B(e)?{color:i||("html"===this._renderMode?"#fff":"none")}:B(e)?void 0:{color:i||e.color||e.borderColor}},IV.prototype._updatePosition=function(t,e,n,i,o,r,a){var s,l=this._api.getWidth(),u=this._api.getHeight(),h=(e=e||t.get("position"),o.getSize()),c=t.get("align"),p=t.get("verticalAlign"),d=a&&a.getBoundingRect().clone();a&&d.applyTransform(a.transform),B(e=D(e)?e([n,i],r,o.el,d,{viewSize:[l,u],contentSize:h.slice()}):e)?(n=j(e[0],l),i=j(e[1],u)):O(e)?((r=e).width=h[0],r.height=h[1],n=(r=Ld(r,{width:l,height:u})).x,i=r.y,p=c=null):i=(n=(s=H(e)&&a?function(t,e,n,i){var o=n[0],r=n[1],a=Math.ceil(Math.SQRT2*i)+8,s=0,l=0,u=e.width,h=e.height;switch(t){case"inside":s=e.x+u/2-o/2,l=e.y+h/2-r/2;break;case"top":s=e.x+u/2-o/2,l=e.y-r-a;break;case"bottom":s=e.x+u/2-o/2,l=e.y+h+a;break;case"left":s=e.x-o-a,l=e.y+h/2-r/2;break;case"right":s=e.x+u+a,l=e.y+h/2-r/2}return[s,l]}(e,d,h,t.get("borderWidth")):function(t,e,n,i,o,r,a){var n=n.getSize(),s=n[0],n=n[1];null!=r&&(ih[0]?s:o)[0]:r[0]=(a[0]>h[0]?o:s)[0],"y0"===n[1]?r[1]=(a[1]>h[1]?s:o)[1]:r[1]=(a[1]>h[1]?o:s)[1],i.getMarkerPosition(r,n,!0)):(a=[l=t.get(n[0],e),u=t.get(n[1],e)],c.clampData&&c.clampData(a,a),c.dataToPoint(a,!0)),Wb(c,"cartesian2d")&&(o=c.getAxis("x"),s=c.getAxis("y"),l=t.get(n[0],e),u=t.get(n[1],e),yB(l)?h[0]=o.toGlobalCoord(o.getExtent()["x0"===n[0]?0:1]):yB(u)&&(h[1]=s.toGlobalCoord(s.getExtent()["y0"===n[1]?0:1]))),isNaN(d)||(h[0]=d),isNaN(p)||(h[1]=p)):h=[d,p],h}var _B,bB=[["x0","y0"],["x1","y0"],["x1","y1"],["x0","y1"]],wB=(u(SB,_B=xp),SB.prototype.updateTransform=function(t,e,o){e.eachSeries(function(n){var i,t=OV.getMarkerModelFromSeries(n,"markArea");t&&(i=t.getData()).each(function(e){var t=V(bB,function(t){return xB(i,e,t,n,o)});i.setItemLayout(e,t),i.getItemGraphicEl(e).setShape("points",t)})},this)},SB.prototype.renderSeries=function(a,o,t,s){var l=a.coordinateSystem,e=a.id,u=a.getData(),n=this.markerGroupMap,i=n.get(e)||n.set(e,{group:new Z}),h=(this.group.add(i.group),this.markKeep(i),function(t,n,e){var i,o;{var r;i=t?(r=V(t&&t.dimensions,function(t){var e=n.getData();return F(F({},e.getDimensionInfo(e.mapDimension(t))||{}),{name:t,ordinalMeta:null})}),o=V(["x0","y0","x1","y1"],function(t,e){return{name:t,type:r[e%2].type}}),new k1(o,e)):new k1(o=[{name:"value",type:"float"}],e)}e=V(e.get("data"),P(gB,n,t,e));t&&(e=pt(e,P(vB,t)));t=t?function(t,e,n,i){return Gf(t.coord[Math.floor(i/2)][i%2],o[i])}:function(t,e,n,i){return Gf(t.value,o[i])};return i.initData(e,null,t),i.hasItemOption=!0,i}(l,a,o));o.setData(h),h.each(function(e){var t=V(bB,function(t){return xB(h,e,t,a,s)}),n=l.getAxis("x").scale,i=l.getAxis("y").scale,o=n.getExtent(),r=i.getExtent(),n=[n.parse(h.get("x0",e)),n.parse(h.get("x1",e))],i=[i.parse(h.get("y0",e)),i.parse(h.get("y1",e))],o=(Ar(n),Ar(i),!(o[0]>n[1]||o[1]i[1]||r[1]=this._data.count()-1},IB.prototype.setPlayState=function(t){this.option.autoPlay=!!t},IB.prototype.getPlayState=function(){return!!this.option.autoPlay},IB.prototype._initData=function(){var o,t=this.option,e=t.data||[],t=t.axisType,r=this._names=[],e=("category"===t?(o=[],nt(e,function(t,e){var n,i=ra(ea(t),"");O(t)?(n=S(t)).value=e:n=e,o.push(n),r.push(i)})):o=e,{category:"ordinal",time:"time",value:"number"}[t]||"number");(this._data=new k1([{name:"value",type:e}],this)).initData(o,r)},IB.prototype.getData=function(){return this._data},IB.prototype.getCategories=function(){if("category"===this.get("axisType"))return this._names.slice()},IB.type="timeline",IB.defaultOption={z:4,show:!0,axisType:"time",realtime:!0,left:"20%",top:null,right:"20%",bottom:0,width:null,height:40,padding:5,controlPosition:"left",autoPlay:!1,rewind:!1,loop:!0,playInterval:2e3,currentIndex:0,itemStyle:{},label:{color:"#000"},data:[]};var MB,e=IB;function IB(){var t=null!==MB&&MB.apply(this,arguments)||this;return t.type=IB.type,t.layoutMode="box",t}u(DB,TB=e),DB.type="timeline.slider",DB.defaultOption=Np(e.defaultOption,{backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderWidth:0,orient:"horizontal",inverse:!1,tooltip:{trigger:"item"},symbol:"circle",symbolSize:12,lineStyle:{show:!0,width:2,color:"#DAE1F5"},label:{position:"auto",show:!0,interval:"auto",rotate:0,color:"#A4B1D7"},itemStyle:{color:"#A4B1D7",borderWidth:1},checkpointStyle:{symbol:"circle",symbolSize:15,color:"#316bf3",borderColor:"#fff",borderWidth:2,shadowBlur:2,shadowOffsetX:1,shadowOffsetY:1,shadowColor:"rgba(0, 0, 0, 0.3)",animation:!0,animationDuration:300,animationEasing:"quinticInOut"},controlStyle:{show:!0,showPlayBtn:!0,showPrevBtn:!0,showNextBtn:!0,itemSize:24,itemGap:12,position:"left",playIcon:"path://M31.6,53C17.5,53,6,41.5,6,27.4S17.5,1.8,31.6,1.8C45.7,1.8,57.2,13.3,57.2,27.4S45.7,53,31.6,53z M31.6,3.3 C18.4,3.3,7.5,14.1,7.5,27.4c0,13.3,10.8,24.1,24.1,24.1C44.9,51.5,55.7,40.7,55.7,27.4C55.7,14.1,44.9,3.3,31.6,3.3z M24.9,21.3 c0-2.2,1.6-3.1,3.5-2l10.5,6.1c1.899,1.1,1.899,2.9,0,4l-10.5,6.1c-1.9,1.1-3.5,0.2-3.5-2V21.3z",stopIcon:"path://M30.9,53.2C16.8,53.2,5.3,41.7,5.3,27.6S16.8,2,30.9,2C45,2,56.4,13.5,56.4,27.6S45,53.2,30.9,53.2z M30.9,3.5C17.6,3.5,6.8,14.4,6.8,27.6c0,13.3,10.8,24.1,24.101,24.1C44.2,51.7,55,40.9,55,27.6C54.9,14.4,44.1,3.5,30.9,3.5z M36.9,35.8c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H36c0.5,0,0.9,0.4,0.9,1V35.8z M27.8,35.8 c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H27c0.5,0,0.9,0.4,0.9,1L27.8,35.8L27.8,35.8z",nextIcon:"M2,18.5A1.52,1.52,0,0,1,.92,18a1.49,1.49,0,0,1,0-2.12L7.81,9.36,1,3.11A1.5,1.5,0,1,1,3,.89l8,7.34a1.48,1.48,0,0,1,.49,1.09,1.51,1.51,0,0,1-.46,1.1L3,18.08A1.5,1.5,0,0,1,2,18.5Z",prevIcon:"M10,.5A1.52,1.52,0,0,1,11.08,1a1.49,1.49,0,0,1,0,2.12L4.19,9.64,11,15.89a1.5,1.5,0,1,1-2,2.22L1,10.77A1.48,1.48,0,0,1,.5,9.68,1.51,1.51,0,0,1,1,8.58L9,.92A1.5,1.5,0,0,1,10,.5Z",prevBtnSize:18,nextBtnSize:18,color:"#A4B1D7",borderColor:"#A4B1D7",borderWidth:1},emphasis:{label:{show:!0,color:"#6f778d"},itemStyle:{color:"#316BF3"},controlStyle:{color:"#316BF3",borderColor:"#316BF3",borderWidth:2}},progress:{lineStyle:{color:"#316BF3"},itemStyle:{color:"#316BF3"},label:{color:"#6f778d"}},data:[]});var TB,CB=DB;function DB(){var t=null!==TB&&TB.apply(this,arguments)||this;return t.type=DB.type,t}ut(CB,Tf.prototype);u(kB,AB=$y),kB.type="timeline";var AB,$m=kB;function kB(){var t=null!==AB&&AB.apply(this,arguments)||this;return t.type=kB.type,t}u(OB,LB=jp),OB.prototype.getLabelModel=function(){return this.model.getModel("label")},OB.prototype.isHorizontal=function(){return"horizontal"===this.model.get("orient")};var LB,PB=OB;function OB(t,e,n,i){t=LB.call(this,t,e,n)||this;return t.type=i||"value",t}var NB,RB=Math.PI,EB=i(),zB=(u(VB,NB=$m),VB.prototype.init=function(t,e){this.api=e},VB.prototype.render=function(e,t,n){var i,o,r;this.model=e,this.api=n,this.ecModel=t,this.group.removeAll(),e.get("show",!0)&&(i=this._layout(e,n),o=this._createGroup("_mainGroup"),t=this._createGroup("_labelGroup"),r=this._axis=this._createAxis(i,e),e.formatTooltip=function(t){return Ty("nameValue",{noName:!0,value:r.scale.getLabel({value:t})})},nt(["AxisLine","AxisTick","Control","CurrentPointer"],function(t){this["_render"+t](i,o,r,e)},this),this._renderAxisLabel(i,t,r,e),this._position(i,e)),this._doPlayStop(),this._updateTicksStatus()},VB.prototype.remove=function(){this._clearTimer(),this.group.removeAll()},VB.prototype.dispose=function(){this._clearTimer()},VB.prototype._layout=function(t,e){var n,i,o,r=t.get(["label","position"]),a=t.get("orient"),s=(s=e,Ld((l=t).getBoxLayoutParams(),{width:s.getWidth(),height:s.getHeight()},l.get("padding"))),l=null==r||"auto"===r?"horizontal"===a?s.y+s.height/2n[1]?n[1]:t)e[1]&&(e[1]=t[1])})}),[(e=Fx((n=e.getAxisModel()).axis.scale,n,o).calculate()).min,e.max]),this._updateMinMaxSpan(),n=this.calculateDataWindow(t.settledOption),this._valueWindow=n.valueWindow,this._percentWindow=n.percentWindow,this._setAxisModel())},x3.prototype.filterData=function(t,e){var o,n,r,c;t===this._dataZoomModel&&(o=this._dimName,n=this.getTargetSeriesModels(),r=t.get("filterMode"),c=this._valueWindow,"none"!==r)&&y3(n,function(n){var l,u,i=n.getData(),h=i.mapDimensionsAll(o);h.length&&("weakFilter"===r?(l=i.getStore(),u=V(h,function(t){return i.getDimensionIndex(t)},i),i.filterSelf(function(t){for(var e,n,i,o=0;oc[1];if(a&&!s&&!r)return!0;a&&(i=!0),s&&(e=!0),r&&(n=!0)}return i&&e&&n})):y3(h,function(t){var e;"empty"===r?n.setData(i=i.map(t,function(t){return(e=t)>=c[0]&&e<=c[1]?t:NaN;var e})):((e={})[t]=c,i.selectRange(e))}),y3(h,function(t){i.setApproximateExtent(c,t)}))})},x3.prototype._updateMinMaxSpan=function(){var i=this._minMaxSpan={},o=this._dataZoomModel,r=this._dataExtent;y3(["min","max"],function(t){var e=o.get(t+"Span"),n=o.get(t+"ValueSpan");null!=(n=null!=n?this.getAxisModel().axis.scale.parse(n):n)?e=Cr(r[0]+n,r,[0,100],!0):null!=e&&(n=Cr(e,[0,100],r,!0)-r[0]),i[t+"Span"]=e,i[t+"ValueSpan"]=n},this)},x3.prototype._setAxisModel=function(){var t,e=this.getAxisModel(),n=this._percentWindow,i=this._valueWindow;n&&(t=Pr(i,[0,500]),t=Math.min(t,20),e=e.axis.scale.rawExtentInfo,0!==n[0]&&e.setDeterminedMinMax("min",+i[0].toFixed(t)),100!==n[1]&&e.setDeterminedMinMax("max",+i[1].toFixed(t)),e.freeze())},x3);function x3(t,e,n,i){this._dimName=t,this._axisIndex=e,this.ecModel=i,this._dataZoomModel=n}var _3={getTargetSeries:function(r){function t(o){r.eachComponent("dataZoom",function(i){i.eachTargetAxis(function(t,e){var n=r.getComponent(UB(t),e);o(t,e,n,i)})})}t(function(t,e,n,i){n.__dzAxisProxy=null});var o=[],e=(t(function(t,e,n,i){n.__dzAxisProxy||(n.__dzAxisProxy=new v3(t,e,i,r),o.push(n.__dzAxisProxy))}),R());return nt(o,function(t){nt(t.getTargetSeriesModels(),function(t){e.set(t.uid,t)})}),e},overallReset:function(t,i){t.eachComponent("dataZoom",function(n){n.eachTargetAxis(function(t,e){n.getAxisProxy(t,e).reset(n)}),n.eachTargetAxis(function(t,e){n.getAxisProxy(t,e).filterData(n,i)})}),t.eachComponent("dataZoom",function(t){var e,n=t.findRepresentativeAxisProxy();n&&(e=n.getDataPercentWindow(),n=n.getDataValueWindow(),t.setCalculatedRange({start:e[0],end:e[1],startValue:n[0],endValue:n[1]}))})}};var b3=!1;function w3(t){b3||(b3=!0,t.registerProcessor(t.PRIORITY.PROCESSOR.FILTER,_3),t.registerAction("dataZoom",function(e,t){nt(ZB(t,e),function(t){t.setRawRange({start:e.start,end:e.end,startValue:e.startValue,endValue:e.endValue})})}),t.registerSubTypeDefaulter("dataZoom",function(){return"slider"}))}function S3(t){w3(t),t.registerComponentModel(e3),t.registerComponentView(c3),u3(t)}u(T3,M3=Ia),T3.type="dataZoom.slider",T3.layoutMode="box",T3.defaultOption=Np(Ia.defaultOption,{show:!0,right:"ph",top:"ph",width:"ph",height:"ph",left:null,bottom:null,borderColor:"#d2dbee",borderRadius:3,backgroundColor:"rgba(47,69,84,0)",dataBackground:{lineStyle:{color:"#d2dbee",width:.5},areaStyle:{color:"#d2dbee",opacity:.2}},selectedDataBackground:{lineStyle:{color:"#8fb0f7",width:.5},areaStyle:{color:"#8fb0f7",opacity:.2}},fillerColor:"rgba(135,175,274,0.2)",handleIcon:"path://M-9.35,34.56V42m0-40V9.5m-2,0h4a2,2,0,0,1,2,2v21a2,2,0,0,1-2,2h-4a2,2,0,0,1-2-2v-21A2,2,0,0,1-11.35,9.5Z",handleSize:"100%",handleStyle:{color:"#fff",borderColor:"#ACB8D1"},moveHandleSize:7,moveHandleIcon:"path://M-320.9-50L-320.9-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-348-41-339-50-320.9-50z M-212.3-50L-212.3-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-239.4-41-230.4-50-212.3-50z M-103.7-50L-103.7-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-130.9-41-121.8-50-103.7-50z",moveHandleStyle:{color:"#D2DBEE",opacity:.7},showDetail:!0,showDataShadow:"auto",realtime:!0,zoomLock:!1,textStyle:{color:"#6E7079"},brushSelect:!0,brushStyle:{color:"rgba(135,175,274,0.15)"},emphasis:{handleStyle:{borderColor:"#8FB0F7"},moveHandleStyle:{color:"#8FB0F7"}}});var M3,I3=T3;function T3(){var t=null!==M3&&M3.apply(this,arguments)||this;return t.type=T3.type,t}var C3,D3=L,A3="horizontal",k3="vertical",L3=["line","bar","candlestick","scatter"],P3={easing:"cubicOut",duration:100,delay:0},O3=(u(N3,C3=n0),N3.prototype.init=function(t,e){this.api=e,this._onBrush=T(this._onBrush,this),this._onBrushEnd=T(this._onBrushEnd,this)},N3.prototype.render=function(t,e,n,i){C3.prototype.render.apply(this,arguments),dm(this,"_dispatchZoomAction",t.get("throttle"),"fixRate"),this._orient=t.getOrient(),!1===t.get("show")?this.group.removeAll():t.noTarget()?(this._clear(),this.group.removeAll()):(i&&"dataZoom"===i.type&&i.from===this.uid||this._buildView(),this._updateView())},N3.prototype.dispose=function(){this._clear(),C3.prototype.dispose.apply(this,arguments)},N3.prototype._clear=function(){gm(this,"_dispatchZoomAction");var t=this.api.getZr();t.off("mousemove",this._onBrush),t.off("mouseup",this._onBrushEnd)},N3.prototype._buildView=function(){var t=this.group,e=(t.removeAll(),this._brushing=!1,this._displayables.brushRect=null,this._resetLocation(),this._resetInterval(),this._displayables.sliderGroup=new Z);this._renderBackground(),this._renderHandle(),this._renderDataShadow(),t.add(e),this._positionGroup()},N3.prototype._resetLocation=function(){var t=this.dataZoomModel,e=this.api,n=t.get("brushSelect")?7:0,i=this._findCoordRect(),e={width:e.getWidth(),height:e.getHeight()},o=this._orient===A3?{right:e.width-i.x-i.width,top:e.height-30-7-n,width:i.width,height:30}:{right:7,top:i.y,width:30,height:i.height},r=Rd(t.option),n=(nt(["right","top","width","height"],function(t){"ph"===r[t]&&(r[t]=o[t])}),Ld(r,e));this._location={x:n.x,y:n.y},this._size=[n.width,n.height],this._orient===k3&&this._size.reverse()},N3.prototype._positionGroup=function(){var t=this.group,e=this._location,n=this._orient,i=this.dataZoomModel.getFirstTargetAxisModel(),i=i&&i.get("inverse"),o=this._displayables.sliderGroup,r=(this._dataShadowInfo||{}).otherAxisInverse,n=(o.attr(n!==A3||i?n===A3&&i?{scaleY:r?1:-1,scaleX:-1}:n!==k3||i?{scaleY:r?-1:1,scaleX:-1,rotation:Math.PI/2}:{scaleY:r?-1:1,scaleX:1,rotation:Math.PI/2}:{scaleY:r?1:-1,scaleX:1}),t.getBoundingRect([o]));t.x=e.x-n.x,t.y=e.y-n.y,t.markRedraw()},N3.prototype._getViewExtent=function(){return[0,this._size[0]]},N3.prototype._renderBackground=function(){var t=this.dataZoomModel,e=this._size,n=this._displayables.sliderGroup,i=t.get("brushSelect"),t=(n.add(new D3({silent:!0,shape:{x:0,y:0,width:e[0],height:e[1]},style:{fill:t.get("backgroundColor")},z2:-40})),new D3({shape:{x:0,y:0,width:e[0],height:e[1]},style:{fill:"transparent"},z2:0,onclick:T(this._onClickPanel,this)})),e=this.api.getZr();i?(t.on("mousedown",this._onBrushStart,this),t.cursor="crosshair",e.on("mousemove",this._onBrush),e.on("mouseup",this._onBrushEnd)):(e.off("mousemove",this._onBrush),e.off("mouseup",this._onBrushEnd)),n.add(t)},N3.prototype._renderDataShadow=function(){var t=this._dataShadowInfo=this._prepareDataShadowInfo();if(this._displayables.dataShadowSegs=[],t){var e=this._size,n=this._shadowSize||[],i=t.series,o=i.getRawData(),r=i.getShadowDim&&i.getShadowDim(),r=r&&o.getDimensionInfo(r)?i.getShadowDim():t.otherDim;if(null!=r)for(var a,s,l,u,h,c,p,d,g,f,y=this._shadowPolygonPts,m=this._shadowPolylinePts,v=(o===this._shadowData&&r===this._shadowDim&&e[0]===n[0]&&e[1]===n[1]||(i=.3*((a=o.getDataExtent(r))[1]-a[0]),a=[a[0]-i,a[1]+i],s=[0,e[1]],t=[0,e[0]],l=[[e[0],0],[0,0]],u=[],h=t[1]/(o.count()-1),c=0,p=Math.round(o.count()/e[0]),o.each([r],function(t,e){var n;0e[0]||t[1]<0||t[1]>e[1]||(e=((e=this._handleEnds)[0]+e[1])/2,t=this._updateInterval("all",t[0]-e),this._updateView(),t&&this._dispatchZoomAction(!1))},N3.prototype._onBrushStart=function(t){var e=t.offsetX,t=t.offsetY;this._brushStart=new E(e,t),this._brushing=!0,this._brushStartTime=+new Date},N3.prototype._onBrushEnd=function(t){var e,n,i;this._brushing&&(e=this._displayables.brushRect,this._brushing=!1,e)&&(e.attr("ignore",!0),e=e.shape,+new Date-this._brushStartTime<200&&Math.abs(e.width)<5||(n=this._getViewExtent(),this._range=Ar([Cr(e.x,n,i=[0,100],!0),Cr(e.x+e.width,n,i,!0)]),this._handleEnds=[e.x,e.x+e.width],this._updateView(),this._dispatchZoomAction(!1)))},N3.prototype._onBrush=function(t){this._brushing&&(Le(t.event),this._updateBrushRect(t.offsetX,t.offsetY))},N3.prototype._updateBrushRect=function(t,e){var n=this._displayables,i=this.dataZoomModel,o=n.brushRect,i=(o||(o=n.brushRect=new D3({silent:!0,style:i.getModel("brushStyle").getItemStyle()}),n.sliderGroup.add(o)),o.attr("ignore",!1),this._brushStart),n=this._displayables.sliderGroup,t=n.transformCoordToLocal(t,e),e=n.transformCoordToLocal(i.x,i.y),n=this._size;t[0]=Math.max(Math.min(n[0],t[0]),0),o.setShape({x:e[0],y:0,width:t[0]-e[0],height:n[1]})},N3.prototype._dispatchZoomAction=function(t){var e=this._range;this.api.dispatchAction({type:"dataZoom",from:this.uid,dataZoomId:this.dataZoomModel.id,animation:t?P3:null,start:e[0],end:e[1]})},N3.prototype._findCoordRect=function(){var t,e,n=jB(this.dataZoomModel).infoList;return t=(t=!t&&n.length?(n=n[0].model.coordinateSystem).getRect&&n.getRect():t)?t:{x:.2*(n=this.api.getWidth()),y:.2*(e=this.api.getHeight()),width:.6*n,height:.6*e}},N3.type="dataZoom.slider",N3);function N3(){var t=null!==C3&&C3.apply(this,arguments)||this;return t.type=N3.type,t._displayables={},t}function R3(t){return"vertical"===t?"ns-resize":"ew-resize"}function E3(t){t.registerComponentModel(I3),t.registerComponentView(O3),w3(t)}r(function(t){r(S3),r(E3)});var z3=["rect","polygon","keep","clear"];function V3(t,e){var n,i,o,r=Jr(t?t.brush:[]);r.length&&(n=[],nt(r,function(t){t=t.hasOwnProperty("toolbox")?t.toolbox:[];t instanceof Array&&(n=n.concat(t))}),(r=B(r=t&&t.toolbox)?r[0]:r)||(t.toolbox=[r={feature:{}}]),r=(t=r.feature||(r.feature={})).brush||(t.brush={}),(t=r.type||(r.type=[])).push.apply(t,n),o={},nt(i=t,function(t){o[t]=1}),i.length=0,nt(o,function(t,e){i.push(e)}),e)&&!t.length&&t.push.apply(t,z3)}var B3=nt;function F3(t){if(t)for(var e in t)if(t.hasOwnProperty(e))return 1}function G3(e,t,o){var r={};return B3(t,function(n){var i=r[n]=(t.prototype.__hidden=t.prototype,new t);function t(){}B3(e[n],function(t,e){eC.isValidType(e)&&(t={type:e,visual:t},o&&o(t,n),i[e]=new eC(t),"opacity"===e)&&((t=S(t)).type="colorAlpha",i.__hidden.__alphaForOpacity=new eC(t))})}),r}function W3(e,n,t){var i;nt(t,function(t){n.hasOwnProperty(t)&&F3(n[t])&&(i=!0)}),i&&nt(t,function(t){n.hasOwnProperty(t)&&F3(n[t])?e[t]=S(n[t]):delete e[t]})}var H3={lineX:Y3(0),lineY:Y3(1),rect:{point:function(t,e,n){return t&&n.boundingRect.contain(t[0],t[1])},rect:function(t,e,n){return t&&n.boundingRect.intersect(t)}},polygon:{point:function(t,e,n){return t&&n.boundingRect.contain(t[0],t[1])&&i_(n.range,t[0],t[1])},rect:function(t,e,n){var i,o,r,a,s,n=n.range;return!(!t||n.length<=1)&&(i=t.x,o=t.y,r=t.width,a=t.height,s=n[0],!!(i_(n,i,o)||i_(n,i+r,o)||i_(n,i,o+a)||i_(n,i+r,o+a)||U.create(t).contain(s[0],s[1])||qc(i,o,i+r,o,n)||qc(i,o,i,o+a,n)||qc(i+r,o,i+r,o+a,n)||qc(i,o+a,i+r,o+a,n))||void 0)}}};function Y3(i){var o=["x","y"],r=["width","height"];return{point:function(t,e,n){if(t)return n=n.range,X3(t[i],n)},rect:function(t,e,n){if(t)return n=n.range,(t=[t[o[i]],t[o[i]]+t[r[i]]])[1]t[1]&&t.reverse(),t}function K3(t,e){return ca(t,e,{includeMainTypes:U3})}var $3={grid:function(t,i){var o=t.xAxisModels,r=t.yAxisModels,t=t.gridModels,e=R(),a={},s={};(o||r||t)&&(nt(o,function(t){t=t.axis.grid.model;e.set(t.id,t),a[t.id]=!0}),nt(r,function(t){t=t.axis.grid.model;e.set(t.id,t),s[t.id]=!0}),nt(t,function(t){e.set(t.id,t),a[t.id]=!0,s[t.id]=!0}),e.each(function(t){var e=t.coordinateSystem,n=[];nt(e.getCartesians(),function(t,e){(0<=G(o,t.getAxis("x").model)||0<=G(r,t.getAxis("y").model))&&n.push(t)}),i.push({panelId:"grid--"+t.id,gridModel:t,coordSysModel:t,coordSys:n[0],coordSyses:n,getPanelRect:Q3.grid,xAxisDeclared:a[t.id],yAxisDeclared:s[t.id]})}))},geo:function(t,n){nt(t.geoModels,function(t){var e=t.coordinateSystem;n.push({panelId:"geo--"+t.id,geoModel:t,coordSysModel:t,coordSys:e,coordSyses:[e],getPanelRect:Q3.geo})})}},J3=[function(t,e){var n=t.xAxisModel,i=t.yAxisModel,t=t.gridModel;return(t=!(t=!t&&n?n.axis.grid.model:t)&&i?i.axis.grid.model:t)&&t===e.gridModel},function(t,e){t=t.geoModel;return t&&t===e.geoModel}],Q3={grid:function(){return this.coordSys.master.getRect().clone()},geo:function(){var t=this.coordSys,e=t.getBoundingRect().clone();return e.applyTransform(Gc(t)),e}},tF={lineX:P(eF,0),lineY:P(eF,1),rect:function(t,e,n,i){var o=t?e.pointToData([n[0][0],n[1][0]],i):e.dataToPoint([n[0][0],n[1][0]],i),t=t?e.pointToData([n[0][1],n[1][1]],i):e.dataToPoint([n[0][1],n[1][1]],i),e=[q3([o[0],t[0]]),q3([o[1],t[1]])];return{values:e,xyMinMax:e}},polygon:function(e,n,t,i){var o=[[1/0,-1/0],[1/0,-1/0]];return{values:V(t,function(t){t=e?n.pointToData(t,i):n.dataToPoint(t,i);return o[0][0]=Math.min(o[0][0],t[0]),o[1][0]=Math.min(o[1][0],t[1]),o[0][1]=Math.max(o[0][1],t[0]),o[1][1]=Math.max(o[1][1],t[1]),t}),xyMinMax:o}}};function eF(t,e,n,i){var o=n.getAxis(["x","y"][t]),n=q3(V([0,1],function(t){return e?o.coordToData(o.toLocalCoord(i[t]),!0):o.toGlobalCoord(o.dataToCoord(i[t]))})),r=[];return r[t]=n,r[1-t]=[NaN,NaN],{values:n,xyMinMax:r}}var nF={lineX:P(iF,0),lineY:P(iF,1),rect:function(t,e,n){return[[t[0][0]-n[0]*e[0][0],t[0][1]-n[0]*e[0][1]],[t[1][0]-n[1]*e[1][0],t[1][1]-n[1]*e[1][1]]]},polygon:function(t,n,i){return V(t,function(t,e){return[t[0]-i[0]*n[e][0],t[1]-i[1]*n[e][1]]})}};function iF(t,e,n,i){return[e[0]-i[t]*n[0],e[1]-i[t]*n[1]]}function oF(t){return t?[t[0][1]-t[0][0],t[1][1]-t[1][0]]:[NaN,NaN]}var rF=["inBrush","outOfBrush"],aF="__ecBrushSelect",sF="__ecInBrushSelectEvent";function lF(e){e.eachComponent({mainType:"brush"},function(t){(t.brushTargetManager=new Z3(t.option,e)).setInputRanges(t.areas,e)})}function uF(c,t,e){var o,r,n,i,a,s,l=[];c.eachComponent({mainType:"brush"},function(t){e&&"takeGlobalCursor"===e.type&&t.setBrushOption("brush"===e.key?e.brushOption:{brushType:!1})}),lF(c),c.eachComponent({mainType:"brush"},function(u,t){var y={brushId:u.id,brushIndex:t,brushName:u.name,areas:S(u.areas),selected:[]},e=(l.push(y),u.option),n=e.brushLink,i=[],m=[],v=[],x=!1,h=(t||(o=e.throttleType,r=e.throttleDelay),V(u.areas,function(t){var e,n,i,o=pF[t.brushType],o=z({boundingRect:o?o(t):void 0},t);return o.selectors=(n=(e=o).brushType,i={point:function(t){return H3[n].point(t,i,e)},rect:function(t){return H3[n].rect(t,i,e)}}),o})),_=G3(u.option,rF,function(t){t.mappingMethod="fixed"});function b(t){return"all"===n||i[t]}function w(t){return!!t.length}B(n)&&nt(n,function(t){i[t]=1}),c.eachSeries(function(t,e){var n,i,o,r,a,s,l=v[e]=[];"parallel"===t.subType?(a=e,s=(r=t).coordinateSystem,x=x||s.hasAxisBrushed(),b(a)&&s.eachActiveState(r.getData(),function(t,e){"active"===t&&(m[e]=1)})):(a=e,i=l,(n=t).brushSelector&&!function(t,e){t=t.option.seriesIndex;return null!=t&&"all"!==t&&(B(t)?G(t,e)<0:e!==t)}(u,a)&&(nt(h,function(t){u.brushTargetManager.controlSeries(t,n,c)&&i.push(t),x=x||w(i)}),b(a))&&w(i)&&(o=n.getData()).each(function(t){cF(n,i,o,t)&&(m[t]=1)}))}),c.eachSeries(function(e,t){var s,l,u,h,c,p,d,n={seriesId:e.id,seriesIndex:t,seriesName:e.name,dataIndex:[]},i=(y.selected.push(n),v[t]),o=e.getData(),r=b(t)?function(t){return m[t]?(n.dataIndex.push(o.getRawIndex(t)),"inBrush"):"outOfBrush"}:function(t){return cF(e,i,o,t)?(n.dataIndex.push(o.getRawIndex(t)),"inBrush"):"outOfBrush"};function g(t){return Hm(l,p,t)}function f(t,e){Xm(l,p,t,e)}function a(t,e){p=null==c?t:e;e=l.getRawDataItem(p);if(!e||!1!==e.visualMap)for(var e=u.call(h,t),n=s[e],i=d[e],o=0,r=i.length;oo[0][1]&&(o[0][1]=r[0]),r[1]o[1][1]&&(o[1][1]=r[1])}return o&&dF(o)}};function dF(t){return new U(t[0][0],t[1][0],t[0][1]-t[0][0],t[1][1]-t[1][0])}u(yF,gF=$y),yF.prototype.init=function(t,e){this.ecModel=t,this.api=e,this.model,(this._brushController=new kP(e.getZr())).on("brush",T(this._onBrush,this)).mount()},yF.prototype.render=function(t,e,n,i){this.model=t,this._updateController(t,e,n,i)},yF.prototype.updateTransform=function(t,e,n,i){lF(e),this._updateController(t,e,n,i)},yF.prototype.updateVisual=function(t,e,n,i){this.updateTransform(t,e,n,i)},yF.prototype.updateView=function(t,e,n,i){this._updateController(t,e,n,i)},yF.prototype._updateController=function(t,e,n,i){i&&i.$from===t.id||this._brushController.setPanels(t.brushTargetManager.makePanelOpts(n)).enableBrush(t.brushOption).updateCovers(t.areas.slice())},yF.prototype.dispose=function(){this._brushController.dispose()},yF.prototype._onBrush=function(t){var e=this.model.id,n=this.model.brushTargetManager.setOutputRanges(t.areas,this.ecModel);t.isEnd&&!t.removeOnClick||this.api.dispatchAction({type:"brush",brushId:e,areas:S(n),$from:e}),t.isEnd&&this.api.dispatchAction({type:"brushEnd",brushId:e,areas:S(n),$from:e})},yF.type="brush";var gF,fF=yF;function yF(){var t=null!==gF&&gF.apply(this,arguments)||this;return t.type=yF.type,t}u(xF,mF=g),xF.prototype.optionUpdated=function(t,e){var n=this.option,e=(e||W3(n,t,["inBrush","outOfBrush"]),n.inBrush=n.inBrush||{});n.outOfBrush=n.outOfBrush||{color:"#ddd"},e.hasOwnProperty("liftZ")||(e.liftZ=5)},xF.prototype.setAreas=function(t){t&&(this.areas=V(t,function(t){return _F(this.option,t)},this))},xF.prototype.setBrushOption=function(t){this.brushOption=_F(this.option,t),this.brushType=this.brushOption.brushType},xF.type="brush",xF.dependencies=["geo","grid","xAxis","yAxis","parallel","series"],xF.defaultOption={seriesIndex:"all",brushType:"rect",brushMode:"single",transformable:!0,brushStyle:{borderWidth:1,color:"rgba(210,219,238,0.3)",borderColor:"#D2DBEE"},throttleType:"fixRate",throttleDelay:0,removeOnClick:!0,z:1e4};var mF,vF=xF;function xF(){var t=null!==mF&&mF.apply(this,arguments)||this;return t.type=xF.type,t.areas=[],t.brushOption={},t}function _F(t,e){return d({brushType:t.brushType,brushMode:t.brushMode,transformable:t.transformable,brushStyle:new kp(t.brushStyle).getItemStyle(),removeOnClick:t.removeOnClick,z:t.z},e,!0)}function bF(){}var wF={};function SF(t,e){wF[t]=e}function MF(t){return wF[t]}var IF,TF=["rect","polygon","lineX","lineY","keep","clear"],CF=(u(DF,IF=bF),DF.prototype.render=function(e,t,n){var i,o,r;t.eachComponent({mainType:"brush"},function(t){i=t.brushType,o=t.brushOption.brushMode||"single",r=r||!!t.areas.length}),this._brushType=i,this._brushMode=o,nt(e.get("type",!0),function(t){e.setIconStatus(t,("keep"===t?"multiple"===o:"clear"===t?r:t===i)?"emphasis":"normal")})},DF.prototype.updateView=function(t,e,n){this.render(t,e,n)},DF.prototype.getIcons=function(){var t=this.model,e=t.get("icon",!0),n={};return nt(t.get("type",!0),function(t){e[t]&&(n[t]=e[t])}),n},DF.prototype.onclick=function(t,e,n){var i=this._brushType,o=this._brushMode;"clear"===n?(e.dispatchAction({type:"axisAreaSelect",intervals:[]}),e.dispatchAction({type:"brush",command:"clear",areas:[]})):e.dispatchAction({type:"takeGlobalCursor",key:"brush",brushOption:{brushType:"keep"===n?i:i!==n&&n,brushMode:"keep"===n?"multiple"===o?"single":"multiple":o}})},DF.getDefaultOption=function(t){return{show:!0,type:TF.slice(),icon:{rect:"M7.3,34.7 M0.4,10V-0.2h9.8 M89.6,10V-0.2h-9.8 M0.4,60v10.2h9.8 M89.6,60v10.2h-9.8 M12.3,22.4V10.5h13.1 M33.6,10.5h7.8 M49.1,10.5h7.8 M77.5,22.4V10.5h-13 M12.3,31.1v8.2 M77.7,31.1v8.2 M12.3,47.6v11.9h13.1 M33.6,59.5h7.6 M49.1,59.5 h7.7 M77.5,47.6v11.9h-13",polygon:"M55.2,34.9c1.7,0,3.1,1.4,3.1,3.1s-1.4,3.1-3.1,3.1 s-3.1-1.4-3.1-3.1S53.5,34.9,55.2,34.9z M50.4,51c1.7,0,3.1,1.4,3.1,3.1c0,1.7-1.4,3.1-3.1,3.1c-1.7,0-3.1-1.4-3.1-3.1 C47.3,52.4,48.7,51,50.4,51z M55.6,37.1l1.5-7.8 M60.1,13.5l1.6-8.7l-7.8,4 M59,19l-1,5.3 M24,16.1l6.4,4.9l6.4-3.3 M48.5,11.6 l-5.9,3.1 M19.1,12.8L9.7,5.1l1.1,7.7 M13.4,29.8l1,7.3l6.6,1.6 M11.6,18.4l1,6.1 M32.8,41.9 M26.6,40.4 M27.3,40.2l6.1,1.6 M49.9,52.1l-5.6-7.6l-4.9-1.2",lineX:"M15.2,30 M19.7,15.6V1.9H29 M34.8,1.9H40.4 M55.3,15.6V1.9H45.9 M19.7,44.4V58.1H29 M34.8,58.1H40.4 M55.3,44.4 V58.1H45.9 M12.5,20.3l-9.4,9.6l9.6,9.8 M3.1,29.9h16.5 M62.5,20.3l9.4,9.6L62.3,39.7 M71.9,29.9H55.4",lineY:"M38.8,7.7 M52.7,12h13.2v9 M65.9,26.6V32 M52.7,46.3h13.2v-9 M24.9,12H11.8v9 M11.8,26.6V32 M24.9,46.3H11.8v-9 M48.2,5.1l-9.3-9l-9.4,9.2 M38.9-3.9V12 M48.2,53.3l-9.3,9l-9.4-9.2 M38.9,62.3V46.4",keep:"M4,10.5V1h10.3 M20.7,1h6.1 M33,1h6.1 M55.4,10.5V1H45.2 M4,17.3v6.6 M55.6,17.3v6.6 M4,30.5V40h10.3 M20.7,40 h6.1 M33,40h6.1 M55.4,30.5V40H45.2 M21,18.9h62.9v48.6H21V18.9z",clear:"M22,14.7l30.9,31 M52.9,14.7L22,45.7 M4.7,16.8V4.2h13.1 M26,4.2h7.8 M41.6,4.2h7.8 M70.3,16.8V4.2H57.2 M4.7,25.9v8.6 M70.3,25.9v8.6 M4.7,43.2v12.6h13.1 M26,55.8h7.8 M41.6,55.8h7.8 M70.3,43.2v12.6H57.2"},title:t.getLocaleModel().get(["toolbox","brush","title"])}},DF);function DF(){return null!==IF&&IF.apply(this,arguments)||this}r(function(t){t.registerComponentView(fF),t.registerComponentModel(vF),t.registerPreprocessor(V3),t.registerVisual(t.PRIORITY.VISUAL.BRUSH,uF),t.registerAction({type:"brush",event:"brush",update:"updateVisual"},function(e,t){t.eachComponent({mainType:"brush",query:e},function(t){t.setAreas(e.areas)})}),t.registerAction({type:"brushSelect",event:"brushSelected",update:"none"},Bt),t.registerAction({type:"brushEnd",event:"brushEnd",update:"none"},Bt),SF("brush",CF)});var AF,kF=function(t,e,n){t=S((LF[t]||{})[e]);return n&&B(t)?t[t.length-1]:t},LF={color:{active:["#006edd","#e0ffff"],inactive:["rgba(0,0,0,0)"]},colorHue:{active:[0,360],inactive:[0,0]},colorSaturation:{active:[.3,1],inactive:[0,0]},colorLightness:{active:[.9,.5],inactive:[0,0]},colorAlpha:{active:[.3,1],inactive:[0,0]},opacity:{active:[.3,1],inactive:[0,0]},symbol:{active:["circle","roundRect","diamond"],inactive:["none"]},symbolSize:{active:[10,50],inactive:[0,0]}},PF=eC.mapVisual,OF=eC.eachVisual,NF=B,RF=nt,EF=Ar,zF=Cr,xp=(u(VF,AF=g),VF.prototype.init=function(t,e,n){this.mergeDefaultAndTheme(t,n)},VF.prototype.optionUpdated=function(t,e){var n=this.option;e||W3(n,t,this.replacableOptionKeys),this.textStyleModel=this.getModel("textStyle"),this.resetItemSize(),this.completeVisualOption()},VF.prototype.resetVisual=function(t){var e=this.stateList;t=T(t,this),this.controllerVisuals=G3(this.option.controller,e,t),this.targetVisuals=G3(this.option.target,e,t)},VF.prototype.getItemSymbol=function(){return null},VF.prototype.getTargetSeriesIndices=function(){var t=this.option.seriesIndex,n=[];return null==t||"all"===t?this.ecModel.eachSeries(function(t,e){n.push(e)}):n=Jr(t),n},VF.prototype.eachTargetSeries=function(e,n){nt(this.getTargetSeriesIndices(),function(t){t=this.ecModel.getSeriesByIndex(t);t&&e.call(n,t)},this)},VF.prototype.isTargetSeries=function(e){var n=!1;return this.eachTargetSeries(function(t){t===e&&(n=!0)}),n},VF.prototype.formatValueText=function(t,e,n){var i,o=this.option,r=o.precision,a=this.dataBound,o=o.formatter,e=(n=n||["<",">"],B(t)&&(t=t.slice(),i=!0),e?t:i?[s(t[0]),s(t[1])]:s(t));return H(o)?o.replace("{value}",i?e[0]:e).replace("{value2}",i?e[1]:e):D(o)?i?o(t[0],t[1]):o(t):i?t[0]===a[0]?n[0]+" "+e[1]:t[1]===a[1]?n[1]+" "+e[0]:e[0]+" - "+e[1]:e;function s(t){return t===a[0]?"min":t===a[1]?"max":(+t).toFixed(Math.min(r,20))}},VF.prototype.resetExtent=function(){var t=this.option,t=EF([t.min,t.max]);this._dataExtent=t},VF.prototype.getDataDimensionIndex=function(t){var e=this.option.dimension;if(null!=e)return t.getDimensionIndex(e);for(var n=t.dimensions,i=n.length-1;0<=i;i--){var o=n[i],o=t.getDimensionInfo(o);if(!o.isCalculationCoord)return o.storeDimIndex}},VF.prototype.getExtent=function(){return this._dataExtent.slice()},VF.prototype.completeVisualOption=function(){var e=this.ecModel,n=this.option,t={inRange:n.inRange,outOfRange:n.outOfRange},i=n.target||(n.target={}),o=n.controller||(n.controller={}),u=(d(i,t),d(o,t),this.isCategory());function r(t){NF(n.color)&&!t.inRange&&(t.inRange={color:n.color.slice().reverse()}),t.inRange=t.inRange||{color:e.get("gradientColor")}}r.call(this,i),r.call(this,o),function(t,e,n){var e=t[e],i=t[n];e&&!i&&(i=t[n]={},RF(e,function(t,e){var n;eC.isValidType(e)&&null!=(n=kF(e,"inactive",u))&&(i[e]=n,"color"!==e||i.hasOwnProperty("opacity")||i.hasOwnProperty("colorAlpha")||(i.opacity=[0,0]))}))}.call(this,i,"inRange","outOfRange"),function(o){var r=(o.inRange||{}).symbol||(o.outOfRange||{}).symbol,a=(o.inRange||{}).symbolSize||(o.outOfRange||{}).symbolSize,s=this.get("inactiveColor"),l=this.getItemSymbol()||"roundRect";RF(this.stateList,function(t){var e,n=this.itemSize,i=o[t],t=(null==(i=i||(o[t]={color:u?s:[s]})).symbol&&(i.symbol=r&&S(r)||(u?l:[l])),null==i.symbolSize&&(i.symbolSize=a&&S(a)||(u?n[0]:[n[0],n[0]])),i.symbol=PF(i.symbol,function(t){return"none"===t?l:t}),i.symbolSize);null!=t&&(e=-1/0,OF(t,function(t){ee[1]&&e.reverse(),e[0]=Math.max(e[0],t[0]),e[1]=Math.min(e[1],t[1]))},WF.prototype.completeVisualOption=function(){BF.prototype.completeVisualOption.apply(this,arguments),nt(this.stateList,function(t){t=this.option.controller[t].symbolSize;t&&t[0]!==t[1]&&(t[0]=t[1]/3)},this)},WF.prototype.setSelected=function(t){this.option.range=t.slice(),this._resetRange()},WF.prototype.getSelected=function(){var t=this.getExtent(),e=Ar((this.get("range")||[]).slice());return e[0]>t[1]&&(e[0]=t[1]),e[1]>t[1]&&(e[1]=t[1]),e[0]=n[1]||t<=e[1])?"inRange":"outOfRange"},WF.prototype.findTargetDataIndices=function(i){var o=[];return this.eachTargetSeries(function(t){var n=[],e=t.getData();e.each(this.getDataDimensionIndex(e),function(t,e){i[0]<=t&&t<=i[1]&&n.push(e)},this),o.push({seriesId:t.id,dataIndex:n})},this),o},WF.prototype.getVisualMeta=function(n){var t=HF(0,0,this.getExtent()),e=HF(0,0,this.option.range.slice()),i=[];function o(t,e){i.push({value:t,color:n(t,e)})}for(var r=0,a=0,s=e.length,l=t.length;at[1])break;n.push({color:this.getControllerVisual(r,"color",e),offset:o/100})}return n.push({color:this.getControllerVisual(t[1],"color",e),offset:1}),n},e4.prototype._createBarPoints=function(t,e){var n=this.visualMapModel.itemSize;return[[n[0]-e[0],t[0]],[n[0],t[0]],[n[0],t[1]],[n[0]-e[1],t[1]]]},e4.prototype._createBarGroup=function(t){var e=this._orient,n=this.visualMapModel.get("inverse");return new Z("horizontal"!==e||n?"horizontal"===e&&n?{scaleX:"bottom"===t?-1:1,rotation:-Math.PI/2}:"vertical"!==e||n?{scaleX:"left"===t?1:-1}:{scaleX:"left"===t?1:-1,scaleY:-1}:{scaleX:"bottom"===t?1:-1,rotation:Math.PI/2})},e4.prototype._updateHandle=function(i,o){var r,a,s,l,u,h;this._useHandle&&(r=this._shapes,a=this.visualMapModel,s=r.handleThumbs,l=r.handleLabels,u=a.itemSize,h=a.getExtent(),$F([0,1],function(t){var e=s[t],n=(e.setStyle("fill",o.handlesColor[t]),e.y=i[t],KF(i[t],[0,u[1]],h,!0)),n=this.getControllerVisual(n,"symbolSize"),n=(e.scaleX=e.scaleY=n/u[0],e.x=u[0]-n/2,Wc(r.handleLabelPoints[t],Gc(e,this.group)));l[t].setStyle({x:n[0],y:n[1],text:a.formatValueText(this._dataInterval[t]),verticalAlign:"middle",align:"vertical"===this._orient?this._applyTransform("left",r.mainGroup):"center"})},this))},e4.prototype._showIndicator=function(t,e,n,i){var o=this.visualMapModel,r=o.getExtent(),a=o.itemSize,s=[0,a[1]],l=this._shapes,u=l.indicator;if(u){u.attr("invisible",!1);var h=this.getControllerVisual(t,"color",{convertOpacityToAlpha:!0}),c=this.getControllerVisual(t,"symbolSize"),t=KF(t,r,s,!0),r=a[0]-c/2,s={x:u.x,y:u.y},a=(u.y=t,u.x=r,Wc(l.indicatorLabelPoint,Gc(u,this.group))),c=l.indicatorLabel,l=(c.attr("invisible",!1),this._applyTransform("left",l.mainGroup)),p="horizontal"===this._orient,n=(c.setStyle({text:(n||"")+o.formatValueText(e),verticalAlign:p?l:"middle",align:p?"center":l}),{x:r,y:t,style:{fill:h}}),e={style:{x:a[0],y:a[1]}},d=(o.ecModel.isAnimationEnabled()&&!this._firstShowIndicator?(p={duration:100,easing:"cubicInOut",additive:!0},u.x=s.x,u.y=s.y,u.animateTo(n,p),c.animateTo(e,p)):(u.attr(n),c.attr(e)),this._firstShowIndicator=!1,this._shapes.handleLabels);if(d)for(var g=0;g ",o):this._showIndicator(t,t,"≈ ",o)),a=this._hoverLinkDataIndices,n=[],(e||i4(r))&&(n=this._hoverLinkDataIndices=r.findTargetDataIndices(i)),t=n,o={},s(a||[],e={}),s(t||[],o,e),i=[l(e),l(o)],this._dispatchHighDown("downplay",jF(i[0],r)),this._dispatchHighDown("highlight",jF(i[1],r)))},e4.prototype._hoverLinkFromSeriesMouseOver=function(t){var e,n;jm(t.target,function(t){t=$(t);return null!=t.dataIndex&&(e=t,1)},!0),e&&(t=this.ecModel.getSeriesByIndex(e.seriesIndex),(n=this.visualMapModel).isTargetSeries(t))&&(n=(t=t.getData(e.dataType)).getStore().get(n.getDataDimensionIndex(t),e.dataIndex),isNaN(n)||this._showIndicator(n,n))},e4.prototype._hideIndicator=function(){var t=this._shapes,e=(t.indicator&&t.indicator.attr("invisible",!0),t.indicatorLabel&&t.indicatorLabel.attr("invisible",!0),this._shapes.handleLabels);if(e)for(var n=0;nn&&s([n,t[0]],"outOfRange"),s(t.slice()),n=t[1])},this),{stops:o,outerColors:r};function s(t,e){var n=a.getRepresentValue({interval:t}),n=(e=e||a.getValueState(n),i(n,e));t[0]===-1/0?r[0]=n:t[1]===1/0?r[1]=n:o.push({value:t[0],color:n},{value:t[1],color:n})}},m4.type="visualMap.piecewise",m4.defaultOption=Np(xp.defaultOption,{selected:null,minOpen:!1,maxOpen:!1,align:"auto",itemWidth:20,itemHeight:14,itemSymbol:"roundRect",pieces:null,categories:null,splitNumber:5,selectedMode:"multiple",itemGap:10,hoverLink:!0});var f4,y4=m4;function m4(){var t=null!==f4&&f4.apply(this,arguments)||this;return t.type=m4.type,t._pieceList=[],t}var v4={splitNumber:function(t){var e=this.option,n=Math.min(e.precision,20),i=this.getExtent(),o=e.splitNumber,o=Math.max(parseInt(o,10),1);e.splitNumber=o;for(var r=(i[1]-i[0])/o;+r.toFixed(n)!==r&&n<5;)n++;e.precision=n,r=+r.toFixed(n),e.minOpen&&t.push({interval:[-1/0,i[0]],close:[0,0]});for(var a=0,s=i[0];a","≥"][e[0]]];t.text=t.text||this.formatValueText(null!=t.value?t.value:t.interval,!1,e)},this)}};function x4(t,e){var n=t.inverse;("vertical"===t.orient?!n:n)&&e.reverse()}u(w4,_4=e),w4.prototype.doRender=function(){var i=this.group,o=(i.removeAll(),this.visualMapModel),r=o.get("textGap"),t=o.textStyleModel,a=t.getFont(),s=t.getTextColor(),l=this._getItemAlign(),u=o.itemSize,t=this._getViewData(),e=t.endsText,h=wt(o.get("showLabel",!0),!e);e&&this._renderEndsText(i,e[0],u,h,l),nt(t.viewPieceList,function(t){var e=t.piece,n=new Z,t=(n.onclick=T(this._onItemClick,this,e),this._enableHoverLink(n,t.indexInModelPieceList),o.getRepresentValue(e));this._createItemSymbol(n,t,[0,0,u[0],u[1]]),h&&(t=this.visualMapModel.getValueState(t),n.add(new K({style:{x:"right"===l?-r:u[0]+r,y:u[1]/2,text:e.text,verticalAlign:"middle",align:l,font:a,fill:s,opacity:"outOfRange"===t?.5:1}}))),i.add(n)},this),e&&this._renderEndsText(i,e[1],u,h,l),kd(o.get("orient"),i,o.get("itemGap")),this.renderBackground(i),this.positionGroup(i)},w4.prototype._enableHoverLink=function(t,n){var i=this,e=(t.on("mouseover",function(){return e("highlight")}).on("mouseout",function(){return e("downplay")}),function(t){var e=i.visualMapModel;e.option.hoverLink&&i.api.dispatchAction({type:t,batch:jF(e.findTargetDataIndices(n),e)})})},w4.prototype._getItemAlign=function(){var t=this.visualMapModel,e=t.option;return"vertical"===e.orient?ZF(t,this.api,t.itemSize):(t=e.align)&&"auto"!==t?t:"left"},w4.prototype._renderEndsText=function(t,e,n,i,o){var r,a;e&&(r=new Z,a=this.visualMapModel.textStyleModel,r.add(new K({style:ap(a,{x:i?"right"===o?n[0]:0:n[0]/2,y:n[1]/2,verticalAlign:"middle",align:i?o:"center",text:e})})),t.add(r))},w4.prototype._getViewData=function(){var t=this.visualMapModel,e=V(t.getPieceList(),function(t,e){return{piece:t,indexInModelPieceList:e}}),n=t.get("text"),i=t.get("orient"),t=t.get("inverse");return("horizontal"===i?t:!t)?e.reverse():n=n&&n.slice().reverse(),{viewPieceList:e,endsText:n}},w4.prototype._createItemSymbol=function(t,e,n){t.add(s0(this.getControllerVisual(e,"symbol"),n[0],n[1],n[2],n[3],this.getControllerVisual(e,"color")))},w4.prototype._onItemClick=function(t){var n,i,e=this.visualMapModel,o=e.option,r=o.selectedMode;r&&(n=S(o.selected),i=e.getSelectedMapKey(t),"single"===r||!0===r?(n[i]=!0,nt(n,function(t,e){n[e]=e===i})):n[i]=!n[i],this.api.dispatchAction({type:"selectDataRange",from:this.uid,visualMapId:this.visualMapModel.id,selected:n}))},w4.type="visualMap.piecewise";var _4,b4=w4;function w4(){var t=null!==_4&&_4.apply(this,arguments)||this;return t.type=w4.type,t}function S4(t){t.registerComponentModel(y4),t.registerComponentView(b4),d4(t)}r(function(t){r(g4),r(S4)});u(T4,M4=Ia),T4.type="dataZoom.select";var M4,I4=T4;function T4(){var t=null!==M4&&M4.apply(this,arguments)||this;return t.type=T4.type,t}u(A4,C4=n0),A4.type="dataZoom.select";var C4,D4=A4;function A4(){var t=null!==C4&&C4.apply(this,arguments)||this;return t.type=A4.type,t}function k4(t){t.registerComponentModel(I4),t.registerComponentView(D4),w3(t)}u(O4,L4=g),O4.prototype.optionUpdated=function(){L4.prototype.optionUpdated.apply(this,arguments);var n=this.ecModel;nt(this.option.feature,function(t,e){e=MF(e);e&&(e.getDefaultOption&&(e.defaultOption=e.getDefaultOption(n)),d(t,e.defaultOption))})},O4.type="toolbox",O4.layoutMode={type:"box",ignoreSize:!0},O4.defaultOption={show:!0,z:6,orient:"horizontal",left:"right",top:"top",backgroundColor:"transparent",borderColor:"#ccc",borderRadius:0,borderWidth:0,padding:5,itemSize:15,itemGap:8,showTitle:!0,iconStyle:{borderColor:"#666",color:"none"},emphasis:{iconStyle:{borderColor:"#3E98C5"}},tooltip:{show:!1,position:"bottom"}};var L4,P4=O4;function O4(){var t=null!==L4&&L4.apply(this,arguments)||this;return t.type=O4.type,t}u(E4,N4=$y),E4.prototype.render=function(p,d,g,f){var y,m,v,x,_,t,e,n,i,o,r,b=this.group;function a(t,e){var n,t=_[t],e=_[e],i=v[t],o=new kp(i,p,p.ecModel);if(f&&null!=f.newTitle&&f.featureName===t&&(i.title=f.newTitle),t&&!e){if(0===t.indexOf("my"))n={onclick:o.option.onclick,featureName:t};else{i=MF(t);if(!i)return;n=new i}x[t]=n}else if(!(n=x[e]))return;n.uid=Op("toolbox-feature"),n.model=o,n.ecModel=d,n.api=g;var r,a,s,l,u,h,c,i=n instanceof bF;!t&&e?i&&n.dispose&&n.dispose(d,g):!o.get("show")||i&&n.unusable?i&&n.remove&&n.remove(d,g):(a=n,e=t,u=(r=o).getModel("iconStyle"),h=r.getModel(["emphasis","iconStyle"]),i=a instanceof bF&&a.getIcons?a.getIcons():r.get("icon"),t=r.get("title")||{},H(i)?(s={})[e]=i:s=i,H(t)?(l={})[e]=t:l=t,c=r.iconPaths={},nt(s,function(t,e){var n=jc(t,{},{x:-y/2,y:-y/2,width:y,height:y});n.setStyle(u.getItemStyle());n.ensureState("emphasis").style=h.getItemStyle();var i=new K({style:{text:l[e],align:h.get("textAlign"),borderRadius:h.get("textBorderRadius"),padding:h.get("textPadding"),fill:null,font:pp({fontStyle:h.get("textFontStyle"),fontFamily:h.get("textFontFamily"),fontSize:h.get("textFontSize"),fontWeight:h.get("textFontWeight")},d)},ignore:!0});n.setTextContent(i),$c({el:n,componentModel:p,itemName:e,formatterParamsExtra:{title:l[e]}}),n.__title=l[e],n.on("mouseover",function(){var t=h.getItemStyle(),e=m?null==p.get("right")&&"right"!==p.get("left")?"right":"left":null==p.get("bottom")&&"bottom"!==p.get("top")?"bottom":"top";i.setStyle({fill:h.get("textFill")||t.fill||t.stroke||"#000",backgroundColor:h.get("textBackgroundColor")}),n.setTextConfig({position:h.get("textPosition")||e}),i.ignore=!p.get("showTitle"),g.enterEmphasis(this)}).on("mouseout",function(){"emphasis"!==r.get(["iconStatus",e])&&g.leaveEmphasis(this),i.hide()}),("emphasis"===r.get(["iconStatus",e])?cu:pu)(n),b.add(n),n.on("click",T(a.onclick,a,d,g,e)),c[e]=n}),o.setIconStatus=function(t,e){var n=this.option,i=this.iconPaths;n.iconStatus=n.iconStatus||{},n.iconStatus[t]=e,i[t]&&("emphasis"===e?cu:pu)(i[t])},n instanceof bF&&n.render&&n.render(o,d,g,f))}b.removeAll(),p.get("show")&&(y=+p.get("itemSize"),m="vertical"===p.get("orient"),v=p.get("feature")||{},x=this._features||(this._features={}),_=[],nt(v,function(t,e){_.push(e)}),new i1(this._featureNames||[],_).add(a).update(a).remove(P(a,null)).execute(),this._featureNames=_,t=b,n=g,i=(e=p).getBoxLayoutParams(),o=e.get("padding"),n={width:n.getWidth(),height:n.getHeight()},r=Ld(i,n,o),kd(e.get("orient"),t,e.get("itemGap"),r.width,r.height),Pd(t,i,n,o),b.add(Pz(b.getBoundingRect(),p)),m||b.eachChild(function(t){var e,n,i=t.__title,o=t.ensureState("emphasis"),o=o.textConfig||(o.textConfig={}),r=t.getTextContent(),r=r&&r.ensureState("emphasis");r&&!D(r)&&i&&(r=r.style||(r.style={}),i=$o(i,K.makeFont(r)),e=t.x+b.x,n=!1,t.y+b.y+y+i.height>g.getHeight()&&(o.position="top",n=!0),t=n?-5-i.height:y+10,e+i.width/2>g.getWidth()?(o.position=["100%",t],r.align="right"):e-i.width/2<0&&(o.position=[0,t],r.align="left"))}))},E4.prototype.updateView=function(t,e,n,i){nt(this._features,function(t){t instanceof bF&&t.updateView&&t.updateView(t.model,e,n,i)})},E4.prototype.remove=function(e,n){nt(this._features,function(t){t instanceof bF&&t.remove&&t.remove(e,n)}),this.group.removeAll()},E4.prototype.dispose=function(e,n){nt(this._features,function(t){t instanceof bF&&t.dispose&&t.dispose(e,n)})},E4.type="toolbox";var N4,R4=E4;function E4(){return null!==N4&&N4.apply(this,arguments)||this}u(B4,z4=bF),B4.prototype.onclick=function(t,e){var n=this.model,i=n.get("name")||t.get("title.0.text")||"echarts",o="svg"===e.getZr().painter.getType(),r=o?"svg":n.get("type",!0)||"png",e=e.getConnectedDataURL({type:r,backgroundColor:n.get("backgroundColor",!0)||t.get("backgroundColor")||"#fff",connectedBackgroundColor:n.get("connectedBackgroundColor"),excludeComponents:n.get("excludeComponents"),pixelRatio:n.get("pixelRatio")}),t=w.browser;if("function"!=typeof MouseEvent||!t.newEdge&&(t.ie||t.edge))if(window.navigator.msSaveOrOpenBlob||o){var t=e.split(","),a=-1',o=window.open();o.document.write(h),o.document.title=i}else{a=document.createElement("a"),n=(a.download=i+"."+r,a.target="_blank",a.href=e,new MouseEvent("click",{view:document.defaultView,bubbles:!0,cancelable:!1}));a.dispatchEvent(n)}},B4.getDefaultOption=function(t){return{show:!0,icon:"M4.7,22.9L29.3,45.5L54.7,23.4M4.6,43.6L4.6,58L53.8,58L53.8,43.6M29.2,45.1L29.2,0",title:t.getLocaleModel().get(["toolbox","saveAsImage","title"]),type:"png",connectedBackgroundColor:"#fff",name:"",excludeComponents:["toolbox"],lang:t.getLocaleModel().get(["toolbox","saveAsImage","lang"])}};var z4,V4=B4;function B4(){return null!==z4&&z4.apply(this,arguments)||this}var F4,G4="__ec_magicType_stack__",W4=[["line","bar"],["stack"]],H4=(u(Y4,F4=bF),Y4.prototype.getIcons=function(){var t=this.model,e=t.get("icon"),n={};return nt(t.get("type"),function(t){e[t]&&(n[t]=e[t])}),n},Y4.getDefaultOption=function(t){return{show:!0,type:[],icon:{line:"M4.1,28.9h7.1l9.3-22l7.4,38l9.7-19.7l3,12.8h14.9M4.1,58h51.4",bar:"M6.7,22.9h10V48h-10V22.9zM24.9,13h10v35h-10V13zM43.2,2h10v46h-10V2zM3.1,58h53.7",stack:"M8.2,38.4l-8.4,4.1l30.6,15.3L60,42.5l-8.1-4.1l-21.5,11L8.2,38.4z M51.9,30l-8.1,4.2l-13.4,6.9l-13.9-6.9L8.2,30l-8.4,4.2l8.4,4.2l22.2,11l21.5-11l8.1-4.2L51.9,30z M51.9,21.7l-8.1,4.2L35.7,30l-5.3,2.8L24.9,30l-8.4-4.1l-8.3-4.2l-8.4,4.2L8.2,30l8.3,4.2l13.9,6.9l13.4-6.9l8.1-4.2l8.1-4.1L51.9,21.7zM30.4,2.2L-0.2,17.5l8.4,4.1l8.3,4.2l8.4,4.2l5.5,2.7l5.3-2.7l8.1-4.2l8.1-4.2l8.1-4.1L30.4,2.2z"},title:t.getLocaleModel().get(["toolbox","magicType","title"]),option:{},seriesIndex:{}}},Y4.prototype.onclick=function(t,e,a){var s,n,l=this.model,i=l.get(["seriesIndex",a]);X4[a]&&(s={series:[]},nt(W4,function(t){0<=G(t,a)&&nt(t,function(t){l.setIconStatus(t,"normal")})}),l.setIconStatus(a,"emphasis"),t.eachComponent({mainType:"series",query:null==i?null:{seriesIndex:i}},function(t){var e=t.subType,n=t.id,e=X4[a](e,n,t,l),n=(e&&(z(e,t.option),s.series.push(e)),t.coordinateSystem);if(n&&"cartesian2d"===n.type&&("line"===a||"bar"===a)){e=n.getAxesByScale("ordinal")[0];if(e){var i=e.dim+"Axis",o=t.getReferringComponents(i,da).models[0].componentIndex;s[i]=s[i]||[];for(var r=0;r<=o;r++)s[i][o]=s[i][o]||{};s[i][o].boundaryGap="bar"===a}}}),"stack"===(t=a)&&(n=d({stack:l.option.title.tiled,tiled:l.option.title.stack},l.option.title),"emphasis"!==l.get(["iconStatus",a]))&&(t="tiled"),e.dispatchAction({type:"changeMagicType",currentType:t,newOption:s,newTitle:n,featureName:"magicType"}))},Y4);function Y4(){return null!==F4&&F4.apply(this,arguments)||this}var X4={line:function(t,e,n,i){if("bar"===t)return d({id:e,type:"line",data:n.get("data"),stack:n.get("stack"),markPoint:n.get("markPoint"),markLine:n.get("markLine")},i.get(["option","line"])||{},!0)},bar:function(t,e,n,i){if("line"===t)return d({id:e,type:"bar",data:n.get("data"),stack:n.get("stack"),markPoint:n.get("markPoint"),markLine:n.get("markLine")},i.get(["option","bar"])||{},!0)},stack:function(t,e,n,i){n=n.get("stack")===G4;if("line"===t||"bar"===t)return i.setIconStatus("stack",n?"normal":"emphasis"),d({id:e,stack:n?"":G4},i.get(["option","stack"])||{},!0)}},U4=(Uv({type:"changeMagicType",event:"magicTypeChanged",update:"prepareAndUpdate"},function(t,e){e.mergeOption(t.newOption)}),new Array(60).join("-")),Z4="\t";function j4(t){o={},r=[],a=[],t.eachRawSeries(function(t){var e,n,i=t.coordinateSystem;(i&&("cartesian2d"===i.type||"polar"===i.type)&&"category"===(e=i.getBaseAxis()).type?(n=e.dim+"_"+e.index,o[n]||(o[n]={categoryAxis:e,valueAxis:i.getOtherAxis(e),series:[]},a.push({axisDim:e.dim,axisIndex:e.index})),o[n].series):r).push(t)});var o,r,a,h,t={seriesGroupByCategoryAxis:o,other:r,meta:a};return{value:pt([(h=[],nt(t.seriesGroupByCategoryAxis,function(t,e){for(var n=t.categoryAxis,i=t.valueAxis.dim,o=[" "].concat(V(t.series,function(t){return t.name})),r=[n.model.getCategories()],a=(nt(t.series,function(t){var e=t.getRawData();r.push(t.getRawData().mapArray(e.mapDimension(i),function(t){return t}))}),[o.join(Z4)]),s=0;s":"gt",">=":"gte","=":"eq","!=":"ne","<>":"ne"},kG=(LG.prototype.evaluate=function(t){var e=typeof t;return H(e)?this._condVal.test(t):!!Y(e)&&this._condVal.test(t+"")},LG);function LG(t){null==(this._condVal=H(t)?new RegExp(t):_t(t)?t:null)&&jr("")}OG.prototype.evaluate=function(){return this.value};var PG=OG;function OG(){}RG.prototype.evaluate=function(){for(var t=this.children,e=0;e"}(i,o)+("style"!==i?we(e):e||"")+(n?r+V(n,t).join(r)+r:"")+""}(t)}function fW(t){return{zrId:t,shadowCache:{},patternCache:{},gradientCache:{},clipPathCache:{},defs:{},cssNodes:{},cssAnims:{},cssStyleCache:{},cssAnimIdx:0,shadowIdx:0,gradientIdx:0,patternIdx:0,clipPathIdx:0}}function yW(t,e,n,i){return dW("svg","root",{width:t,height:e,xmlns:sW,"xmlns:xlink":lW,version:"1.1",baseProfile:"full",viewBox:!!i&&"0 0 "+t+" "+e},n)}var mW=0;var vW={cubicIn:"0.32,0,0.67,0",cubicOut:"0.33,1,0.68,1",cubicInOut:"0.65,0,0.35,1",quadraticIn:"0.11,0,0.5,0",quadraticOut:"0.5,1,0.89,1",quadraticInOut:"0.45,0,0.55,1",quarticIn:"0.5,0,0.75,0",quarticOut:"0.25,1,0.5,1",quarticInOut:"0.76,0,0.24,1",quinticIn:"0.64,0,0.78,0",quinticOut:"0.22,1,0.36,1",quinticInOut:"0.83,0,0.17,1",sinusoidalIn:"0.12,0,0.39,0",sinusoidalOut:"0.61,1,0.88,1",sinusoidalInOut:"0.37,0,0.63,1",exponentialIn:"0.7,0,0.84,0",exponentialOut:"0.16,1,0.3,1",exponentialInOut:"0.87,0,0.13,1",circularIn:"0.55,0,1,0.45",circularOut:"0,0.55,0.45,1",circularInOut:"0.85,0,0.15,1"},xW="transform-origin";var _W={fill:"fill",opacity:"opacity",lineWidth:"stroke-width",lineDashOffset:"stroke-dashoffset"};function bW(t,e){var n=e.zrId+"-ani-"+e.cssAnimIdx++;return e.cssAnims[n]=t,n}function wW(t){return H(t)?vW[t]?"cubic-bezier("+vW[t]+")":ii(t)?t:"":""}function SW(A,k,L,P){var t=A.animators,e=t.length,n=[];if(A instanceof Qh){if(o=function(t,e,u){var h,c,t=t.shape.paths,p={};if(nt(t,function(t){var e=fW(u.zrId),t=(e.animation=!0,SW(t,{},e,!0),e.cssAnims),n=e.cssNodes,e=W(t),i=e.length;if(i){var o,r,a=t[c=e[i-1]];for(o in a){var s=a[o];p[o]=p[o]||{d:""},p[o].d+=s.d||""}for(r in n){var l=n[r].animation;0<=l.indexOf(c)&&(h=l)}}}),h)return e.d=!1,t=bW(p,u),h.replace(c,t)}(A,k,L))n.push(o);else if(!e)return}else if(!e)return;for(var i,o,r,a={},s=0;s"].join(r):"")&&(e=dW("style","stl",{},[],c),h.push(e)),yW(i,l,h,t.useViewBox)},aH.prototype.renderToString=function(t){return gW(this.renderToVNode({animation:N((t=t||{}).cssAnimation,!0),emphasis:N(t.cssEmphasis,!0),willUpdate:!1,compress:!0,useViewBox:N(t.useViewBox,!0)}),{newline:!0})},aH.prototype.setBackgroundColor=function(t){this._backgroundColor=t},aH.prototype.getSvgRoot=function(){return this._mainVNode&&this._mainVNode.elm},aH.prototype._paintList=function(t,e,n){for(var i,o,r,a,s,l,u,h=t.length,c=[],p=0,d=0,g=0;g>>0;n--;)e[n]=t[n];return e}function Ct(t){return t.classList?At(t.classList):(t.getAttribute("class")||"").split(" ").filter(function(t){return t})}function Ot(t,e){var n,a=e.split("-"),r=a[0],i=a.slice(1).join("-");return r!==t||""===i||(n=i,~F.indexOf(n))?null:i}function St(t){return"".concat(t).replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")}function Pt(n){return Object.keys(n||{}).reduce(function(t,e){return t+"".concat(e,": ").concat(n[e],";")},"")}function Nt(t){return t.size!==yt.size||t.x!==yt.x||t.y!==yt.y||t.rotate!==yt.rotate||t.flipX||t.flipY}function Mt(t){var e=t.transform,n=t.containerWidth,a=t.iconWidth,r={transform:"translate(".concat(n/2," 256)")},i="translate(".concat(32*e.x,", ").concat(32*e.y,") "),o="scale(".concat(e.size/16*(e.flipX?-1:1),", ").concat(e.size/16*(e.flipY?-1:1),") "),c="rotate(".concat(e.rotate," 0 0)");return{outer:r,inner:{transform:"".concat(i," ").concat(o," ").concat(c)},path:{transform:"translate(".concat(a/2*-1," -256)")}}}var zt={x:0,y:0,width:"100%",height:"100%"};function Et(t){var e=!(1").concat(o.map(Zt).join(""),"")}var $t=function(){};function te(t){return"string"==typeof(t.getAttribute?t.getAttribute(G):null)}var ee={replace:function(t){var e=t[0],n=t[1].map(function(t){return Zt(t)}).join("\n");if(e.parentNode&&e.outerHTML)e.outerHTML=n+(J.keepOriginalSource&&"svg"!==e.tagName.toLowerCase()?"\x3c!-- ".concat(e.outerHTML," --\x3e"):"");else if(e.parentNode){var a=document.createElement("span");e.parentNode.replaceChild(a,e),a.outerHTML=n}},nest:function(t){var e=t[0],n=t[1];if(~Ct(e).indexOf(J.replacementClass))return ee.replace(t);var a=new RegExp("".concat(J.familyPrefix,"-.*"));delete n[0].attributes.style,delete n[0].attributes.id;var r=n[0].attributes.class.split(" ").reduce(function(t,e){return e===J.replacementClass||e.match(a)?t.toSvg.push(e):t.toNode.push(e),t},{toNode:[],toSvg:[]});n[0].attributes.class=r.toSvg.join(" ");var i=n.map(function(t){return Zt(t)}).join("\n");e.setAttribute("class",r.toNode.join(" ")),e.setAttribute(G,""),e.innerHTML=i}};function ne(t){t()}function ae(n,t){var a="function"==typeof t?t:$t;if(0===n.length)a();else{var e=ne;J.mutateApproach===P&&(e=g.requestAnimationFrame||ne),e(function(){var t=!0===J.autoReplaceSvg?ee.replace:ee[J.autoReplaceSvg]||ee.replace,e=Yt.begin("mutate");n.map(t),e(),a()})}}var re=!1;function ie(){re=!1}var oe=null;function ce(t){if(l&&J.observeMutations){var r=t.treeCallback,i=t.nodeCallback,o=t.pseudoElementsCallback,e=t.observeMutationsRoot,n=void 0===e?v:e;oe=new l(function(t){re||At(t).forEach(function(t){if("childList"===t.type&&0 0 && !$('body').hasClass('fixed-nav')) { + $('#right-sidebar').addClass('sidebar-top'); + } else { + $('#right-sidebar').removeClass('sidebar-top'); + } + }); + + //$("[data-toggle=popover]") + // .popover(); + + // Add slimscroll to element + //$('.full-height-scroll').slimscroll({ + // height: '100%' + //}) +}); + +// Minimalize menu when screen is less than 768px +$(window).bind("resize", function () { + if (window.innerWidth < 769) { + $('body').addClass('body-small') + } else { + $('body').removeClass('body-small') + } +}); + +// Fixed Sidebar +$(window).bind("load", function () { + if ($("body").hasClass('fixed-sidebar')) { + $('.sidebar-collapse').slimScroll({ + height: '100%', + railOpacity: 0.9 + }); + } +}); + + +// check if browser support HTML5 local storage +function localStorageSupport() { + return (('localStorage' in window) && window['localStorage'] !== null) +} + +// Local Storage functions +// Set proper body class and plugins based on user configuration +$(document).ready(function () { + if (localStorageSupport()) { + + var collapse = localStorage.getItem("collapse_menu"); + var fixedsidebar = localStorage.getItem("fixedsidebar"); + var fixednavbar = localStorage.getItem("fixednavbar"); + var boxedlayout = localStorage.getItem("boxedlayout"); + var fixedfooter = localStorage.getItem("fixedfooter"); + + var body = $('body'); + + if (fixedsidebar == 'on') { + body.addClass('fixed-sidebar'); + $('.sidebar-collapse').slimScroll({ + height: '100%', + railOpacity: 0.9 + }); + } + + if (collapse == 'on') { + if (body.hasClass('fixed-sidebar')) { + if (!body.hasClass('body-small')) { + body.addClass('mini-navbar'); + } + } else { + if (!body.hasClass('body-small')) { + body.addClass('mini-navbar'); + } + + } + } + + if (fixednavbar == 'on') { + $(".navbar-static-top").removeClass('navbar-static-top').addClass('navbar-fixed-top'); + body.addClass('fixed-nav'); + } + + if (boxedlayout == 'on') { + body.addClass('boxed-layout'); + } + + if (fixedfooter == 'on') { + $(".footer").addClass('fixed'); + } + } +}); + +// For demo purpose - animation css script +//function animationHover(element, animation) { +// element = $(element); +// element.hover( +// function () { +// element.addClass('animated ' + animation); +// }, +// function () { +// //wait for animation to finish before removing classes +// window.setTimeout(function () { +// element.removeClass('animated ' + animation); +// }, 2000); +// }); +//} + +function SmoothlyMenu() { + if (!$('body').hasClass('mini-navbar') || $('body').hasClass('body-small')) { + // Hide menu in order to smoothly turn on when maximize menu + $('#side-menu').hide(); + // For smoothly turn on menu + setTimeout( + function () { + $('#side-menu').fadeIn(400); + }, 200); + } else if ($('body').hasClass('fixed-sidebar')) { + $('#side-menu').hide(); + setTimeout( + function () { + $('#side-menu').fadeIn(400); + }, 100); + } else { + // Remove all inline style from jquery fadeIn function to reset menu state + $('#side-menu').removeAttr('style'); + } +} + +// Dragable panels +function WinMove() { + var element = "[class*=col]"; + var handle = ".ibox-title"; + var connect = "[class*=col]"; + $(element).sortable( + { + handle: handle, + connectWith: connect, + tolerance: 'pointer', + forcePlaceholderSize: true, + opacity: 0.8 + }) + .disableSelection(); +} + + diff --git a/apps/nps/0.29.21/web/static/js/jquery-3.7.1.min.js b/apps/nps/0.29.21/web/static/js/jquery-3.7.1.min.js new file mode 100644 index 0000000..7f37b5d --- /dev/null +++ b/apps/nps/0.29.21/web/static/js/jquery-3.7.1.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.7.1 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(ie,e){"use strict";var oe=[],r=Object.getPrototypeOf,ae=oe.slice,g=oe.flat?function(e){return oe.flat.call(e)}:function(e){return oe.concat.apply([],e)},s=oe.push,se=oe.indexOf,n={},i=n.toString,ue=n.hasOwnProperty,o=ue.toString,a=o.call(Object),le={},v=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},y=function(e){return null!=e&&e===e.window},C=ie.document,u={type:!0,src:!0,nonce:!0,noModule:!0};function m(e,t,n){var r,i,o=(n=n||C).createElement("script");if(o.text=e,t)for(r in u)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[i.call(e)]||"object":typeof e}var t="3.7.1",l=/HTML$/i,ce=function(e,t){return new ce.fn.init(e,t)};function c(e){var t=!!e&&"length"in e&&e.length,n=x(e);return!v(e)&&!y(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+ge+")"+ge+"*"),x=new RegExp(ge+"|>"),j=new RegExp(g),A=new RegExp("^"+t+"$"),D={ID:new RegExp("^#("+t+")"),CLASS:new RegExp("^\\.("+t+")"),TAG:new RegExp("^("+t+"|[*])"),ATTR:new RegExp("^"+p),PSEUDO:new RegExp("^"+g),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ge+"*(even|odd|(([+-]|)(\\d*)n|)"+ge+"*(?:([+-]|)"+ge+"*(\\d+)|))"+ge+"*\\)|)","i"),bool:new RegExp("^(?:"+f+")$","i"),needsContext:new RegExp("^"+ge+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ge+"*((?:-\\d)?\\d*)"+ge+"*\\)|)(?=[^-]|$)","i")},N=/^(?:input|select|textarea|button)$/i,q=/^h\d$/i,L=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,H=/[+~]/,O=new RegExp("\\\\[\\da-fA-F]{1,6}"+ge+"?|\\\\([^\\r\\n\\f])","g"),P=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},M=function(){V()},R=J(function(e){return!0===e.disabled&&fe(e,"fieldset")},{dir:"parentNode",next:"legend"});try{k.apply(oe=ae.call(ye.childNodes),ye.childNodes),oe[ye.childNodes.length].nodeType}catch(e){k={apply:function(e,t){me.apply(e,ae.call(t))},call:function(e){me.apply(e,ae.call(arguments,1))}}}function I(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(V(e),e=e||T,C)){if(11!==p&&(u=L.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return k.call(n,a),n}else if(f&&(a=f.getElementById(i))&&I.contains(e,a)&&a.id===i)return k.call(n,a),n}else{if(u[2])return k.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&e.getElementsByClassName)return k.apply(n,e.getElementsByClassName(i)),n}if(!(h[t+" "]||d&&d.test(t))){if(c=t,f=e,1===p&&(x.test(t)||m.test(t))){(f=H.test(t)&&U(e.parentNode)||e)==e&&le.scope||((s=e.getAttribute("id"))?s=ce.escapeSelector(s):e.setAttribute("id",s=S)),o=(l=Y(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+Q(l[o]);c=l.join(",")}try{return k.apply(n,f.querySelectorAll(c)),n}catch(e){h(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return re(t.replace(ve,"$1"),e,n,r)}function W(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function F(e){return e[S]=!0,e}function $(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function B(t){return function(e){return fe(e,"input")&&e.type===t}}function _(t){return function(e){return(fe(e,"input")||fe(e,"button"))&&e.type===t}}function z(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&R(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function X(a){return F(function(o){return o=+o,F(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function U(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function V(e){var t,n=e?e.ownerDocument||e:ye;return n!=T&&9===n.nodeType&&n.documentElement&&(r=(T=n).documentElement,C=!ce.isXMLDoc(T),i=r.matches||r.webkitMatchesSelector||r.msMatchesSelector,r.msMatchesSelector&&ye!=T&&(t=T.defaultView)&&t.top!==t&&t.addEventListener("unload",M),le.getById=$(function(e){return r.appendChild(e).id=ce.expando,!T.getElementsByName||!T.getElementsByName(ce.expando).length}),le.disconnectedMatch=$(function(e){return i.call(e,"*")}),le.scope=$(function(){return T.querySelectorAll(":scope")}),le.cssHas=$(function(){try{return T.querySelector(":has(*,:jqfake)"),!1}catch(e){return!0}}),le.getById?(b.filter.ID=function(e){var t=e.replace(O,P);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(O,P);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&C){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):t.querySelectorAll(e)},b.find.CLASS=function(e,t){if("undefined"!=typeof t.getElementsByClassName&&C)return t.getElementsByClassName(e)},d=[],$(function(e){var t;r.appendChild(e).innerHTML="",e.querySelectorAll("[selected]").length||d.push("\\["+ge+"*(?:value|"+f+")"),e.querySelectorAll("[id~="+S+"-]").length||d.push("~="),e.querySelectorAll("a#"+S+"+*").length||d.push(".#.+[+~]"),e.querySelectorAll(":checked").length||d.push(":checked"),(t=T.createElement("input")).setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),r.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&d.push(":enabled",":disabled"),(t=T.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||d.push("\\["+ge+"*name"+ge+"*="+ge+"*(?:''|\"\")")}),le.cssHas||d.push(":has"),d=d.length&&new RegExp(d.join("|")),l=function(e,t){if(e===t)return a=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!le.sortDetached&&t.compareDocumentPosition(e)===n?e===T||e.ownerDocument==ye&&I.contains(ye,e)?-1:t===T||t.ownerDocument==ye&&I.contains(ye,t)?1:o?se.call(o,e)-se.call(o,t):0:4&n?-1:1)}),T}for(e in I.matches=function(e,t){return I(e,null,null,t)},I.matchesSelector=function(e,t){if(V(e),C&&!h[t+" "]&&(!d||!d.test(t)))try{var n=i.call(e,t);if(n||le.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){h(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(O,P),e[3]=(e[3]||e[4]||e[5]||"").replace(O,P),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||I.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&I.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return D.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&j.test(n)&&(t=Y(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(O,P).toLowerCase();return"*"===e?function(){return!0}:function(e){return fe(e,t)}},CLASS:function(e){var t=s[e+" "];return t||(t=new RegExp("(^|"+ge+")"+e+"("+ge+"|$)"))&&s(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=I.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function T(e,n,r){return v(n)?ce.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?ce.grep(e,function(e){return e===n!==r}):"string"!=typeof n?ce.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(ce.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||k,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:S.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof ce?t[0]:t,ce.merge(this,ce.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:C,!0)),w.test(r[1])&&ce.isPlainObject(t))for(r in t)v(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=C.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):v(e)?void 0!==n.ready?n.ready(e):e(ce):ce.makeArray(e,this)}).prototype=ce.fn,k=ce(C);var E=/^(?:parents|prev(?:Until|All))/,j={children:!0,contents:!0,next:!0,prev:!0};function A(e,t){while((e=e[t])&&1!==e.nodeType);return e}ce.fn.extend({has:function(e){var t=ce(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,Ce=/^$|^module$|\/(?:java|ecma)script/i;xe=C.createDocumentFragment().appendChild(C.createElement("div")),(be=C.createElement("input")).setAttribute("type","radio"),be.setAttribute("checked","checked"),be.setAttribute("name","t"),xe.appendChild(be),le.checkClone=xe.cloneNode(!0).cloneNode(!0).lastChild.checked,xe.innerHTML="",le.noCloneChecked=!!xe.cloneNode(!0).lastChild.defaultValue,xe.innerHTML="",le.option=!!xe.lastChild;var ke={thead:[1,"","
    "],col:[2,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],_default:[0,"",""]};function Se(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&fe(e,t)?ce.merge([e],n):n}function Ee(e,t){for(var n=0,r=e.length;n",""]);var je=/<|&#?\w+;/;function Ae(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function Re(e,t){return fe(e,"table")&&fe(11!==t.nodeType?t:t.firstChild,"tr")&&ce(e).children("tbody")[0]||e}function Ie(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function We(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Fe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(_.hasData(e)&&(s=_.get(e).events))for(i in _.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),C.head.appendChild(r[0])},abort:function(){i&&i()}}});var Jt,Kt=[],Zt=/(=)\?(?=&|$)|\?\?/;ce.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Kt.pop()||ce.expando+"_"+jt.guid++;return this[e]=!0,e}}),ce.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Zt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Zt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=v(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Zt,"$1"+r):!1!==e.jsonp&&(e.url+=(At.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||ce.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=ie[r],ie[r]=function(){o=arguments},n.always(function(){void 0===i?ce(ie).removeProp(r):ie[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Kt.push(r)),o&&v(i)&&i(o[0]),o=i=void 0}),"script"}),le.createHTMLDocument=((Jt=C.implementation.createHTMLDocument("").body).innerHTML="
    ",2===Jt.childNodes.length),ce.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(le.createHTMLDocument?((r=(t=C.implementation.createHTMLDocument("")).createElement("base")).href=C.location.href,t.head.appendChild(r)):t=C),o=!n&&[],(i=w.exec(e))?[t.createElement(i[1])]:(i=Ae([e],t,o),o&&o.length&&ce(o).remove(),ce.merge([],i.childNodes)));var r,i,o},ce.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(ce.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},ce.expr.pseudos.animated=function(t){return ce.grep(ce.timers,function(e){return t===e.elem}).length},ce.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=ce.css(e,"position"),c=ce(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=ce.css(e,"top"),u=ce.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),v(t)&&(t=t.call(e,n,ce.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},ce.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){ce.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===ce.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===ce.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=ce(e).offset()).top+=ce.css(e,"borderTopWidth",!0),i.left+=ce.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-ce.css(r,"marginTop",!0),left:t.left-i.left-ce.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===ce.css(e,"position"))e=e.offsetParent;return e||J})}}),ce.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;ce.fn[t]=function(e){return M(this,function(e,t,n){var r;if(y(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),ce.each(["top","left"],function(e,n){ce.cssHooks[n]=Ye(le.pixelPosition,function(e,t){if(t)return t=Ge(e,n),_e.test(t)?ce(e).position()[n]+"px":t})}),ce.each({Height:"height",Width:"width"},function(a,s){ce.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){ce.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return M(this,function(e,t,n){var r;return y(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?ce.css(e,t,i):ce.style(e,t,n,i)},s,n?e:void 0,n)}})}),ce.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){ce.fn[t]=function(e){return this.on(t,e)}}),ce.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.on("mouseenter",e).on("mouseleave",t||e)}}),ce.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){ce.fn[n]=function(e,t){return 0(()=>{var t={155:t=>{var e,i,r=t.exports={};function n(){throw new Error("setTimeout has not been defined")}function s(){throw new Error("clearTimeout has not been defined")}function o(t){if(e===setTimeout)return setTimeout(t,0);if((e===n||!e)&&setTimeout)return e=setTimeout,setTimeout(t,0);try{return e(t,0)}catch(i){try{return e.call(null,t,0)}catch(i){return e.call(this,t,0)}}}!function(){try{e="function"==typeof setTimeout?setTimeout:n}catch(t){e=n}try{i="function"==typeof clearTimeout?clearTimeout:s}catch(t){i=s}}();var h,a=[],u=!1,c=-1;function f(){u&&h&&(u=!1,h.length?a=h.concat(a):c=-1,a.length&&l())}function l(){if(!u){var t=o(f);u=!0;for(var e=a.length;e;){for(h=a,a=[];++c1)for(var i=1;i{for(var r in e)i.o(e,r)&&!i.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var r={};return(()=>{"use strict";i.d(r,{default:()=>ct});var t="0123456789abcdefghijklmnopqrstuvwxyz";function e(e){return t.charAt(e)}function n(t,e){return t&e}function s(t,e){return t|e}function o(t,e){return t^e}function h(t,e){return t&~e}function a(t){if(0==t)return-1;var e=0;return 0==(65535&t)&&(t>>=16,e+=16),0==(255&t)&&(t>>=8,e+=8),0==(15&t)&&(t>>=4,e+=4),0==(3&t)&&(t>>=2,e+=2),0==(1&t)&&++e,e}function u(t){for(var e=0;0!=t;)t&=t-1,++e;return e}var c,f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",l="=";function p(t){var e,i,r="";for(e=0;e+3<=t.length;e+=3)i=parseInt(t.substring(e,e+3),16),r+=f.charAt(i>>6)+f.charAt(63&i);for(e+1==t.length?(i=parseInt(t.substring(e,e+1),16),r+=f.charAt(i<<2)):e+2==t.length&&(i=parseInt(t.substring(e,e+2),16),r+=f.charAt(i>>2)+f.charAt((3&i)<<4));(3&r.length)>0;)r+=l;return r}function g(t){var i,r="",n=0,s=0;for(i=0;i>2),s=3&o,n=1):1==n?(r+=e(s<<2|o>>4),s=15&o,n=2):2==n?(r+=e(s),r+=e(o>>2),s=3&o,n=3):(r+=e(s<<2|o>>4),r+=e(15&o),n=0))}return 1==n&&(r+=e(s<<2)),r}var d,v={decode:function(t){var e;if(void 0===d){var i="= \f\n\r\t \u2028\u2029";for(d=Object.create(null),e=0;e<64;++e)d["ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(e)]=e;for(d["-"]=62,d._=63,e=0;e=4?(r[r.length]=n>>16,r[r.length]=n>>8&255,r[r.length]=255&n,n=0,s=0):n<<=6}}switch(s){case 1:throw new Error("Base64 encoding incomplete: at least 2 bits missing");case 2:r[r.length]=n>>10;break;case 3:r[r.length]=n>>16,r[r.length]=n>>8&255}return r},re:/-----BEGIN [^-]+-----([A-Za-z0-9+\/=\s]+)-----END [^-]+-----|begin-base64[^\n]+\n([A-Za-z0-9+\/=\s]+)====/,unarmor:function(t){var e=v.re.exec(t);if(e)if(e[1])t=e[1];else{if(!e[2])throw new Error("RegExp out of sync");t=e[2]}return v.decode(t)}},m=1e13,y=function(){function t(t){this.buf=[+t||0]}return t.prototype.mulAdd=function(t,e){var i,r,n=this.buf,s=n.length;for(i=0;i0&&(n[i]=e)},t.prototype.sub=function(t){var e,i,r=this.buf,n=r.length;for(e=0;e=0;--r)i+=(m+e[r]).toString().substring(1);return i},t.prototype.valueOf=function(){for(var t=this.buf,e=0,i=t.length-1;i>=0;--i)e=e*m+t[i];return e},t.prototype.simplify=function(){var t=this.buf;return 1==t.length?t[0]:this},t}(),b="…",T=/^(\d\d)(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])([01]\d|2[0-3])(?:([0-5]\d)(?:([0-5]\d)(?:[.,](\d{1,3}))?)?)?(Z|[-+](?:[0]\d|1[0-2])([0-5]\d)?)?$/,S=/^(\d\d\d\d)(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])([01]\d|2[0-3])(?:([0-5]\d)(?:([0-5]\d)(?:[.,](\d{1,3}))?)?)?(Z|[-+](?:[0]\d|1[0-2])([0-5]\d)?)?$/;function E(t,e){return t.length>e&&(t=t.substring(0,e)+b),t}var w,D=function(){function t(e,i){this.hexDigits="0123456789ABCDEF",e instanceof t?(this.enc=e.enc,this.pos=e.pos):(this.enc=e,this.pos=i)}return t.prototype.get=function(t){if(void 0===t&&(t=this.pos++),t>=this.enc.length)throw new Error("Requesting byte offset ".concat(t," on a stream of length ").concat(this.enc.length));return"string"==typeof this.enc?this.enc.charCodeAt(t):this.enc[t]},t.prototype.hexByte=function(t){return this.hexDigits.charAt(t>>4&15)+this.hexDigits.charAt(15&t)},t.prototype.hexDump=function(t,e,i){for(var r="",n=t;n176)return!1}return!0},t.prototype.parseStringISO=function(t,e){for(var i="",r=t;r191&&n<224?String.fromCharCode((31&n)<<6|63&this.get(r++)):String.fromCharCode((15&n)<<12|(63&this.get(r++))<<6|63&this.get(r++))}return i},t.prototype.parseStringBMP=function(t,e){for(var i,r,n="",s=t;s127,s=n?255:0,o="";r==s&&++t4){for(o=r,i<<=3;0==(128&(+o^s));)o=+o<<1,--i;o="("+i+" bit)\n"}n&&(r-=256);for(var h=new y(r),a=t+1;a=a;--u)s+=h>>u&1?"1":"0";if(s.length>i)return n+E(s,i)}return n+s},t.prototype.parseOctetString=function(t,e,i){if(this.isASCII(t,e))return E(this.parseStringISO(t,e),i);var r=e-t,n="("+r+" byte)\n";r>(i/=2)&&(e=t+i);for(var s=t;si&&(n+=b),n},t.prototype.parseOID=function(t,e,i){for(var r="",n=new y,s=0,o=t;oi)return E(r,i);n=new y,s=0}}return s>0&&(r+=".incomplete"),r},t}(),x=function(){function t(t,e,i,r,n){if(!(r instanceof R))throw new Error("Invalid tag value.");this.stream=t,this.header=e,this.length=i,this.tag=r,this.sub=n}return t.prototype.typeName=function(){switch(this.tag.tagClass){case 0:switch(this.tag.tagNumber){case 0:return"EOC";case 1:return"BOOLEAN";case 2:return"INTEGER";case 3:return"BIT_STRING";case 4:return"OCTET_STRING";case 5:return"NULL";case 6:return"OBJECT_IDENTIFIER";case 7:return"ObjectDescriptor";case 8:return"EXTERNAL";case 9:return"REAL";case 10:return"ENUMERATED";case 11:return"EMBEDDED_PDV";case 12:return"UTF8String";case 16:return"SEQUENCE";case 17:return"SET";case 18:return"NumericString";case 19:return"PrintableString";case 20:return"TeletexString";case 21:return"VideotexString";case 22:return"IA5String";case 23:return"UTCTime";case 24:return"GeneralizedTime";case 25:return"GraphicString";case 26:return"VisibleString";case 27:return"GeneralString";case 28:return"UniversalString";case 30:return"BMPString"}return"Universal_"+this.tag.tagNumber.toString();case 1:return"Application_"+this.tag.tagNumber.toString();case 2:return"["+this.tag.tagNumber.toString()+"]";case 3:return"Private_"+this.tag.tagNumber.toString()}},t.prototype.content=function(t){if(void 0===this.tag)return null;void 0===t&&(t=1/0);var e=this.posContent(),i=Math.abs(this.length);if(!this.tag.isUniversal())return null!==this.sub?"("+this.sub.length+" elem)":this.stream.parseOctetString(e,e+i,t);switch(this.tag.tagNumber){case 1:return 0===this.stream.get(e)?"false":"true";case 2:return this.stream.parseInteger(e,e+i);case 3:return this.sub?"("+this.sub.length+" elem)":this.stream.parseBitString(e,e+i,t);case 4:return this.sub?"("+this.sub.length+" elem)":this.stream.parseOctetString(e,e+i,t);case 6:return this.stream.parseOID(e,e+i,t);case 16:case 17:return null!==this.sub?"("+this.sub.length+" elem)":"(no elem)";case 12:return E(this.stream.parseStringUTF(e,e+i),t);case 18:case 19:case 20:case 21:case 22:case 26:return E(this.stream.parseStringISO(e,e+i),t);case 30:return E(this.stream.parseStringBMP(e,e+i),t);case 23:case 24:return this.stream.parseTime(e,e+i,23==this.tag.tagNumber)}return null},t.prototype.toString=function(){return this.typeName()+"@"+this.stream.pos+"[header:"+this.header+",length:"+this.length+",sub:"+(null===this.sub?"null":this.sub.length)+"]"},t.prototype.toPrettyString=function(t){void 0===t&&(t="");var e=t+this.typeName()+" @"+this.stream.pos;if(this.length>=0&&(e+="+"),e+=this.length,this.tag.tagConstructed?e+=" (constructed)":!this.tag.isUniversal()||3!=this.tag.tagNumber&&4!=this.tag.tagNumber||null===this.sub||(e+=" (encapsulates)"),e+="\n",null!==this.sub){t+=" ";for(var i=0,r=this.sub.length;i6)throw new Error("Length over 48 bits not supported at position "+(t.pos-1));if(0===i)return null;e=0;for(var r=0;r>6,this.tagConstructed=0!=(32&e),this.tagNumber=31&e,31==this.tagNumber){var i=new y;do{e=t.get(),i.mulAdd(128,127&e)}while(128&e);this.tagNumber=i.simplify()}}return t.prototype.isUniversal=function(){return 0===this.tagClass},t.prototype.isEOC=function(){return 0===this.tagClass&&0===this.tagNumber},t}(),B=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997],O=(1<<26)/B[B.length-1],A=function(){function t(t,e,i){null!=t&&("number"==typeof t?this.fromNumber(t,e,i):null==e&&"string"!=typeof t?this.fromString(t,256):this.fromString(t,e))}return t.prototype.toString=function(t){if(this.s<0)return"-"+this.negate().toString(t);var i;if(16==t)i=4;else if(8==t)i=3;else if(2==t)i=1;else if(32==t)i=5;else{if(4!=t)return this.toRadix(t);i=2}var r,n=(1<0)for(a>a)>0&&(s=!0,o=e(r));h>=0;)a>(a+=this.DB-i)):(r=this[h]>>(a-=i)&n,a<=0&&(a+=this.DB,--h)),r>0&&(s=!0),s&&(o+=e(r));return s?o:"0"},t.prototype.negate=function(){var e=M();return t.ZERO.subTo(this,e),e},t.prototype.abs=function(){return this.s<0?this.negate():this},t.prototype.compareTo=function(t){var e=this.s-t.s;if(0!=e)return e;var i=this.t;if(0!=(e=i-t.t))return this.s<0?-e:e;for(;--i>=0;)if(0!=(e=this[i]-t[i]))return e;return 0},t.prototype.bitLength=function(){return this.t<=0?0:this.DB*(this.t-1)+K(this[this.t-1]^this.s&this.DM)},t.prototype.mod=function(e){var i=M();return this.abs().divRemTo(e,null,i),this.s<0&&i.compareTo(t.ZERO)>0&&e.subTo(i,i),i},t.prototype.modPowInt=function(t,e){var i;return i=t<256||e.isEven()?new I(e):new N(e),this.exp(t,i)},t.prototype.clone=function(){var t=M();return this.copyTo(t),t},t.prototype.intValue=function(){if(this.s<0){if(1==this.t)return this[0]-this.DV;if(0==this.t)return-1}else{if(1==this.t)return this[0];if(0==this.t)return 0}return(this[1]&(1<<32-this.DB)-1)<>24},t.prototype.shortValue=function(){return 0==this.t?this.s:this[0]<<16>>16},t.prototype.signum=function(){return this.s<0?-1:this.t<=0||1==this.t&&this[0]<=0?0:1},t.prototype.toByteArray=function(){var t=this.t,e=[];e[0]=this.s;var i,r=this.DB-t*this.DB%8,n=0;if(t-- >0)for(r>r)!=(this.s&this.DM)>>r&&(e[n++]=i|this.s<=0;)r<8?(i=(this[t]&(1<>(r+=this.DB-8)):(i=this[t]>>(r-=8)&255,r<=0&&(r+=this.DB,--t)),0!=(128&i)&&(i|=-256),0==n&&(128&this.s)!=(128&i)&&++n,(n>0||i!=this.s)&&(e[n++]=i);return e},t.prototype.equals=function(t){return 0==this.compareTo(t)},t.prototype.min=function(t){return this.compareTo(t)<0?this:t},t.prototype.max=function(t){return this.compareTo(t)>0?this:t},t.prototype.and=function(t){var e=M();return this.bitwiseTo(t,n,e),e},t.prototype.or=function(t){var e=M();return this.bitwiseTo(t,s,e),e},t.prototype.xor=function(t){var e=M();return this.bitwiseTo(t,o,e),e},t.prototype.andNot=function(t){var e=M();return this.bitwiseTo(t,h,e),e},t.prototype.not=function(){for(var t=M(),e=0;e=this.t?0!=this.s:0!=(this[e]&1<1){var c=M();for(r.sqrTo(o[1],c);h<=u;)o[h]=M(),r.mulTo(c,o[h-2],o[h]),h+=2}var f,l,p=t.t-1,g=!0,d=M();for(n=K(t[p])-1;p>=0;){for(n>=a?f=t[p]>>n-a&u:(f=(t[p]&(1<0&&(f|=t[p-1]>>this.DB+n-a)),h=i;0==(1&f);)f>>=1,--h;if((n-=h)<0&&(n+=this.DB,--p),g)o[f].copyTo(s),g=!1;else{for(;h>1;)r.sqrTo(s,d),r.sqrTo(d,s),h-=2;h>0?r.sqrTo(s,d):(l=s,s=d,d=l),r.mulTo(d,o[f],s)}for(;p>=0&&0==(t[p]&1<=0?(r.subTo(n,r),i&&s.subTo(h,s),o.subTo(a,o)):(n.subTo(r,n),i&&h.subTo(s,h),a.subTo(o,a))}return 0!=n.compareTo(t.ONE)?t.ZERO:a.compareTo(e)>=0?a.subtract(e):a.signum()<0?(a.addTo(e,a),a.signum()<0?a.add(e):a):a},t.prototype.pow=function(t){return this.exp(t,new V)},t.prototype.gcd=function(t){var e=this.s<0?this.negate():this.clone(),i=t.s<0?t.negate():t.clone();if(e.compareTo(i)<0){var r=e;e=i,i=r}var n=e.getLowestSetBit(),s=i.getLowestSetBit();if(s<0)return e;for(n0&&(e.rShiftTo(s,e),i.rShiftTo(s,i));e.signum()>0;)(n=e.getLowestSetBit())>0&&e.rShiftTo(n,e),(n=i.getLowestSetBit())>0&&i.rShiftTo(n,i),e.compareTo(i)>=0?(e.subTo(i,e),e.rShiftTo(1,e)):(i.subTo(e,i),i.rShiftTo(1,i));return s>0&&i.lShiftTo(s,i),i},t.prototype.isProbablePrime=function(t){var e,i=this.abs();if(1==i.t&&i[0]<=B[B.length-1]){for(e=0;e=0;--e)t[e]=this[e];t.t=this.t,t.s=this.s},t.prototype.fromInt=function(t){this.t=1,this.s=t<0?-1:0,t>0?this[0]=t:t<-1?this[0]=t+this.DV:this.t=0},t.prototype.fromString=function(e,i){var r;if(16==i)r=4;else if(8==i)r=3;else if(256==i)r=8;else if(2==i)r=1;else if(32==i)r=5;else{if(4!=i)return void this.fromRadix(e,i);r=2}this.t=0,this.s=0;for(var n=e.length,s=!1,o=0;--n>=0;){var h=8==r?255&+e[n]:F(e,n);h<0?"-"==e.charAt(n)&&(s=!0):(s=!1,0==o?this[this.t++]=h:o+r>this.DB?(this[this.t-1]|=(h&(1<>this.DB-o):this[this.t-1]|=h<=this.DB&&(o-=this.DB))}8==r&&0!=(128&+e[0])&&(this.s=-1,o>0&&(this[this.t-1]|=(1<0&&this[this.t-1]==t;)--this.t},t.prototype.dlShiftTo=function(t,e){var i;for(i=this.t-1;i>=0;--i)e[i+t]=this[i];for(i=t-1;i>=0;--i)e[i]=0;e.t=this.t+t,e.s=this.s},t.prototype.drShiftTo=function(t,e){for(var i=t;i=0;--h)e[h+s+1]=this[h]>>r|o,o=(this[h]&n)<=0;--h)e[h]=0;e[s]=o,e.t=this.t+s+1,e.s=this.s,e.clamp()},t.prototype.rShiftTo=function(t,e){e.s=this.s;var i=Math.floor(t/this.DB);if(i>=this.t)e.t=0;else{var r=t%this.DB,n=this.DB-r,s=(1<>r;for(var o=i+1;o>r;r>0&&(e[this.t-i-1]|=(this.s&s)<>=this.DB;if(t.t>=this.DB;r+=this.s}else{for(r+=this.s;i>=this.DB;r-=t.s}e.s=r<0?-1:0,r<-1?e[i++]=this.DV+r:r>0&&(e[i++]=r),e.t=i,e.clamp()},t.prototype.multiplyTo=function(e,i){var r=this.abs(),n=e.abs(),s=r.t;for(i.t=s+n.t;--s>=0;)i[s]=0;for(s=0;s=0;)t[i]=0;for(i=0;i=e.DV&&(t[i+e.t]-=e.DV,t[i+e.t+1]=1)}t.t>0&&(t[t.t-1]+=e.am(i,e[i],t,2*i,0,1)),t.s=0,t.clamp()},t.prototype.divRemTo=function(e,i,r){var n=e.abs();if(!(n.t<=0)){var s=this.abs();if(s.t0?(n.lShiftTo(u,o),s.lShiftTo(u,r)):(n.copyTo(o),s.copyTo(r));var c=o.t,f=o[c-1];if(0!=f){var l=f*(1<1?o[c-2]>>this.F2:0),p=this.FV/l,g=(1<=0&&(r[r.t++]=1,r.subTo(y,r)),t.ONE.dlShiftTo(c,y),y.subTo(o,o);o.t=0;){var b=r[--v]==f?this.DM:Math.floor(r[v]*p+(r[v-1]+d)*g);if((r[v]+=o.am(0,b,r,m,0,c))0&&r.rShiftTo(u,r),h<0&&t.ZERO.subTo(r,r)}}},t.prototype.invDigit=function(){if(this.t<1)return 0;var t=this[0];if(0==(1&t))return 0;var e=3&t;return(e=(e=(e=(e=e*(2-(15&t)*e)&15)*(2-(255&t)*e)&255)*(2-((65535&t)*e&65535))&65535)*(2-t*e%this.DV)%this.DV)>0?this.DV-e:-e},t.prototype.isEven=function(){return 0==(this.t>0?1&this[0]:this.s)},t.prototype.exp=function(e,i){if(e>4294967295||e<1)return t.ONE;var r=M(),n=M(),s=i.convert(this),o=K(e)-1;for(s.copyTo(r);--o>=0;)if(i.sqrTo(r,n),(e&1<0)i.mulTo(n,s,r);else{var h=r;r=n,n=h}return i.revert(r)},t.prototype.chunkSize=function(t){return Math.floor(Math.LN2*this.DB/Math.log(t))},t.prototype.toRadix=function(t){if(null==t&&(t=10),0==this.signum()||t<2||t>36)return"0";var e=this.chunkSize(t),i=Math.pow(t,e),r=U(i),n=M(),s=M(),o="";for(this.divRemTo(r,n,s);n.signum()>0;)o=(i+s.intValue()).toString(t).substr(1)+o,n.divRemTo(r,n,s);return s.intValue().toString(t)+o},t.prototype.fromRadix=function(e,i){this.fromInt(0),null==i&&(i=10);for(var r=this.chunkSize(i),n=Math.pow(i,r),s=!1,o=0,h=0,a=0;a=r&&(this.dMultiply(n),this.dAddOffset(h,0),o=0,h=0))}o>0&&(this.dMultiply(Math.pow(i,o)),this.dAddOffset(h,0)),s&&t.ZERO.subTo(this,this)},t.prototype.fromNumber=function(e,i,r){if("number"==typeof i)if(e<2)this.fromInt(1);else for(this.fromNumber(e,r),this.testBit(e-1)||this.bitwiseTo(t.ONE.shiftLeft(e-1),s,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(i);)this.dAddOffset(2,0),this.bitLength()>e&&this.subTo(t.ONE.shiftLeft(e-1),this);else{var n=[],o=7&e;n.length=1+(e>>3),i.nextBytes(n),o>0?n[0]&=(1<>=this.DB;if(t.t>=this.DB;r+=this.s}else{for(r+=this.s;i>=this.DB;r+=t.s}e.s=r<0?-1:0,r>0?e[i++]=r:r<-1&&(e[i++]=this.DV+r),e.t=i,e.clamp()},t.prototype.dMultiply=function(t){this[this.t]=this.am(0,t-1,this,0,0,this.t),++this.t,this.clamp()},t.prototype.dAddOffset=function(t,e){if(0!=t){for(;this.t<=e;)this[this.t++]=0;for(this[e]+=t;this[e]>=this.DV;)this[e]-=this.DV,++e>=this.t&&(this[this.t++]=0),++this[e]}},t.prototype.multiplyLowerTo=function(t,e,i){var r=Math.min(this.t+t.t,e);for(i.s=0,i.t=r;r>0;)i[--r]=0;for(var n=i.t-this.t;r=0;)i[r]=0;for(r=Math.max(e-this.t,0);r0)if(0==e)i=this[0]%t;else for(var r=this.t-1;r>=0;--r)i=(e*i+this[r])%t;return i},t.prototype.millerRabin=function(e){var i=this.subtract(t.ONE),r=i.getLowestSetBit();if(r<=0)return!1;var n=i.shiftRight(r);(e=e+1>>1)>B.length&&(e=B.length);for(var s=M(),o=0;o0&&(i.rShiftTo(o,i),r.rShiftTo(o,r));var h=function(){(s=i.getLowestSetBit())>0&&i.rShiftTo(s,i),(s=r.getLowestSetBit())>0&&r.rShiftTo(s,r),i.compareTo(r)>=0?(i.subTo(r,i),i.rShiftTo(1,i)):(r.subTo(i,r),r.rShiftTo(1,r)),i.signum()>0?setTimeout(h,0):(o>0&&r.lShiftTo(o,r),setTimeout((function(){e(r)}),0))};setTimeout(h,10)}},t.prototype.fromNumberAsync=function(e,i,r,n){if("number"==typeof i)if(e<2)this.fromInt(1);else{this.fromNumber(e,r),this.testBit(e-1)||this.bitwiseTo(t.ONE.shiftLeft(e-1),s,this),this.isEven()&&this.dAddOffset(1,0);var o=this,h=function(){o.dAddOffset(2,0),o.bitLength()>e&&o.subTo(t.ONE.shiftLeft(e-1),o),o.isProbablePrime(i)?setTimeout((function(){n()}),0):setTimeout(h,0)};setTimeout(h,0)}else{var a=[],u=7&e;a.length=1+(e>>3),i.nextBytes(a),u>0?a[0]&=(1<=0?t.mod(this.m):t},t.prototype.revert=function(t){return t},t.prototype.reduce=function(t){t.divRemTo(this.m,null,t)},t.prototype.mulTo=function(t,e,i){t.multiplyTo(e,i),this.reduce(i)},t.prototype.sqrTo=function(t,e){t.squareTo(e),this.reduce(e)},t}(),N=function(){function t(t){this.m=t,this.mp=t.invDigit(),this.mpl=32767&this.mp,this.mph=this.mp>>15,this.um=(1<0&&this.m.subTo(e,e),e},t.prototype.revert=function(t){var e=M();return t.copyTo(e),this.reduce(e),e},t.prototype.reduce=function(t){for(;t.t<=this.mt2;)t[t.t++]=0;for(var e=0;e>15)*this.mpl&this.um)<<15)&t.DM;for(t[i=e+this.m.t]+=this.m.am(0,r,t,e,0,this.m.t);t[i]>=t.DV;)t[i]-=t.DV,t[++i]++}t.clamp(),t.drShiftTo(this.m.t,t),t.compareTo(this.m)>=0&&t.subTo(this.m,t)},t.prototype.mulTo=function(t,e,i){t.multiplyTo(e,i),this.reduce(i)},t.prototype.sqrTo=function(t,e){t.squareTo(e),this.reduce(e)},t}(),P=function(){function t(t){this.m=t,this.r2=M(),this.q3=M(),A.ONE.dlShiftTo(2*t.t,this.r2),this.mu=this.r2.divide(t)}return t.prototype.convert=function(t){if(t.s<0||t.t>2*this.m.t)return t.mod(this.m);if(t.compareTo(this.m)<0)return t;var e=M();return t.copyTo(e),this.reduce(e),e},t.prototype.revert=function(t){return t},t.prototype.reduce=function(t){for(t.drShiftTo(this.m.t-1,this.r2),t.t>this.m.t+1&&(t.t=this.m.t+1,t.clamp()),this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3),this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);t.compareTo(this.r2)<0;)t.dAddOffset(1,this.m.t+1);for(t.subTo(this.r2,t);t.compareTo(this.m)>=0;)t.subTo(this.m,t)},t.prototype.mulTo=function(t,e,i){t.multiplyTo(e,i),this.reduce(i)},t.prototype.sqrTo=function(t,e){t.squareTo(e),this.reduce(e)},t}();function M(){return new A(null)}function L(t,e){return new A(t,e)}var j="undefined"!=typeof navigator;j&&"Microsoft Internet Explorer"==navigator.appName?(A.prototype.am=function(t,e,i,r,n,s){for(var o=32767&e,h=e>>15;--s>=0;){var a=32767&this[t],u=this[t++]>>15,c=h*a+u*o;n=((a=o*a+((32767&c)<<15)+i[r]+(1073741823&n))>>>30)+(c>>>15)+h*u+(n>>>30),i[r++]=1073741823&a}return n},w=30):j&&"Netscape"!=navigator.appName?(A.prototype.am=function(t,e,i,r,n,s){for(;--s>=0;){var o=e*this[t++]+i[r]+n;n=Math.floor(o/67108864),i[r++]=67108863&o}return n},w=26):(A.prototype.am=function(t,e,i,r,n,s){for(var o=16383&e,h=e>>14;--s>=0;){var a=16383&this[t],u=this[t++]>>14,c=h*a+u*o;n=((a=o*a+((16383&c)<<14)+i[r]+n)>>28)+(c>>14)+h*u,i[r++]=268435455&a}return n},w=28),A.prototype.DB=w,A.prototype.DM=(1<>>16)&&(t=e,i+=16),0!=(e=t>>8)&&(t=e,i+=8),0!=(e=t>>4)&&(t=e,i+=4),0!=(e=t>>2)&&(t=e,i+=2),0!=(e=t>>1)&&(t=e,i+=1),i}A.ZERO=U(0),A.ONE=U(1);var k,_,z=function(){function t(){this.i=0,this.j=0,this.S=[]}return t.prototype.init=function(t){var e,i,r;for(e=0;e<256;++e)this.S[e]=e;for(i=0,e=0;e<256;++e)i=i+this.S[e]+t[e%t.length]&255,r=this.S[e],this.S[e]=this.S[i],this.S[i]=r;this.i=0,this.j=0},t.prototype.next=function(){var t;return this.i=this.i+1&255,this.j=this.j+this.S[this.i]&255,t=this.S[this.i],this.S[this.i]=this.S[this.j],this.S[this.j]=t,this.S[t+this.S[this.i]&255]},t}(),Z=256,G=null;if(null==G){G=[],_=0;var $=void 0;if("undefined"!=typeof window&&window.crypto&&window.crypto.getRandomValues){var Y=new Uint32Array(256);for(window.crypto.getRandomValues(Y),$=0;$=256||_>=Z)window.removeEventListener?window.removeEventListener("mousemove",X,!1):window.detachEvent&&window.detachEvent("onmousemove",X);else try{var e=t.x+t.y;G[_++]=255&e,J+=1}catch(t){}};"undefined"!=typeof window&&(window.addEventListener?window.addEventListener("mousemove",X,!1):window.attachEvent&&window.attachEvent("onmousemove",X))}function Q(){if(null==k){for(k=new z;_0&&e.length>0?(this.n=L(t,16),this.e=parseInt(e,16)):console.error("Invalid RSA public key")},t.prototype.encrypt=function(t){var e=this.n.bitLength()+7>>3,i=function(t,e){if(e=0&&e>0;){var n=t.charCodeAt(r--);n<128?i[--e]=n:n>127&&n<2048?(i[--e]=63&n|128,i[--e]=n>>6|192):(i[--e]=63&n|128,i[--e]=n>>6&63|128,i[--e]=n>>12|224)}i[--e]=0;for(var s=new W,o=[];e>2;){for(o[0]=0;0==o[0];)s.nextBytes(o);i[--e]=o[0]}return i[--e]=2,i[--e]=0,new A(i)}(t,e);if(null==i)return null;var r=this.doPublic(i);if(null==r)return null;for(var n=r.toString(16),s=n.length,o=0;o<2*e-s;o++)n="0"+n;return n},t.prototype.setPrivate=function(t,e,i){null!=t&&null!=e&&t.length>0&&e.length>0?(this.n=L(t,16),this.e=parseInt(e,16),this.d=L(i,16)):console.error("Invalid RSA private key")},t.prototype.setPrivateEx=function(t,e,i,r,n,s,o,h){null!=t&&null!=e&&t.length>0&&e.length>0?(this.n=L(t,16),this.e=parseInt(e,16),this.d=L(i,16),this.p=L(r,16),this.q=L(n,16),this.dmp1=L(s,16),this.dmq1=L(o,16),this.coeff=L(h,16)):console.error("Invalid RSA private key")},t.prototype.generate=function(t,e){var i=new W,r=t>>1;this.e=parseInt(e,16);for(var n=new A(e,16);;){for(;this.p=new A(t-r,1,i),0!=this.p.subtract(A.ONE).gcd(n).compareTo(A.ONE)||!this.p.isProbablePrime(10););for(;this.q=new A(r,1,i),0!=this.q.subtract(A.ONE).gcd(n).compareTo(A.ONE)||!this.q.isProbablePrime(10););if(this.p.compareTo(this.q)<=0){var s=this.p;this.p=this.q,this.q=s}var o=this.p.subtract(A.ONE),h=this.q.subtract(A.ONE),a=o.multiply(h);if(0==a.gcd(n).compareTo(A.ONE)){this.n=this.p.multiply(this.q),this.d=n.modInverse(a),this.dmp1=this.d.mod(o),this.dmq1=this.d.mod(h),this.coeff=this.q.modInverse(this.p);break}}},t.prototype.decrypt=function(t){var e=L(t,16),i=this.doPrivate(e);return null==i?null:function(t,e){for(var i=t.toByteArray(),r=0;r=i.length)return null;for(var n="";++r191&&s<224?(n+=String.fromCharCode((31&s)<<6|63&i[r+1]),++r):(n+=String.fromCharCode((15&s)<<12|(63&i[r+1])<<6|63&i[r+2]),r+=2)}return n}(i,this.n.bitLength()+7>>3)},t.prototype.generateAsync=function(t,e,i){var r=new W,n=t>>1;this.e=parseInt(e,16);var s=new A(e,16),o=this,h=function(){var e=function(){if(o.p.compareTo(o.q)<=0){var t=o.p;o.p=o.q,o.q=t}var e=o.p.subtract(A.ONE),r=o.q.subtract(A.ONE),n=e.multiply(r);0==n.gcd(s).compareTo(A.ONE)?(o.n=o.p.multiply(o.q),o.d=s.modInverse(n),o.dmp1=o.d.mod(e),o.dmq1=o.d.mod(r),o.coeff=o.q.modInverse(o.p),setTimeout((function(){i()}),0)):setTimeout(h,0)},a=function(){o.q=M(),o.q.fromNumberAsync(n,1,r,(function(){o.q.subtract(A.ONE).gcda(s,(function(t){0==t.compareTo(A.ONE)&&o.q.isProbablePrime(10)?setTimeout(e,0):setTimeout(a,0)}))}))},u=function(){o.p=M(),o.p.fromNumberAsync(t-n,1,r,(function(){o.p.subtract(A.ONE).gcda(s,(function(t){0==t.compareTo(A.ONE)&&o.p.isProbablePrime(10)?setTimeout(a,0):setTimeout(u,0)}))}))};setTimeout(u,0)};setTimeout(h,0)},t.prototype.sign=function(t,e,i){var r=function(t,e){if(e15)throw"ASN.1 length too long to represent by 8x: n = "+t.toString(16);return(128+i).toString(16)+e},this.getEncodedHex=function(){return(null==this.hTLV||this.isModified)&&(this.hV=this.getFreshValueHex(),this.hL=this.getLengthHexFromValue(),this.hTLV=this.hT+this.hL+this.hV,this.isModified=!1),this.hTLV},this.getValueHex=function(){return this.getEncodedHex(),this.hV},this.getFreshValueHex=function(){return""}},rt.asn1.DERAbstractString=function(t){rt.asn1.DERAbstractString.superclass.constructor.call(this),this.getString=function(){return this.s},this.setString=function(t){this.hTLV=null,this.isModified=!0,this.s=t,this.hV=stohex(this.s)},this.setStringHex=function(t){this.hTLV=null,this.isModified=!0,this.s=null,this.hV=t},this.getFreshValueHex=function(){return this.hV},void 0!==t&&("string"==typeof t?this.setString(t):void 0!==t.str?this.setString(t.str):void 0!==t.hex&&this.setStringHex(t.hex))},it.lang.extend(rt.asn1.DERAbstractString,rt.asn1.ASN1Object),rt.asn1.DERAbstractTime=function(t){rt.asn1.DERAbstractTime.superclass.constructor.call(this),this.localDateToUTC=function(t){return utc=t.getTime()+6e4*t.getTimezoneOffset(),new Date(utc)},this.formatDate=function(t,e,i){var r=this.zeroPadding,n=this.localDateToUTC(t),s=String(n.getFullYear());"utc"==e&&(s=s.substr(2,2));var o=s+r(String(n.getMonth()+1),2)+r(String(n.getDate()),2)+r(String(n.getHours()),2)+r(String(n.getMinutes()),2)+r(String(n.getSeconds()),2);if(!0===i){var h=n.getMilliseconds();if(0!=h){var a=r(String(h),3);o=o+"."+(a=a.replace(/[0]+$/,""))}}return o+"Z"},this.zeroPadding=function(t,e){return t.length>=e?t:new Array(e-t.length+1).join("0")+t},this.getString=function(){return this.s},this.setString=function(t){this.hTLV=null,this.isModified=!0,this.s=t,this.hV=stohex(t)},this.setByDateValue=function(t,e,i,r,n,s){var o=new Date(Date.UTC(t,e-1,i,r,n,s,0));this.setByDate(o)},this.getFreshValueHex=function(){return this.hV}},it.lang.extend(rt.asn1.DERAbstractTime,rt.asn1.ASN1Object),rt.asn1.DERAbstractStructured=function(t){rt.asn1.DERAbstractString.superclass.constructor.call(this),this.setByASN1ObjectArray=function(t){this.hTLV=null,this.isModified=!0,this.asn1Array=t},this.appendASN1Object=function(t){this.hTLV=null,this.isModified=!0,this.asn1Array.push(t)},this.asn1Array=new Array,void 0!==t&&void 0!==t.array&&(this.asn1Array=t.array)},it.lang.extend(rt.asn1.DERAbstractStructured,rt.asn1.ASN1Object),rt.asn1.DERBoolean=function(){rt.asn1.DERBoolean.superclass.constructor.call(this),this.hT="01",this.hTLV="0101ff"},it.lang.extend(rt.asn1.DERBoolean,rt.asn1.ASN1Object),rt.asn1.DERInteger=function(t){rt.asn1.DERInteger.superclass.constructor.call(this),this.hT="02",this.setByBigInteger=function(t){this.hTLV=null,this.isModified=!0,this.hV=rt.asn1.ASN1Util.bigIntToMinTwosComplementsHex(t)},this.setByInteger=function(t){var e=new A(String(t),10);this.setByBigInteger(e)},this.setValueHex=function(t){this.hV=t},this.getFreshValueHex=function(){return this.hV},void 0!==t&&(void 0!==t.bigint?this.setByBigInteger(t.bigint):void 0!==t.int?this.setByInteger(t.int):"number"==typeof t?this.setByInteger(t):void 0!==t.hex&&this.setValueHex(t.hex))},it.lang.extend(rt.asn1.DERInteger,rt.asn1.ASN1Object),rt.asn1.DERBitString=function(t){if(void 0!==t&&void 0!==t.obj){var e=rt.asn1.ASN1Util.newObject(t.obj);t.hex="00"+e.getEncodedHex()}rt.asn1.DERBitString.superclass.constructor.call(this),this.hT="03",this.setHexValueIncludingUnusedBits=function(t){this.hTLV=null,this.isModified=!0,this.hV=t},this.setUnusedBitsAndHexValue=function(t,e){if(t<0||7=2?(n[n.length]=s,s=0,o=0):s<<=4}}if(o)throw new Error("Hex encoding incomplete: 4 bits missing");return n}(t):v.unarmor(t),n=x.decode(r);if(3===n.sub.length&&(n=n.sub[2].sub[0]),9===n.sub.length){e=n.sub[1].getHexStringValue(),this.n=L(e,16),i=n.sub[2].getHexStringValue(),this.e=parseInt(i,16);var s=n.sub[3].getHexStringValue();this.d=L(s,16);var o=n.sub[4].getHexStringValue();this.p=L(o,16);var h=n.sub[5].getHexStringValue();this.q=L(h,16);var a=n.sub[6].getHexStringValue();this.dmp1=L(a,16);var u=n.sub[7].getHexStringValue();this.dmq1=L(u,16);var f=n.sub[8].getHexStringValue();this.coeff=L(f,16)}else{if(2!==n.sub.length)return!1;if(n.sub[0].sub){var l=n.sub[1].sub[0];e=l.sub[0].getHexStringValue(),this.n=L(e,16),i=l.sub[1].getHexStringValue(),this.e=parseInt(i,16)}else e=n.sub[0].getHexStringValue(),this.n=L(e,16),i=n.sub[1].getHexStringValue(),this.e=parseInt(i,16)}return!0}catch(t){return!1}},e.prototype.getPrivateBaseKey=function(){var t={array:[new rt.asn1.DERInteger({int:0}),new rt.asn1.DERInteger({bigint:this.n}),new rt.asn1.DERInteger({int:this.e}),new rt.asn1.DERInteger({bigint:this.d}),new rt.asn1.DERInteger({bigint:this.p}),new rt.asn1.DERInteger({bigint:this.q}),new rt.asn1.DERInteger({bigint:this.dmp1}),new rt.asn1.DERInteger({bigint:this.dmq1}),new rt.asn1.DERInteger({bigint:this.coeff})]};return new rt.asn1.DERSequence(t).getEncodedHex()},e.prototype.getPrivateBaseKeyB64=function(){return p(this.getPrivateBaseKey())},e.prototype.getPublicBaseKey=function(){var t=new rt.asn1.DERSequence({array:[new rt.asn1.DERObjectIdentifier({oid:"1.2.840.113549.1.1.1"}),new rt.asn1.DERNull]}),e=new rt.asn1.DERSequence({array:[new rt.asn1.DERInteger({bigint:this.n}),new rt.asn1.DERInteger({int:this.e})]}),i=new rt.asn1.DERBitString({hex:"00"+e.getEncodedHex()});return new rt.asn1.DERSequence({array:[t,i]}).getEncodedHex()},e.prototype.getPublicBaseKeyB64=function(){return p(this.getPublicBaseKey())},e.wordwrap=function(t,e){if(!t)return t;var i="(.{1,"+(e=e||64)+"})( +|$\n?)|(.{1,"+e+"})";return t.match(RegExp(i,"g")).join("\n")},e.prototype.getPrivateKey=function(){var t="-----BEGIN RSA PRIVATE KEY-----\n";return(t+=e.wordwrap(this.getPrivateBaseKeyB64())+"\n")+"-----END RSA PRIVATE KEY-----"},e.prototype.getPublicKey=function(){var t="-----BEGIN PUBLIC KEY-----\n";return(t+=e.wordwrap(this.getPublicBaseKeyB64())+"\n")+"-----END PUBLIC KEY-----"},e.hasPublicKeyProperty=function(t){return(t=t||{}).hasOwnProperty("n")&&t.hasOwnProperty("e")},e.hasPrivateKeyProperty=function(t){return(t=t||{}).hasOwnProperty("n")&&t.hasOwnProperty("e")&&t.hasOwnProperty("d")&&t.hasOwnProperty("p")&&t.hasOwnProperty("q")&&t.hasOwnProperty("dmp1")&&t.hasOwnProperty("dmq1")&&t.hasOwnProperty("coeff")},e.prototype.parsePropertiesFrom=function(t){this.n=t.n,this.e=t.e,t.hasOwnProperty("d")&&(this.d=t.d,this.p=t.p,this.q=t.q,this.dmp1=t.dmp1,this.dmq1=t.dmq1,this.coeff=t.coeff)},e}(tt),at=i(155),ut=void 0!==at?null===(st=at.env)||void 0===st?void 0:"3.3.2":void 0;const ct=function(){function t(t){void 0===t&&(t={}),t=t||{},this.default_key_size=t.default_key_size?parseInt(t.default_key_size,10):1024,this.default_public_exponent=t.default_public_exponent||"010001",this.log=t.log||!1,this.key=null}return t.prototype.setKey=function(t){this.log&&this.key&&console.warn("A key was already set, overriding existing."),this.key=new ht(t)},t.prototype.setPrivateKey=function(t){this.setKey(t)},t.prototype.setPublicKey=function(t){this.setKey(t)},t.prototype.decrypt=function(t){try{return this.getKey().decrypt(g(t))}catch(t){return!1}},t.prototype.encrypt=function(t){try{return p(this.getKey().encrypt(t))}catch(t){return!1}},t.prototype.sign=function(t,e,i){try{return p(this.getKey().sign(t,e,i))}catch(t){return!1}},t.prototype.verify=function(t,e,i){try{return this.getKey().verify(t,g(e),i)}catch(t){return!1}},t.prototype.getKey=function(t){if(!this.key){if(this.key=new ht,t&&"[object Function]"==={}.toString.call(t))return void this.key.generateAsync(this.default_key_size,this.default_public_exponent,t);this.key.generate(this.default_key_size,this.default_public_exponent)}return this.key},t.prototype.getPrivateKey=function(){return this.getKey().getPrivateKey()},t.prototype.getPrivateKeyB64=function(){return this.getKey().getPrivateBaseKeyB64()},t.prototype.getPublicKey=function(){return this.getKey().getPublicKey()},t.prototype.getPublicKeyB64=function(){return this.getKey().getPublicBaseKeyB64()},t.version=ut,t}()})(),r.default})())); \ No newline at end of file diff --git a/apps/nps/0.29.21/web/static/js/language.js b/apps/nps/0.29.21/web/static/js/language.js new file mode 100644 index 0000000..1615f7c --- /dev/null +++ b/apps/nps/0.29.21/web/static/js/language.js @@ -0,0 +1,327 @@ +(function ($) { + function xml2json(Xml) { + var tempvalue, tempJson = {}; + $(Xml).each(function () { + var tagName = ($(this).attr('id') || this.tagName); + tempvalue = (this.childElementCount == 0) ? this.textContent : xml2json($(this).children()); + switch ($.type(tempJson[tagName])) { + case 'undefined': + tempJson[tagName] = tempvalue; + break; + case 'object': + tempJson[tagName] = Array(tempJson[tagName]); + case 'array': + tempJson[tagName].push(tempvalue); + } + }); + return tempJson; + } + + function setCookie(c_name, value, expiredays) { + var exdate = new Date(); + exdate.setDate(exdate.getDate() + expiredays); + document.cookie = c_name + '=' + escape(value) + ((expiredays == null) ? '' : ';expires=' + exdate.toGMTString()) + '; path=' + window.nps.web_base_url + '/;'; + } + + function getCookie(c_name) { + if (document.cookie.length > 0) { + c_start = document.cookie.indexOf(c_name + '='); + if (c_start != -1) { + c_start = c_start + c_name.length + 1; + c_end = document.cookie.indexOf(';', c_start); + if (c_end == -1) c_end = document.cookie.length; + return unescape(document.cookie.substring(c_start, c_end)); + } + } + return null; + } + + function setchartlang(langobj, chartobj) { + if ($.type(langobj) == 'string') return langobj; + if ($.type(langobj) == 'chartobj') return false; + var flag = true; + for (key in langobj) { + var item = key; + children = (chartobj.hasOwnProperty(item)) ? setchartlang(langobj[item], chartobj[item]) : setchartlang(langobj[item], undefined); + switch ($.type(children)) { + case 'string': + if ($.type(chartobj[item]) != 'string') continue; + case 'object': + chartobj[item] = (children['value'] || children); + default: + flag = false; + } + } + if (flag) { + return {'value': (langobj[languages['current']] || langobj[languages['default']] || 'N/A')} + } + } + + $.fn.cloudLang = function () { + $.ajax({ + type: 'GET', + url: window.nps.web_base_url + '/static/page/languages.xml?v=' + window.nps.version, + dataType: 'xml', + success: function (xml) { + languages['content'] = xml2json($(xml).children())['content']; + languages['menu'] = languages['content']['languages']; + languages['default'] = languages['content']['default']; + // languages['navigator'] = (getCookie('lang') || navigator.language || navigator.browserLanguage); + var navLang = (getCookie('lang') || navigator.language || navigator.browserLanguage || ''); + languages['navigator'] = navLang.startsWith('zh') ? 'zh-CN' : navLang; + for (var key in languages['menu']) { + $('#languagemenu').next().append('
  • ' + languages['menu'][key] + '
  • '); + if (key == languages['navigator']) languages['current'] = key; + } + $('#languagemenu').attr('lang', (languages['current'] || languages['default'])); + $('body').setLang(''); + + if ($.fn.selectpicker != null) { + $('.selectpicker').selectpicker('refresh'); + } + } + }); + }; + + $.fn.setLang = function (dom) { + languages['current'] = $('#languagemenu').attr('lang'); + if (dom == '') { + $('#languagemenu span').text(' ' + languages['menu'][languages['current']]); + if (languages['current'] != getCookie('lang')) setCookie('lang', languages['current']); + if ($("#table").length > 0) $('#table').bootstrapTable('refreshOptions', {'locale': languages['current']}); + } + $.each($(dom + ' [langtag]'), function (i, item) { + var index = $(item).attr('langtag'); + string = languages['content'][index.toLowerCase()]; + switch ($.type(string)) { + case 'string': + break; + case 'array': + string = string[Math.floor((Math.random() * string.length))]; + case 'object': + string = (string[languages['current']] || string[languages['default']] || null); + break; + default: + string = 'Missing language string "' + index + '"'; + $(item).css('background-color', '#ffeeba'); + } + if ($.type($(item).attr('placeholder')) == 'undefined') { + $(item).text(string); + } else { + $(item).attr('placeholder', string); + } + }); + + if (!$.isEmptyObject(chartdatas)) { + setchartlang(languages['content']['charts'], chartdatas); + for (var key in chartdatas) { + if ($('#' + key).length == 0) continue; + if ($.type(chartdatas[key]) == 'object') + charts[key] = echarts.init(document.getElementById(key)); + charts[key].setOption(chartdatas[key], true); + } + } + + if(window.hasOwnProperty('internationalized')){ + internationalized(languages['current']); + } + } + +})(jQuery); + +$(document).ready(function () { + const savedTheme = localStorage.getItem('nps-theme'); + const html = document.documentElement; + const icon = document.querySelector('#theme-toggle i'); + + if (savedTheme === 'dark') { + html.setAttribute('theme', 'dark-mode'); + icon.classList.remove('fa-moon'); + icon.classList.add('fa-sun'); + } else { + html.removeAttribute('theme'); + icon.classList.remove('fa-sun'); + icon.classList.add('fa-moon'); + } + $('body').cloudLang(); + $('body').on('click', 'li[lang]', function () { + $('#languagemenu').attr('lang', $(this).attr('lang')); + $('body').setLang(''); + }); +}); + +var languages = {}; +var charts = {}; +var chartdatas = {}; +var postsubmit; + +function langreply(langstr) { + var langobj = languages['content']['reply'][langstr.replace(/[\s,\.\?]*/g, "").toLowerCase()]; + if ($.type(langobj) == 'undefined') return langstr + langobj = (langobj[languages['current']] || langobj[languages['default']] || langstr); + return langobj +} + +function goback() { + history.back(); +} + +function submitform(action, url, postdata) { + postsubmit = false; + $.each(postdata, function (i, v) { + if (v['value']) { + v['value'] = v['value'].trim(); + } + }); + switch (action) { + case 'turn': + case 'clear': + case 'delete': + var langobj = languages['content']['confirm'][action]; + action = (langobj[languages['current']] || langobj[languages['default']] || 'Are you sure you want to ' + action + ' it?'); + if (!confirm(action)) return; + case 'start': + case 'stop': + postsubmit = true; + case 'add': + case 'edit': + $.ajax({ + type: "POST", + url: url, + data: postdata, + success: function (res) { + if (res.status) { + showMsg(langreply(res.msg), 'success', 1000, function() { + if (postsubmit) { + document.location.reload(); + } else { + window.location.href = document.referrer; + } + }); + } else { + showMsg(langreply(res.msg), 'error', 5000); + } + } + }); + return; + case 'global': + $.ajax({ + type: "POST", + url: url, + data: postdata, + success: function (res) { + if (res.status) { + showMsg(langreply(res.msg), 'success', 1000, function() { + document.location.reload(); + }); + } else { + showMsg(langreply(res.msg), 'error', 5000); + } + } + }); + } +} + +function changeunit(limit) { + var size = ""; + if (limit < 0.1 * 1024) { + size = limit.toFixed(2) + "B"; + } else if (limit < 0.1 * 1024 * 1024) { + size = (limit / 1024).toFixed(2) + "KB"; + } else if (limit < 0.1 * 1024 * 1024 * 1024) { + size = (limit / (1024 * 1024)).toFixed(2) + "MB"; + } else { + size = (limit / (1024 * 1024 * 1024)).toFixed(2) + "GB"; + } + + var sizeStr = size + ""; + var index = sizeStr.indexOf("."); + var dou = sizeStr.substr(index + 1, 2); + if (dou == "00") { + return sizeStr.substring(0, index) + sizeStr.substr(index + 3, 2); + } + return size; +} + +function oCopy(obj){ + var tempInput = document.createElement("input"); + document.body.appendChild(tempInput); + tempInput.value = obj.innerText || obj.textContent; + tempInput.select(); + document.execCommand('copy'); + document.body.removeChild(tempInput); + showMsg(langreply('Copied')); +} + +function copyText(text) { + const textarea = document.createElement("textarea"); + textarea.value = text; + document.body.appendChild(textarea); + textarea.select(); + document.execCommand("copy"); + document.body.removeChild(textarea); + showMsg(langreply('Copied')); +} + +function showMsg(text, type = 'success', dur = 1500, cb) { + var old = document.getElementById('wangmarket_loading'); + if (old) old.parentNode.removeChild(old); + var isLong = text && text.length > 5; + var svg = type === 'error' + ? '' + : ''; + var w = document.createElement('div'); + w.id = 'wangmarket_loading'; + w.style = 'position:fixed;top:0;z-index: 2147483647;width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center'; + w.innerHTML = + '
    ' + +'
    ' + +'
    '+svg+'
    ' + +'
    ' + + text + + '
    ' + +'
    ' + +'
    '; + document.body.appendChild(w); + setTimeout(function(){ + w.parentNode.removeChild(w); + if (typeof cb === 'function') cb(); + }, dur); +} + +function toggleTheme() { + const html = document.documentElement; + const icon = document.querySelector('#theme-toggle i'); + const isDark = html.getAttribute('theme') === 'dark-mode'; + + if (isDark) { + html.removeAttribute('theme'); + icon.classList.remove('fa-sun'); + icon.classList.add('fa-moon'); + localStorage.setItem('nps-theme', 'light'); + } else { + html.setAttribute('theme', 'dark-mode'); + icon.classList.remove('fa-moon'); + icon.classList.add('fa-sun'); + localStorage.setItem('nps-theme', 'dark'); + } +} + +function escapeHtml(str) { + return String(str).replace(/[&<>"']/g, function (s) { + return ({'&': '&', '<': '<', '>': '>', '"': '"', "'": '''})[s]; + }); +} + +function getBridgeMode(data) { + if (typeof data !== 'string') return ''; + const parts = data.split(',', 2); + const first = parts[0] || ''; + const second = parts[1] || ''; + const escapedFirst = escapeHtml(first).toUpperCase(); + const escapedSecond = escapeHtml(second).toUpperCase(); + if (!second || first === second) { + return escapedFirst; + } + return escapedSecond + ' → ' + escapedFirst; +} diff --git a/apps/nps/0.29.21/web/static/js/popper.min.js b/apps/nps/0.29.21/web/static/js/popper.min.js new file mode 100755 index 0000000..0f20d2a --- /dev/null +++ b/apps/nps/0.29.21/web/static/js/popper.min.js @@ -0,0 +1,5 @@ +/* + Copyright (C) Federico Zivolo 2017 + Distributed under the MIT License (license terms are at http://opensource.org/licenses/MIT). + */(function(e,t){'object'==typeof exports&&'undefined'!=typeof module?module.exports=t():'function'==typeof define&&define.amd?define(t):e.Popper=t()})(this,function(){'use strict';function e(e){return e&&'[object Function]'==={}.toString.call(e)}function t(e,t){if(1!==e.nodeType)return[];var o=getComputedStyle(e,null);return t?o[t]:o}function o(e){return'HTML'===e.nodeName?e:e.parentNode||e.host}function n(e){if(!e)return document.body;switch(e.nodeName){case'HTML':case'BODY':return e.ownerDocument.body;case'#document':return e.body;}var i=t(e),r=i.overflow,p=i.overflowX,s=i.overflowY;return /(auto|scroll)/.test(r+s+p)?e:n(o(e))}function r(e){var o=e&&e.offsetParent,i=o&&o.nodeName;return i&&'BODY'!==i&&'HTML'!==i?-1!==['TD','TABLE'].indexOf(o.nodeName)&&'static'===t(o,'position')?r(o):o:e?e.ownerDocument.documentElement:document.documentElement}function p(e){var t=e.nodeName;return'BODY'!==t&&('HTML'===t||r(e.firstElementChild)===e)}function s(e){return null===e.parentNode?e:s(e.parentNode)}function d(e,t){if(!e||!e.nodeType||!t||!t.nodeType)return document.documentElement;var o=e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_FOLLOWING,i=o?e:t,n=o?t:e,a=document.createRange();a.setStart(i,0),a.setEnd(n,0);var l=a.commonAncestorContainer;if(e!==l&&t!==l||i.contains(n))return p(l)?l:r(l);var f=s(e);return f.host?d(f.host,t):d(e,s(t).host)}function a(e){var t=1=o.clientWidth&&i>=o.clientHeight}),l=0i[e]&&!t.escapeWithReference&&(n=_(p[o],i[e]-('right'===e?p.width:p.height))),pe({},o,n)}};return n.forEach(function(e){var t=-1===['left','top'].indexOf(e)?'secondary':'primary';p=se({},p,s[t](e))}),e.offsets.popper=p,e},priority:['left','right','top','bottom'],padding:5,boundariesElement:'scrollParent'},keepTogether:{order:400,enabled:!0,fn:function(e){var t=e.offsets,o=t.popper,i=t.reference,n=e.placement.split('-')[0],r=X,p=-1!==['top','bottom'].indexOf(n),s=p?'right':'bottom',d=p?'left':'top',a=p?'width':'height';return o[s]r(i[s])&&(e.offsets.popper[d]=r(i[s])),e}},arrow:{order:500,enabled:!0,fn:function(e,o){var i;if(!F(e.instance.modifiers,'arrow','keepTogether'))return e;var n=o.element;if('string'==typeof n){if(n=e.instance.popper.querySelector(n),!n)return e;}else if(!e.instance.popper.contains(n))return console.warn('WARNING: `arrow.element` must be child of its popper element!'),e;var r=e.placement.split('-')[0],p=e.offsets,s=p.popper,d=p.reference,a=-1!==['left','right'].indexOf(r),l=a?'height':'width',f=a?'Top':'Left',m=f.toLowerCase(),h=a?'left':'top',g=a?'bottom':'right',u=L(n)[l];d[g]-us[g]&&(e.offsets.popper[m]+=d[m]+u-s[g]),e.offsets.popper=c(e.offsets.popper);var b=d[m]+d[l]/2-u/2,w=t(e.instance.popper),y=parseFloat(w['margin'+f],10),E=parseFloat(w['border'+f+'Width'],10),v=b-e.offsets.popper[m]-y-E;return v=J(_(s[l]-u,v),0),e.arrowElement=n,e.offsets.arrow=(i={},pe(i,m,Math.round(v)),pe(i,h,''),i),e},element:'[x-arrow]'},flip:{order:600,enabled:!0,fn:function(e,t){if(k(e.instance.modifiers,'inner'))return e;if(e.flipped&&e.placement===e.originalPlacement)return e;var o=y(e.instance.popper,e.instance.reference,t.padding,t.boundariesElement),i=e.placement.split('-')[0],n=x(i),r=e.placement.split('-')[1]||'',p=[];switch(t.behavior){case le.FLIP:p=[i,n];break;case le.CLOCKWISE:p=q(i);break;case le.COUNTERCLOCKWISE:p=q(i,!0);break;default:p=t.behavior;}return p.forEach(function(s,d){if(i!==s||p.length===d+1)return e;i=e.placement.split('-')[0],n=x(i);var a=e.offsets.popper,l=e.offsets.reference,f=X,m='left'===i&&f(a.right)>f(l.left)||'right'===i&&f(a.left)f(l.top)||'bottom'===i&&f(a.top)f(o.right),g=f(a.top)f(o.bottom),b='left'===i&&h||'right'===i&&c||'top'===i&&g||'bottom'===i&&u,w=-1!==['top','bottom'].indexOf(i),y=!!t.flipVariations&&(w&&'start'===r&&h||w&&'end'===r&&c||!w&&'start'===r&&g||!w&&'end'===r&&u);(m||b||y)&&(e.flipped=!0,(m||b)&&(i=p[d+1]),y&&(r=K(r)),e.placement=i+(r?'-'+r:''),e.offsets.popper=se({},e.offsets.popper,S(e.instance.popper,e.offsets.reference,e.placement)),e=C(e.instance.modifiers,e,'flip'))}),e},behavior:'flip',padding:5,boundariesElement:'viewport'},inner:{order:700,enabled:!1,fn:function(e){var t=e.placement,o=t.split('-')[0],i=e.offsets,n=i.popper,r=i.reference,p=-1!==['left','right'].indexOf(o),s=-1===['top','left'].indexOf(o);return n[p?'left':'top']=r[o]-(s?n[p?'width':'height']:0),e.placement=x(t),e.offsets.popper=c(n),e}},hide:{order:800,enabled:!0,fn:function(e){if(!F(e.instance.modifiers,'hide','preventOverflow'))return e;var t=e.offsets.reference,o=T(e.instance.modifiers,function(e){return'preventOverflow'===e.name}).boundaries;if(t.bottomo.right||t.top>o.bottom||t.right + + + + 404 + + +404 Not Found + + \ No newline at end of file diff --git a/apps/nps/0.29.21/web/static/page/languages.xml b/apps/nps/0.29.21/web/static/page/languages.xml new file mode 100644 index 0000000..84e545c --- /dev/null +++ b/apps/nps/0.29.21/web/static/page/languages.xml @@ -0,0 +1,1372 @@ + + + + NPS + + en-US + + + 简体中文 + English + + + + NPS 管理 + NPS Admin + + + NPS 登录 + NPS Login + + + NPS 注册 + NPS Register + + + + 域名转发 + Host + + + TCP 隧道 + TCP + + + UDP 隧道 + UDP + + + HTTP 代理 + HTTP Proxy + + + Socks5 代理 + Socks5 Proxy + + + 混合代理 + Proxy + + + 私密代理 + Secret + + + P2P 连接 + P2P + + + 文件访问 + File Server + + + + 客户端列表 + Client List + + + 新增客户端 + Add Client + + + 编辑客户端 + Edit Client + + + 域名列表 + Host List + + + 新增域名 + Add Host + + + 编辑域名 + Edit Host + + + 隧道列表 - 客户端 ID: + Tunnels List - Client ID: + + + TCP 隧道列表 + TCP List + + + UDP 隧道列表 + UDP List + + + HTTP 代理列表 + HTTP Proxy List + + + Socks5 代理列表 + Socks5 Proxy List + + + 混合代理列表 + Mix Proxy List + + + 私密代理列表 + Secret List + + + P2P 连接列表 + P2P List + + + 文件代理列表 + File Server List + + + 新增 + Add + + + 编辑 + Edit + + + 客户端地址 + Client Address + + + 本地地址 + Local Address + + + 新增 + Add + + + 取消 + Cancel + + + 流量清零 + Clear Traffic + + + 管理员 + Admin + + + 所有 + All + + + 带宽 + Bandwidth + + + Basic 认证密码 + Basic Authentication Password + + + Basic 认证用户名 + Basic Authentication Username + + + 是否为HTTP + Is HTTP + + + 桥接模式 + Bridging Mode + + + 客户端 ID + Client ID + + + 选择一个客户端 + Select a client + + + 客户端状态 + Client Status + + + 客户端 + Client + + + 关闭 + Close + + + 访问端命令 (HTTP|Socks5) + Access Command (HTTP|Socks5) + + + 访问端命令 (透明代理) + Access Command (Transparent proxy) + + + 访问端命令 (TCP|UDP) + Access Command (TCP|UDP) + + + 访问端命令 + Access Command + + + 快捷启动命令 + Quickly Command + + + 客户端命令 + Command + + + TCP 启动命令 + TCP Command + + + KCP 启动命令 + KCP Command + + + TLS 启动命令 + TLS Command + + + WS 启动命令 + WS Command + + + WSS 启动命令 + WSS Command + + + TCP 端口 + TCP Port + + + KCP 端口 + KCP Port + + + TLS 端口 + TLS Port + + + WS 端口 + WS Port + + + WSS 端口 + WSS Port + + + TCP / TLS 端口 + TCP / TLS Port + + + WS / WSS 端口 + WS / WSS Port + + + WebSocket 路径 + WebSocket Path + + + 在线时间 + Uptime + + + 压缩 + Compress + + + 配置信息 + Configuration Information + + + 允许客户端通过配置文件连接 + Allow client connect by config file + + + 客户端连接端口 + Client connection port + + + 连接数 (已建立) + Connections (establish) + + + 连接 + Connect + + + 版权所有 + Copyright + + + 处理器 + CPU + + + 加密 + Crypt + + + 当前连接数 + Current Connections + + + 仪表盘 + Dashboard + + + 全局参数 + Global Params + + + 出口流量 + Export Flow + + + + False + + + 流量限制 + Flow Limit + + + 时间限制 + Time Limit + + + 进入 + Go + + + 使用说明 + Manual + + + 域名 + Host + + HTTP + + + HTTP 端口 + HTTP Port + + + HTTP / HTTPS 端口 + HTTP / HTTPS Port + + + HTTPS 证书(pem格式) + HTTPS Cert + + HTTPS + + + 由后端处理HTTPS (仅转发) + Handle HTTPS by the backend (only forwarding) + + + HTTPS仅转发 + HTTPS only forwarding + + + 自动HTTPS (301) + Auto HTTPS (301) + + + 自动HTTPS + Auto HTTPS + + + 自动证书 + Auto SSL + + + 自动修复 CORS + Auto CORS + + + 自动CORS + Auto CORS + + + 兼容模式 + Compat Mode + + + HTTPS 密钥(key格式) + HTTPS Key + + + HTTPS 端口 + HTTPS Port + + + 唯一标识密钥 + Unique identification Key + + ID + + + 流入带宽 + In + + + 入口流量 + Inlet Flow + + + 总流量 + Total Flow + + + IP 限制 + IP Restriction + + + 负载 + Load + + + 本地路径 + Local Path + + + 路径 + Path + + + 路径重写 + Path Rewrite + + + 登录 + Login + + + 日志级别 + Log Level + + + 退出 + Logout + + + 清空流量统计 + Reset Traffic Statistics + + + 最大连接数 + Maximum Connections + + + 最大隧道数 + Maximum Tunnels + + + 内存 + Memory + + + + No + + + 离线 + Offline + + + 在线客户端 + Online Clients + + + 在线 + Online + + + 开放 + Open + + + 选项 + Option + + + 流出带宽 + Out + + + P2P 端口 + P2P Port + + + P2P 地址 + P2P Address + + + 密码 + Password + + + 验证码 + Captcha + + + 端口 + Port + + + 密码认证 + Password Authentication + + + 访问地址 + Access address + + + 代理协议 (Proxy Protocol) + Proxy Protocol + + + 关闭 + Disable + + + V1-字符串格式 + Proxy Protocol v1 + + + V2-二进制格式 + Proxy Protocol v2 + + + 代理到服务器本地 + Proxy to server local + + + 公钥 + Public vkey + + + 带宽限制 + Rate Limit + + + 更多说明 + Read More + + + 注册 + Register + + + 备注 + Remark + + + 请求头部信息修改 + Header Modify + + + 请求域名信息修改 + Host Modify + + + 运行状态 + Run Status + + + 保存 + Save + + + 开启 + Start + + + 关闭 + Stop + + + 删除 + Delete + + + 执行 + Execute + + + 多选操作 + Choose Action + + + 清空流量 + Clear Flow + + + 重置流量限制 + Clear Flow Limit + + + 重置时间限制 + Clear Time Limit + + + 模式 + Scheme + + + 服务端 IP + Server IP + + + 服务端 IPv4 + Server IPv4 + + + 服务端 IPv6 + Server IPv6 + + + 服务端端口(留空自动生成) + Server Port + + + 服务端版本 + Server Version + + + 最低支持版本 + Minimum Supported Version + + + 查看 + Show + + + 网速 + Speed + + + 连接数 + Connections + + + 状态 + Status + + + HTTP 状态 + HTTP Status + + + Socks5 状态 + Socks5 Status + + + 启用 HTTP 代理 + Enable HTTP Proxy + + + 启用 Socks5 代理 + Enable Socks5 Proxy + + + 访问前缀 + Strip Prefix + + + 交换空间 + Swap Memory + + + 系统信息 + System Information + + + 系统 + System + + + 目标 (IP:端口) + Target (IP:Port) + + + 目标类型 (HTTP/HTTPS) + Target Type (HTTP/HTTPS) + + + 目标类型 + Target Type + + + TCP 连接 (已建立) + TCP Connections (Establish) + + + 当前TCP连接数 + TCP Connections + + + 客户端总数 + Total Clients + + + 流量数据持久化 + Traffic data persistence + + + 流量统计 + Traffic Statistics + + + + True + + + HTTPS + HTTPS + + + HTTP + HTTP + + + 隧道 + Tunnel + + + 连接类型 + Connect Type + + + UDP 连接 (已建立) + UDP Connections (Establish) + + + 单位 + Flow Limit + + + URL 路由 + URL Router + + + URL 重写 + URL Rewrite + + + 使用场景 + Use Case + + + 用户名 + Username + + + 用户 + User + + + 唯一验证密钥 + Unique verify Key + + + 版本 + Version + + + 虚拟内存 + Virtual Memory + + + Web登陆密码 + Password of Web Login + + + Web登陆用户名 + Username of Web Login + + + 欢迎使用 + Welcome to use + + + + Yes + + + + + 全局参数 + Global Param + + + + 唯一值,不填将自动生成 + Unique, non-filling will be generated automatically + + + 随便填,自动识别(支持时间戳、注意系统时区),留空关闭。例如:2025-01-01(指定东八时区:2025-01-01 00:00:00 +0800 CST) + Fill freely, automatically recognized. Leave empty to disable. For example: 2025-01-01 or 2025-01-01 00:00:00 +0800 CST + + + 通提供一个公网可访问的本地文件服务,此模式仅客户端使用配置文件模式方可启动。 + Provide a local file service accessible to the public network, which can only be started by the client using the profile mode. + + + 将公网服务器1.1.1.1的8004端口作为HTTP代理,访问内网网站。 + Use port 8004 of public server 1.1.1.1 as HTTP proxy to visit intranet site. + + + 流量不经过公网服务器,受nat类型影响较大,不能保证100%成功,支持大部分nat类型。 + The traffic does not pass through the public network server, which is greatly affected by the NAT type, and cannot guarantee 100% success. Most NAT types are supported. A client is also required to provide a port for access to the access side. + + + 无需新增端口,实现访问内网服务器10.1.50.2的22端口,可防止其他人连接。还需要一个客户端作为访问端提供一个端口进行访问。 + There is no need to add a new port to access port 22 of intranet server 10.1.50.2, which can prevent other people from connecting. A client is also required to provide a port for access to the access side. + + + 将公网服务器1.1.1.1的8003端口作为SOCKS5代理,访问内网任意设备或者资源。 + Use port 8003 of public server 1.1.1.1 as Socks5 proxy to access any device or resource in the Intranet. + + + 将公网服务器1.1.1.1的8003端口作为HTTP/SOCKS5代理,访问内网任意设备或者资源。 + Use port 8003 of public server 1.1.1.1 as HTTP/Socks5 proxy to access any device or resource in the Intranet. + + + 通过公网服务器1.1.1.1的8001端口,连接内网机器10.1.50.101的22端口,实现SSH连接。 + Connect port 8001 of public server 1.1.1.1 to port 22 of Intranet machine 10.1.50.101 to realize SSH connection. + + + 通过公网服务器1.1.1.1的53端口,访问内网机器10.1.50.101的53端口,使用DNS服务。 + Through port 53 of public server 1.1.1.1, access port 53 of Intranet machine 10.1.50.101, and use DNS service. + + + 创建账号以进行管理 + Create account to see it in action. + + + 已经有帐号了? + Already have an account? + + + 冒号分割,多个头部请填写多行 + Colon separated, multiple lines please fill in + + + P2P连接和私密代理模式需要 + When P2P or Secret + + + 协议支持全面,兼容几乎所有常用协议,例如tcp、udp、http(s)、socks5、p2p、http代理... + Comprehensive protocol support, compatible with almost all commonly used protocols, such as tcp, udp, http(s), socks5, p2p, http proxy ... + + + 全平台兼容(linux、windows、macos、群辉等),支持一键安装为系统服务 + Full platform compatibility (linux, windows, macos, Qunhui, etc.), support installation as a system service simply. + + + 控制全面,同时支持服务端和客户端控制 + Comprehensive control, both client and server control are allowed. + + + https集成,支持将后端代理和web服务转成https,同时支持多证书 + Https integration, support to convert backend proxy and web services to https, and support multiple certificates. + + + 操作简单,只需简单的配置即可在web ui上完成其余操作 + Just simple configuration on web ui can complete most requirements. + + + 展示信息全面,流量、系统信息、即时带宽、客户端版本等 + Complete information display, such as traffic, system information, real-time bandwidth, client version, etc. + + + 扩展功能强大,该有的都有了(缓存、压缩、加密、流量限制、带宽限制、端口复用等等) + Powerful extension functions, everything is available (cache, compression, encryption, traffic limit, bandwidth limit, port reuse, etc.) + + + 域名转发具备自定义header、404页面配置、host修改、站点保护、URL路由、泛域名转发等功能 + Domain name resolution has functions such as custom headers, 404 page configuration, host modification, site protection, URL routing, and pan-resolution. + + + 服务端支持多用户和用户注册功能 + Multi-user and user registration support on server. + + + 还没有有帐号? + Do not have an account? + + + 选中时清空当前流量统计信息 + Clear current traffic statistics when selected + + + 仅限Socks5、Web、HTTP转发代理 + Only socks5 , web, HTTP forward proxy + + + 注册到 NPS + Register to NPS + + + 例如 a.proxy.com + Such as a.proxy.com + + + 例如 0.0.0.0 + Such as 0.0.0.0 + + + 例如 10.1.50.203:80 10.1.50.202:80 + Such as 10.1.50.203:80 10.1.50.202:80 + + + 例如 用户1=密码1 用户2=密码2 + Such as User1=Password1 User2=Password2 + + + 例如 /tmp + Such as /tmp + + + 例如 8024 + Such as 8024 + + + 例如 static + Such as static + + + 一款轻量级、高性能、功能强大的内网穿透代理服务器 + A lightweight, high-performance, powerful intranet reverse proxy server + + + 分行填写多个目标可实现负载均衡 + Line break if load balancing + + + 代理到本地可以只填写端口号,只有TCP模式支持负载均衡 + Can only fill in ports if it is local machine proxy, only tcp supports load balancing + + + 密码认证留空不启用 + Leave the password authentication blank to disable it + + + 支持填写证书路径或证书文本内容(支持拖拽填写),证书文件格式为:xxxx.pem + Supports entering the certificate path or certificate text content (drag-and-drop supported). The certificate file format should be: xxxx.pem + + + 支持填写私钥路径或私钥文本内容(支持拖拽填写),证书秘钥格式为:xxxx.key + Supports entering the private key path or private key text content (drag-and-drop supported). The private key file format should be: xxxx.key + + + 留空表示不受限制 + Empty means to be unrestricted + + + 路径重写(留空关闭) + Path rewrite prefix (leave blank to disable) + + + IP黑名单(防暴力破解) + IP Black List + + + 全局IP黑名单(防暴力破解) + Global IP Black List + + + 例如 10.1.50.203 10.1.50.202 + Such as 10.1.50.203 10.1.50.202 + + + 一行一个,IPV4,不支持范围匹配 + IPV4 + + + IP黑名单 + IP Black List + + + 创建时间 + Create Time + + + 上次在线时间 + Last Online Time + + + 提示信息 + Alert Message + + + 确定 + Confirm + + + + + 你确定你要切换它吗? + Are you sure you want to toggle it? + + + 你确定你要清空它吗? + Are you sure you want to clear it? + + + 你确定你要删除它吗? + Are you sure you want to delete it? + + + 你确定你要启动它吗? + Are you sure you want to start it? + + + 你确定你要停止它吗? + Are you sure you want to stop it? + + + + + + 添加错误,找不到客户端 + Add error, the client can not be found + + + 添加失败,域名已存在 + Add fail, host has exist + + + 添加成功 + Add Success + + + 删除出错 + Delete Error + + + 删除成功 + Delete Success + + + 域名已存在 + Host has exist + + + 修改出错,客户端不存在 + Modified error, the client is not exist + + + 修改失败 + Modified Fail + + + 修改成功 + Modified Success + + + 保存成功 + Save Success + + + 启动出错 + Start Error + + + 启动成功 + Start Success + + + 停止出错 + Stop Error + + + 停止成功 + Stop Success + + + 隧道数量超过限制 + The number of tunnels exceeds the limit + + + 隧道模式有误。 + The mode is not correct. + + + 无法打开端口,因为它可能已被占用或不再被允许。 + The port cannot be opened because it may has been occupied or is no longer allowed. + + + 无法打开端口,因为它可能已被占用或不再被允许。 + The port cannot be opened because it may has been occupied or is no longer allowed. + + + 唯一验证密钥重复,请重新设置 + Unique verify key duplicate, please reset + + + Web登陆用户名重复,请重新设置 + Web login username duplicate, please reset + + + 验证码错误,请重新获取并重试 + The verification code is wrong, please get it again and try again + + + 解密错误 + Decrypt Error + + + 无效的随机值 + Invalid Nonce + + + 时间戳已过期 + Timestamp Expired + + + 登录成功 + Login Success + + + 用户名或密码错误 + Username or password incorrect + + + 不允许注册 + Register is not allowed + + + 请检查您的输入 + Please check your input + + + 注册成功 + Register Success + + + 已复制 + Copied + + + + + + + + + 平均负载 1 + Load AVG 1 + + + + + 平均负载 5 + Load AVG 5 + + + + + 平均负载 15 + Load AVG 15 + + + + + + + + + 处理器 + CPU + + + + + + + + + 虚拟内存 + Virtual Memory + + + + + 交换空间 + Swap Memory + + + + + + + + TCP + + + UDP + + + + + + + + 入口 + In + + + + + 出口 + Out + + + + + + + + + 出口 + Out + + + 入口 + In + + + + + + + 流量统计 + Traffic + + + + + 入口 + In + + + + + 出口 + Out + + + + + + + + + + + 域名转发 + HOST + + + TCP 隧道 + TCP + + + UDP 隧道 + UDP + + + HTTP 代理 + HTTP + + + SOCKS 代理 + SOCKS 5 + + + 私密代理 + Secret + + + P2P 连接 + P2P + + + + + + + 协议类型 + Scheme Type + + + + + 域名转发 + HOST + + + + + TCP 隧道 + TCP + + + + + UDP 隧道 + UDP + + + + + HTTP 代理 + HTTP + + + + + SOCKS 代理 + SOCKS 5 + + + + + 私密代理 + Secret + + + + + P2P 连接 + P2P + + + + + + + + + + + 没有选中任何项 + Nothing selected + + + 没有找到匹配项 + No results match {0} + + + diff --git a/apps/nps/0.29.21/web/static/webfonts/SourceCodePro.otf b/apps/nps/0.29.21/web/static/webfonts/SourceCodePro.otf new file mode 100644 index 0000000..16c7b0b Binary files /dev/null and b/apps/nps/0.29.21/web/static/webfonts/SourceCodePro.otf differ diff --git a/apps/nps/0.29.21/web/static/webfonts/fa-solid-900.eot b/apps/nps/0.29.21/web/static/webfonts/fa-solid-900.eot new file mode 100644 index 0000000..550f8f0 Binary files /dev/null and b/apps/nps/0.29.21/web/static/webfonts/fa-solid-900.eot differ diff --git a/apps/nps/0.29.21/web/static/webfonts/fa-solid-900.svg b/apps/nps/0.29.21/web/static/webfonts/fa-solid-900.svg new file mode 100755 index 0000000..6933b2b --- /dev/null +++ b/apps/nps/0.29.21/web/static/webfonts/fa-solid-900.svg @@ -0,0 +1,4700 @@ + + + + + +Created by FontForge 20190801 at Tue Feb 4 18:05:39 2020 + By Robert Madole +Copyright (c) Font Awesome + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/nps/0.29.21/web/static/webfonts/fa-solid-900.ttf b/apps/nps/0.29.21/web/static/webfonts/fa-solid-900.ttf new file mode 100644 index 0000000..9dd8c7f Binary files /dev/null and b/apps/nps/0.29.21/web/static/webfonts/fa-solid-900.ttf differ diff --git a/apps/nps/0.29.21/web/static/webfonts/fa-solid-900.woff b/apps/nps/0.29.21/web/static/webfonts/fa-solid-900.woff new file mode 100644 index 0000000..3c9ef93 Binary files /dev/null and b/apps/nps/0.29.21/web/static/webfonts/fa-solid-900.woff differ diff --git a/apps/nps/0.29.21/web/static/webfonts/fa-solid-900.woff2 b/apps/nps/0.29.21/web/static/webfonts/fa-solid-900.woff2 new file mode 100644 index 0000000..ba7507b Binary files /dev/null and b/apps/nps/0.29.21/web/static/webfonts/fa-solid-900.woff2 differ diff --git a/apps/nps/0.29.21/web/static/webfonts/glyphicons-halflings-regular.eot b/apps/nps/0.29.21/web/static/webfonts/glyphicons-halflings-regular.eot new file mode 100644 index 0000000..b93a495 Binary files /dev/null and b/apps/nps/0.29.21/web/static/webfonts/glyphicons-halflings-regular.eot differ diff --git a/apps/nps/0.29.21/web/static/webfonts/glyphicons-halflings-regular.svg b/apps/nps/0.29.21/web/static/webfonts/glyphicons-halflings-regular.svg new file mode 100644 index 0000000..94fb549 --- /dev/null +++ b/apps/nps/0.29.21/web/static/webfonts/glyphicons-halflings-regular.svg @@ -0,0 +1,288 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/apps/nps/0.29.21/web/static/webfonts/glyphicons-halflings-regular.ttf b/apps/nps/0.29.21/web/static/webfonts/glyphicons-halflings-regular.ttf new file mode 100644 index 0000000..1413fc6 Binary files /dev/null and b/apps/nps/0.29.21/web/static/webfonts/glyphicons-halflings-regular.ttf differ diff --git a/apps/nps/0.29.21/web/static/webfonts/glyphicons-halflings-regular.woff b/apps/nps/0.29.21/web/static/webfonts/glyphicons-halflings-regular.woff new file mode 100644 index 0000000..9e61285 Binary files /dev/null and b/apps/nps/0.29.21/web/static/webfonts/glyphicons-halflings-regular.woff differ diff --git a/apps/nps/0.29.21/web/static/webfonts/glyphicons-halflings-regular.woff2 b/apps/nps/0.29.21/web/static/webfonts/glyphicons-halflings-regular.woff2 new file mode 100644 index 0000000..64539b5 Binary files /dev/null and b/apps/nps/0.29.21/web/static/webfonts/glyphicons-halflings-regular.woff2 differ diff --git a/apps/nps/0.29.21/web/views/client/add.html b/apps/nps/0.29.21/web/views/client/add.html new file mode 100644 index 0000000..5412bb1 --- /dev/null +++ b/apps/nps/0.29.21/web/views/client/add.html @@ -0,0 +1,140 @@ +
    +
    +
    +

    +
    +
    +
    + +
    + +
    +
    + {{if eq true .allow_flow_limit}} +
    + +
    + + : M +
    +
    + {{end}} + {{if eq true .allow_time_limit}} +
    + +
    + + +
    +
    + {{end}} + {{if eq true .allow_rate_limit}} +
    + +
    + + : KB/S +
    +
    + {{end}} + {{if eq true .allow_connection_num_limit}} +
    + +
    + +
    +
    + {{end}} + {{if eq true .allow_tunnel_num_limit}} +
    + +
    + +
    +
    + {{end}} +
    + +
    + + +
    +
    +
    + +
    + + +
    +
    +
    + +
    + + +
    +
    + {{if eq true .allow_user_login}} +
    + +
    + +
    +
    +
    + +
    + +
    +
    + {{end}} +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + + +
    +
    +
    +
    +
    + + +
    +
    +
    +
    +
    +
    +
    diff --git a/apps/nps/0.29.21/web/views/client/edit.html b/apps/nps/0.29.21/web/views/client/edit.html new file mode 100644 index 0000000..506ac84 --- /dev/null +++ b/apps/nps/0.29.21/web/views/client/edit.html @@ -0,0 +1,156 @@ +
    +
    +
    +

    +
    +
    + +
    + +
    + +
    +
    + {{if eq true .isAdmin}} +
    + +
    + + +
    +
    + {{if eq true .allow_flow_limit}} +
    + +
    + + : M +
    +
    + {{end}} + {{if eq true .allow_time_limit}} +
    + +
    + + +
    +
    + {{end}} + {{if eq true .allow_rate_limit}} + +
    + +
    + + : KB/S +
    +
    + {{end}} + {{if eq true .allow_connection_num_limit}} + +
    + +
    + +
    +
    + {{end}} + {{if eq true .allow_tunnel_num_limit}} +
    + +
    + +
    +
    + {{end}} + {{end}} +
    + +
    + + +
    +
    +
    + +
    + + +
    +
    + {{if eq true .isAdmin}} +
    + +
    + + +
    +
    + {{end}} + {{if eq true .allow_user_login}} + {{if or (eq true .allow_user_change_username) (eq true .isAdmin)}} +
    + +
    + +
    +
    + {{end}} +
    + +
    + +
    +
    + {{end}} +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + + +
    +
    +
    +
    +
    + + +
    +
    +
    +
    +
    +
    +
    diff --git a/apps/nps/0.29.21/web/views/client/list.html b/apps/nps/0.29.21/web/views/client/list.html new file mode 100644 index 0000000..0b72d3d --- /dev/null +++ b/apps/nps/0.29.21/web/views/client/list.html @@ -0,0 +1,345 @@ +
    +
    +
    +
    +
    +
    + +
    + {{if eq true .isAdmin}} +
    +
    +
    + +
    +
    +
    +
    + {{end}} +
    +
    +
    +
    +
    +
    +
    + + diff --git a/apps/nps/0.29.21/web/views/global/index.html b/apps/nps/0.29.21/web/views/global/index.html new file mode 100644 index 0000000..eca2daa --- /dev/null +++ b/apps/nps/0.29.21/web/views/global/index.html @@ -0,0 +1,38 @@ +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    + + +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    + + diff --git a/apps/nps/0.29.21/web/views/index/add.html b/apps/nps/0.29.21/web/views/index/add.html new file mode 100644 index 0000000..e8ecb10 --- /dev/null +++ b/apps/nps/0.29.21/web/views/index/add.html @@ -0,0 +1,255 @@ +
    +
    +
    +

    +
    +
    +
    + +
    + : + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    + {{if eq true .allow_multi_ip}} +
    + +
    + +
    +
    + {{end}} +
    + +
    + +
    +
    +
    + +
    + + +
    +
    + + +
    +
    + {{if eq true .allow_flow_limit}} +
    + +
    + + : M +
    +
    + {{end}} + {{if eq true .allow_time_limit}} +
    + +
    + + +
    +
    + {{end}} +
    + +
    + +
    +
    + {{if eq true .allow_local_proxy}} +
    + +
    + +
    +
    + {{end}} +
    + +
    + + +
    +
    +
    + +
    + + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + + +
    +
    +
    +
    +
    + + +
    +
    +
    +
    +
    +
    +
    + + diff --git a/apps/nps/0.29.21/web/views/index/edit.html b/apps/nps/0.29.21/web/views/index/edit.html new file mode 100644 index 0000000..5519461 --- /dev/null +++ b/apps/nps/0.29.21/web/views/index/edit.html @@ -0,0 +1,266 @@ +
    +
    +
    +

    +
    +
    + +
    + +
    + : + + + + + + + + + + + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    + {{if eq true .allow_multi_ip}} +
    + +
    + +
    +
    + {{end}} +
    + +
    + +
    +
    +
    + +
    + + +
    +
    + + +
    +
    +
    + +
    + + +
    +
    + {{if eq true .allow_flow_limit}} +
    + +
    + + : M +
    +
    + {{end}} + {{if eq true .allow_time_limit}} +
    + +
    + + +
    +
    + {{end}} +
    + +
    + +
    +
    + {{if eq true .allow_local_proxy}} +
    + +
    + +
    +
    + {{end}} +
    + +
    + + +
    +
    +
    + +
    + + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + + +
    +
    +
    +
    +
    + + + +
    +
    +
    +
    +
    +
    +
    + + diff --git a/apps/nps/0.29.21/web/views/index/hadd.html b/apps/nps/0.29.21/web/views/index/hadd.html new file mode 100644 index 0000000..28bb467 --- /dev/null +++ b/apps/nps/0.29.21/web/views/index/hadd.html @@ -0,0 +1,329 @@ +
    +
    +
    +

    +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    + {{if eq true .allow_flow_limit}} +
    + +
    + + : M +
    +
    + {{end}} + {{if eq true .allow_time_limit}} +
    + +
    + + +
    +
    + {{end}} +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    + {{if eq true .allow_local_proxy}} +
    + +
    + +
    +
    + {{end}} +
    + +
    + + +
    +
    +
    + +
    + +
    +
    +
    + +
    + + +
    +
    + +
    + +
    + +
    +
    +
    +
    +
    + + +
    +
    +
    +
    +
    +
    +
    + + \ No newline at end of file diff --git a/apps/nps/0.29.21/web/views/index/hedit.html b/apps/nps/0.29.21/web/views/index/hedit.html new file mode 100644 index 0000000..1b7610c --- /dev/null +++ b/apps/nps/0.29.21/web/views/index/hedit.html @@ -0,0 +1,360 @@ +
    +
    +
    +

    +
    +
    + +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + + +
    +
    + {{if eq true .allow_flow_limit}} +
    + +
    + + : M +
    +
    + {{end}} + {{if eq true .allow_time_limit}} +
    + +
    + + +
    +
    + {{end}} +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    +
    + +
    + +
    +
    + {{if eq true .allow_local_proxy}} +
    + +
    + +
    +
    + {{end}} +
    + +
    + + +
    +
    +
    + +
    + +
    +
    +
    + +
    + + +
    +
    + +
    + +
    + +
    +
    +
    +
    +
    + + + +
    +
    +
    +
    +
    +
    +
    + + \ No newline at end of file diff --git a/apps/nps/0.29.21/web/views/index/help.html b/apps/nps/0.29.21/web/views/index/help.html new file mode 100644 index 0000000..6167085 --- /dev/null +++ b/apps/nps/0.29.21/web/views/index/help.html @@ -0,0 +1,153 @@ +
    +
    +
    + + + +
    +
    +
    +
    + +
    +
    +

    域名代理模式

    +

    + 适用范围: 小程序开发、微信公众号开发、产品演示 +

    +

    + 假设场景: +

  • 有一个域名proxy.com,有一台公网机器ip为{{.ip}}
  • +
  • 两个内网开发站点127.0.0.1:81,127.0.0.1:82
  • +
  • 想通过a.proxy.com访问127.0.0.1:81,通过b.proxy.com访问127.0.0.1:82
  • +

    +

    使用步骤:

    +
      +
    • 将*.proxy.com解析到公网服务器{{.ip}}
    • +
    • 在客户端管理中创建一个客户端,记录下验证密钥
    • +
    • + 点击该客户端的域名管理,添加两条规则规则:1、域名:a.proxy.com,内网目标:127.0.0.1:81,2、域名:b.proxy.com,内网目标:127.0.0.1:82 +
    • +
    • 内网客户端运行 +
      ./npc -server={{.ip}}:{{.p}} -vkey=客户端的密钥
      +
    • +
    • 现在访问a.proxy.com,b.proxy.com即可成功
    • +
    +

    注:上文中提到公网ip({{.ip}})为系统自动识别,如果是在测试环境中请自行对应,如需使用https请在配置文件中将https端口设置为443,和将对应的证书文件路径添加到配置文件中 +

    +
    +
    +
    +
    +
    +
    +

    tcp隧道模式

    +

    + 适用范围: ssh、远程桌面等tcp连接场景 +

    +

    + 假设场景: 想通过访问公网服务器{{.ip}}的8001端口,连接内网机器10.1.50.101的22端口,实现ssh连接 +

    +

    使用步骤:

    +
      +
    • 在客户端管理中创建一个客户端,记录下验证密钥
    • +
    • 内网客户端运行 +
      ./npc -server={{.ip}}:{{.p}} -vkey=客户端的密钥
      +
      +
    • +
    • + 在该客户端隧道管理中添加一条tcp隧道,填写监听的端口(8001)、内网目标ip和目标端口(10.1.50.101:22),选择压缩方式,保存。 +
    • +
    • + 访问公网服务器ip({{.ip}}),填写的监听端口(8001),相当于访问内网ip(10.1.50.101):目标端口(22),例如:ssh -p 8001 root@{{.ip}} +
    • +
    +

    注:上文中提到公网ip({{.ip}})为系统自动识别,如果是在测试环境中请自行对应,默认内网客户端已经启动

    +
    +
    +
    +
    +

    udp隧道模式

    +

    + 适用范围: 内网dns解析等udp连接场景 +

    +

    + 假设场景: 内网有一台dns(10.1.50.102:53),在非内网环境下想使用该dns,公网服务器为{{.ip}} +

    +

    使用步骤:

    +
      +
    • 在客户端管理中创建一个客户端,记录下验证密钥
    • +
    • 内网客户端运行 +
      ./npc -server={{.ip}}:{{.p}} -vkey=客户端的密钥
      +
      +
    • +
    • + 在该客户端的隧道管理中添加一条udp隧道,填写监听的端口(53)、内网目标ip和目标端口(10.1.50.102:53),选择压缩方式,保存。 +
    • +
    • 修改本机dns为{{.ip}},则相当于使用10.1.50.202作为dns服务器
    • +
    +

    注:上文中提到公网ip({{.ip}})为系统自动识别,如果是在测试环境中请自行对应,默认内网客户端已经启动

    +
    +
    +
    +
    +
    +
    +

    socks5代理模式

    +

    + 适用范围: 在外网环境下如同使用vpn一样访问内网设备或者资源 +

    +

    + 假设场景: 想将公网服务器{{.ip}}的8003端口作为socks5代理,达到访问内网任意设备或者资源的效果 +

    +

    使用步骤:

    +
      +
    • 在客户端管理中创建一个客户端,记录下验证密钥
    • +
    • 内网客户端运行 +
      ./npc -server={{.ip}}:{{.p}} -vkey=客户端的密钥
      +
      +
    • +
    • + 在该客户端隧道管理中添加一条socks5代理,填写监听的端口(8003),验证用户名和密码自行选择(建议先不填,部分客户端不支持,proxifer支持),选择压缩方式,保存。 +
    • +
    • + 在外网环境的本机配置socks5代理,ip为公网服务器ip({{.ip}}),端口为填写的监听端口(8003),即可畅享内网了 +
    • +
    +

    注:上文中提到公网ip({{.ip}})为系统自动识别,如果是在测试环境中请自行对应,默认内网客户端已经启动

    +
    +
    +
    +
    +

    http代理模式

    +

    + 适用范围: 在外网环境下访问内网站点 +

    +

    + 假设场景: 想将公网服务器{{.ip}}的8004端口作为http代理,访问内网网站 +

    +

    使用步骤:

    +
      +
    • 在客户端管理中创建一个客户端,记录下验证密钥
    • +
    • 内网客户端运行 +
      ./npc -server={{.ip}}:{{.p}} -vkey=客户端的密钥
      +
      +
    • +
    • 在该客户端隧道管理中添加一条http代理,填写监听的端口(8004),选择压缩方式,保存。
    • +
    • 在外网环境的本机配置http代理,ip为公网服务器ip({{.ip}}),端口为填写的监听端口(8004),即可访问了
    • +
    +

    注:上文中提到公网ip({{.ip}})为系统自动识别,如果是在测试环境中请自行对应,默认内网客户端已经启动

    +
    +
    +
    +
    +

    单个客户端可以添加多条隧道或者域名解析

    +
    +
    +
    diff --git a/apps/nps/0.29.21/web/views/index/hlist.html b/apps/nps/0.29.21/web/views/index/hlist.html new file mode 100644 index 0000000..06b6b4d --- /dev/null +++ b/apps/nps/0.29.21/web/views/index/hlist.html @@ -0,0 +1,374 @@ +
    + +
    +
    +
    +
    +
    + + +
    +
    +
    + +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    + + diff --git a/apps/nps/0.29.21/web/views/index/index.html b/apps/nps/0.29.21/web/views/index/index.html new file mode 100644 index 0000000..d0bec75 --- /dev/null +++ b/apps/nps/0.29.21/web/views/index/index.html @@ -0,0 +1,936 @@ +
    + {{if eq false .isAdmin}} +
    +
    +
    +
    +
    +
    +
    +

    {{or .tcp_p "0"}} / {{or .tls_p "0"}}

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +

    {{or .kcp_p "0"}}

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +

    {{or .ws_p "0"}} / {{or .wss_p "0"}}

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +

    {{or .ws_path "/ws"}}

    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +

    {{.ip}}

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +

    {{.data.version}}

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +

    {{.data.minVersion}}

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +

    +
    +
    +
    +
    + {{end}} + + {{if eq true .isAdmin}} +
    +
    +
    +
    +
    +
    +
    +

    {{.data.clientCount}}

    +
    +
    +
    +
    +
    +
    + {{/*今日*/}} +
    +
    +
    +

    {{.data.clientOnlineCount}}

    + {{/*
    44%
    */}} + {{/*新访客*/}} +
    +
    +
    +
    +
    +
    +
    +
    +
    +

    {{.data.tcpCount}}

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +

    {{or .data.upTime ""}}

    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    + + + + + + + +
    +
    +
    +
      +
    • +
      +
      + +
      +
      + {{if index . "tcp_p"}}TCP:{{.tcp_p}} {{end}}{{if index . "kcp_p"}}KCP:{{.kcp_p}} {{end}}{{if index . "tls_p"}}TLS:{{.tls_p}} {{end}}{{if index . "ws_p"}}WS:{{.ws_p}} {{end}}{{if index . "wss_p"}}WSS:{{.wss_p}} {{end}}{{if index . "ws_path"}}Path:{{.ws_path}}{{end}} +
      +
      +
    • +
    • +
      +
      + +
      +
      + {{or .data.httpProxyPort "0"}} / {{or .data.httpsProxyPort "0"}} +
      +
      +
    • +
    • +
      +
      + +
      +
      + +
      +
      +
    • +
    • +
      +
      + +
      +
      + {{.data.flowStoreInterval}} +
      +
      +
    • +
    • +
      +
      + +
      +
      + {{.data.logLevel}} +
      +
      +
    • +
    • +
      +
      + +
      +
      + {{.data.p2pAddr}} +
      +
      +
    • +
    • +
      +
      + +
      +
      + {{.data.p2pIp}} | {{.data.serverIpv4}} | {{.data.serverIpv6}} +
      +
      +
    • +
    • +
      +
      + +
      +
      + {{.data.version}} ({{.data.minVersion}}) +
      +
      +
    • +
    +
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
      +
    • +
      +
      + +
      +
      + +
      +
      +
      +
      +
      +
    • +
    • +
      +
      + +
      +
      + +
      +
      +
      +
      +
      +
    • +
    • +
      +
      + +
      +
      + +
      +
      +
    • +
    • +
      +
      + +
      +
      + +
      +
      +
    • +
    • +
      +
      + +
      +
      + +
      +
      +
    • +
    • +
      +
      + +
      +
      + +
      +
      +
    • +
    • +
      +
      + +
      +
      + +
      +
      +
    • +
    +
    +
    +
    + {{end}} +
    + {{if eq true .isAdmin}} + {{if eq true .system_info_display}} +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    + {{end}} + +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    + + +
    + {{end}} +
    +{{if eq true .isAdmin}} + +{{end}} \ No newline at end of file diff --git a/apps/nps/0.29.21/web/views/index/list.html b/apps/nps/0.29.21/web/views/index/list.html new file mode 100644 index 0000000..9375499 --- /dev/null +++ b/apps/nps/0.29.21/web/views/index/list.html @@ -0,0 +1,374 @@ +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    + {{ if or (not .type) (ne .type "file") }} + + + + + {{ end }} +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + diff --git a/apps/nps/0.29.21/web/views/login/index.html b/apps/nps/0.29.21/web/views/login/index.html new file mode 100644 index 0000000..a1620ab --- /dev/null +++ b/apps/nps/0.29.21/web/views/login/index.html @@ -0,0 +1,136 @@ + + + + + + + + + + + + + + + + + + + + + + + +