diff --git a/.circleci/config.yml b/.circleci/config.yml index 3dff8a52ca6..017d75c9e73 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -2,7 +2,7 @@ version: 2 jobs: go-version-latest: docker: - - image: cimg/go:1.22-node + - image: cimg/go:1.24-node resource_class: large steps: - checkout diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index 2d8fe2e060d..e87e0d49f2b 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1,4 +1,4 @@ # These are supported funding model platforms github: [fatedier] -custom: ["https://afdian.net/a/fatedier"] +custom: ["https://afdian.com/a/fatedier"] diff --git a/.github/workflows/build-and-push-image.yml b/.github/workflows/build-and-push-image.yml index d1516f80ce3..c6caff6cd4b 100644 --- a/.github/workflows/build-and-push-image.yml +++ b/.github/workflows/build-and-push-image.yml @@ -2,7 +2,7 @@ name: Build Image and Publish to Dockerhub & GPR on: release: - types: [ created ] + types: [ published ] workflow_dispatch: inputs: tag: @@ -61,7 +61,7 @@ jobs: echo "TAG_FRPS_GPR=ghcr.io/fatedier/frps:${{ env.TAG_NAME }}" >> $GITHUB_ENV - name: Build and push frpc - uses: docker/build-push-action@v4 + uses: docker/build-push-action@v5 with: context: . file: ./dockerfiles/Dockerfile-for-frpc diff --git a/.github/workflows/golangci-lint.yml b/.github/workflows/golangci-lint.yml index b3e2cb43c39..eb631c240b3 100644 --- a/.github/workflows/golangci-lint.yml +++ b/.github/workflows/golangci-lint.yml @@ -17,26 +17,10 @@ jobs: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 with: - go-version: '1.22' + go-version: '1.24' cache: false - name: golangci-lint - uses: golangci/golangci-lint-action@v4 + uses: golangci/golangci-lint-action@v8 with: # Optional: version of golangci-lint to use in form of v1.2 or v1.2.3 or `latest` to use the latest version - version: v1.57 - - # Optional: golangci-lint command line arguments. - # args: --issues-exit-code=0 - - # Optional: show only new issues if it's a pull request. The default value is `false`. - # only-new-issues: true - - # Optional: if set to true then the all caching functionality will be complete disabled, - # takes precedence over all other caching options. - # skip-cache: true - - # Optional: if set to true then the action don't cache or restore ~/go/pkg. - # skip-pkg-cache: true - - # Optional: if set to true then the action don't cache or restore ~/.cache/go-build. - # skip-build-cache: true + version: v2.3 diff --git a/.github/workflows/goreleaser.yml b/.github/workflows/goreleaser.yml index 7c01f3764a0..652d156ce59 100644 --- a/.github/workflows/goreleaser.yml +++ b/.github/workflows/goreleaser.yml @@ -15,7 +15,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v5 with: - go-version: '1.22' + go-version: '1.24' - name: Make All run: | diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index f5cc538f5e1..8f10d6415d8 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -1,4 +1,4 @@ -name: "Close stale issues" +name: "Close stale issues and PRs" on: schedule: - cron: "20 0 * * *" @@ -21,14 +21,14 @@ jobs: steps: - uses: actions/stale@v9 with: - stale-issue-message: 'Issues go stale after 21d of inactivity. Stale issues rot after an additional 7d of inactivity and eventually close.' - stale-pr-message: "PRs go stale after 21d of inactivity. Stale PRs rot after an additional 7d of inactivity and eventually close." + stale-issue-message: 'Issues go stale after 14d of inactivity. Stale issues rot after an additional 3d of inactivity and eventually close.' + stale-pr-message: "PRs go stale after 14d of inactivity. Stale PRs rot after an additional 3d of inactivity and eventually close." stale-issue-label: 'lifecycle/stale' exempt-issue-labels: 'bug,doc,enhancement,future,proposal,question,testing,todo,easy,help wanted,assigned' stale-pr-label: 'lifecycle/stale' exempt-pr-labels: 'bug,doc,enhancement,future,proposal,question,testing,todo,easy,help wanted,assigned' - days-before-stale: 21 - days-before-close: 7 + days-before-stale: 14 + days-before-close: 3 debug-only: ${{ github.event.inputs.debug-only }} exempt-all-pr-milestones: true exempt-all-pr-assignees: true diff --git a/.gitignore b/.gitignore index 0f69b089a2b..c6480f59a4a 100644 --- a/.gitignore +++ b/.gitignore @@ -39,3 +39,6 @@ client.key # Cache *.swp + +# AI +CLAUDE.md diff --git a/.golangci.yml b/.golangci.yml index e2f8a240991..3ba2c60fe63 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -1,140 +1,115 @@ -service: - golangci-lint-version: 1.57.x # use the fixed version to not introduce new linters unexpectedly - +version: "2" run: concurrency: 4 - # timeout for analysis, e.g. 30s, 5m, default is 1m - deadline: 20m + timeout: 20m build-tags: - integ - integfuzz - linters: - disable-all: true + default: none enable: - - unused + - asciicheck + - copyloopvar - errcheck - - exportloopref - gocritic - - gofumpt - - goimports - - revive - - gosimple + - gosec - govet - ineffassign - lll + - makezero - misspell + - prealloc + - predeclared + - revive - staticcheck - - stylecheck - - typecheck - unconvert - unparam + - unused + settings: + errcheck: + check-type-assertions: false + check-blank: false + gocritic: + disabled-checks: + - exitAfterDefer + gosec: + excludes: + - G401 + - G402 + - G404 + - G501 + - G115 + severity: low + confidence: low + govet: + disable: + - shadow + lll: + line-length: 160 + tab-width: 1 + misspell: + locale: US + ignore-rules: + - cancelled + - marshalled + unparam: + check-exported: false + exclusions: + generated: lax + presets: + - comments + - common-false-positives + - legacy + - std-error-handling + rules: + - linters: + - errcheck + - maligned + path: _test\.go$|^tests/|^samples/ + - linters: + - revive + - staticcheck + text: use underscores in Go names + - linters: + - revive + text: unused-parameter + - linters: + - revive + text: "avoid meaningless package names" + - linters: + - unparam + text: is always false + paths: + - .*\.pb\.go + - .*\.gen\.go + - genfiles$ + - vendor$ + - bin$ + - third_party$ + - builtin$ + - examples$ +formatters: + enable: - gci - - gosec - - asciicheck - - prealloc - - predeclared - - makezero - fast: false - -linters-settings: - errcheck: - # report about not checking of errors in type assetions: `a := b.(MyStruct)`; - # default is false: such cases aren't reported by default. - check-type-assertions: false - - # report about assignment of errors to blank identifier: `num, _ := strconv.Atoi(numStr)`; - # default is false: such cases aren't reported by default. - check-blank: false - govet: - # report about shadowed variables - check-shadowing: false - maligned: - # print struct with more effective memory layout or not, false by default - suggest-new: true - misspell: - # Correct spellings using locale preferences for US or UK. - # Default is to use a neutral variety of English. - # Setting locale to US will correct the British spelling of 'colour' to 'color'. - locale: US - ignore-words: - - cancelled - - marshalled - lll: - # max line length, lines longer will be reported. Default is 120. - # '\t' is counted as 1 character by default, and can be changed with the tab-width option - line-length: 160 - # tab width in spaces. Default to 1. - tab-width: 1 - gocritic: - disabled-checks: - - exitAfterDefer - unused: - check-exported: false - unparam: - # Inspect exported functions, default is false. Set to true if no external program/library imports your code. - # XXX: if you enable this setting, unparam will report a lot of false-positives in text editors: - # if it's called for subdir of a project it can't find external interfaces. All text editor integrations - # with golangci-lint call it on a directory with the changed file. - check-exported: false - gci: - sections: - - standard - - default - - prefix(github.com/fatedier/frp/) - gosec: - severity: "low" - confidence: "low" - excludes: - - G102 - - G112 - - G306 - - G401 - - G402 - - G404 - - G501 - + - gofumpt + - goimports + settings: + gci: + sections: + - standard + - default + - prefix(github.com/fatedier/frp/) + exclusions: + generated: lax + paths: + - .*\.pb\.go + - .*\.gen\.go + - genfiles$ + - vendor$ + - bin$ + - third_party$ + - builtin$ + - examples$ issues: - # List of regexps of issue texts to exclude, empty list by default. - # But independently from this option we use default exclude patterns, - # it can be disabled by `exclude-use-default: false`. To list all - # excluded by default patterns execute `golangci-lint run --help` - # exclude: - # - composite literal uses unkeyed fields - - exclude-rules: - # Exclude some linters from running on test files. - - path: _test\.go$|^tests/|^samples/ - linters: - - errcheck - - maligned - - linters: - - revive - - stylecheck - text: "use underscores in Go names" - - linters: - - revive - text: "unused-parameter" - - linters: - - unparam - text: "is always false" - - exclude-dirs: - - genfiles$ - - vendor$ - - bin$ - exclude-files: - - ".*\\.pb\\.go" - - ".*\\.gen\\.go" - - # Independently from option `exclude` we use default exclude patterns, - # it can be disabled by this option. To list all - # excluded by default patterns execute `golangci-lint run --help`. - # Default value for this option is true. - exclude-use-default: true - - # Maximum issues count per one linter. Set to 0 to disable. Default is 50. - max-per-linter: 0 - - # Maximum count of issues with the same text. Set to 0 to disable. Default is 3. + max-issues-per-linter: 0 max-same-issues: 0 diff --git a/Makefile.cross-compiles b/Makefile.cross-compiles index 8887cad4bee..d084bbef44a 100644 --- a/Makefile.cross-compiles +++ b/Makefile.cross-compiles @@ -2,22 +2,34 @@ export PATH := $(PATH):`go env GOPATH`/bin export GO111MODULE=on LDFLAGS := -s -w -os-archs=darwin:amd64 darwin:arm64 freebsd:amd64 linux:amd64 linux:arm linux:arm64 windows:amd64 windows:arm64 linux:mips64 linux:mips64le linux:mips:softfloat linux:mipsle:softfloat linux:riscv64 android:arm64 +os-archs=darwin:amd64 darwin:arm64 freebsd:amd64 openbsd:amd64 linux:amd64 linux:arm:7 linux:arm:5 linux:arm64 windows:amd64 windows:arm64 linux:mips64 linux:mips64le linux:mips:softfloat linux:mipsle:softfloat linux:riscv64 linux:loong64 android:arm64 all: build build: app app: - @$(foreach n, $(os-archs),\ - os=$(shell echo "$(n)" | cut -d : -f 1);\ - arch=$(shell echo "$(n)" | cut -d : -f 2);\ - gomips=$(shell echo "$(n)" | cut -d : -f 3);\ - target_suffix=$${os}_$${arch};\ - echo "Build $${os}-$${arch}...";\ - env CGO_ENABLED=0 GOOS=$${os} GOARCH=$${arch} GOMIPS=$${gomips} go build -trimpath -ldflags "$(LDFLAGS)" -tags frpc -o ./release/frpc_$${target_suffix} ./cmd/frpc;\ - env CGO_ENABLED=0 GOOS=$${os} GOARCH=$${arch} GOMIPS=$${gomips} go build -trimpath -ldflags "$(LDFLAGS)" -tags frps -o ./release/frps_$${target_suffix} ./cmd/frps;\ - echo "Build $${os}-$${arch} done";\ + @$(foreach n, $(os-archs), \ + os=$(shell echo "$(n)" | cut -d : -f 1); \ + arch=$(shell echo "$(n)" | cut -d : -f 2); \ + extra=$(shell echo "$(n)" | cut -d : -f 3); \ + flags=''; \ + target_suffix=$${os}_$${arch}; \ + if [ "$${os}" = "linux" ] && [ "$${arch}" = "arm" ] && [ "$${extra}" != "" ] ; then \ + if [ "$${extra}" = "7" ]; then \ + flags=GOARM=7; \ + target_suffix=$${os}_arm_hf; \ + elif [ "$${extra}" = "5" ]; then \ + flags=GOARM=5; \ + target_suffix=$${os}_arm; \ + fi; \ + elif [ "$${os}" = "linux" ] && ([ "$${arch}" = "mips" ] || [ "$${arch}" = "mipsle" ]) && [ "$${extra}" != "" ] ; then \ + flags=GOMIPS=$${extra}; \ + fi; \ + echo "Build $${os}-$${arch}$${extra:+ ($${extra})}..."; \ + env CGO_ENABLED=0 GOOS=$${os} GOARCH=$${arch} $${flags} go build -trimpath -ldflags "$(LDFLAGS)" -tags frpc -o ./release/frpc_$${target_suffix} ./cmd/frpc; \ + env CGO_ENABLED=0 GOOS=$${os} GOARCH=$${arch} $${flags} go build -trimpath -ldflags "$(LDFLAGS)" -tags frps -o ./release/frps_$${target_suffix} ./cmd/frps; \ + echo "Build $${os}-$${arch}$${extra:+ ($${extra})} done"; \ ) @mv ./release/frpc_windows_amd64 ./release/frpc_windows_amd64.exe @mv ./release/frps_windows_amd64 ./release/frps_windows_amd64.exe diff --git a/README.md b/README.md index 69cce9ddc48..00a3498cb63 100644 --- a/README.md +++ b/README.md @@ -7,15 +7,49 @@ [README](README.md) | [中文文档](README_zh.md) +## Sponsors + +frp is an open source project with its ongoing development made possible entirely by the support of our awesome sponsors. If you'd like to join them, please consider [sponsoring frp's development](https://github.com/sponsors/fatedier). +

Gold Sponsors

- - + + Recall.ai - API for meeting recordings
+
+ If you're looking for a meeting recording API, consider checking out Recall.ai, an API that records Zoom, Google Meet, Microsoft Teams, in-person meetings, and more. +
+

+

+ + +
+ Warp, built for collaborating with AI Agents +
+ Available for macOS, Linux and Windows
-   +

+

+ + +
+ The complete IDE crafted for professional Go developers +
+

+

- + +
+ Secure and Elastic Infrastructure for Running Your AI-Generated Code +
+

+

+ + +
+ The sovereign cloud that puts you in control +
+ An open source, self-hosted alternative to public clouds, built for data ownership and privacy

@@ -82,6 +116,12 @@ frp also offers a P2P connect mode. * [Client Plugins](#client-plugins) * [Server Manage Plugins](#server-manage-plugins) * [SSH Tunnel Gateway](#ssh-tunnel-gateway) + * [Virtual Network (VirtualNet)](#virtual-network-virtualnet) +* [Feature Gates](#feature-gates) + * [Available Feature Gates](#available-feature-gates) + * [Enabling Feature Gates](#enabling-feature-gates) + * [Feature Lifecycle](#feature-lifecycle) +* [Related Projects](#related-projects) * [Contributing](#contributing) * [Donation](#donation) * [GitHub Sponsors](#github-sponsors) @@ -351,7 +391,6 @@ You may substitute `https2https` for the plugin, and point the `localAddr` to a # frpc.toml serverAddr = "x.x.x.x" serverPort = 7000 - vhostHTTPSPort = 443 [[proxies]] name = "test_https2http" @@ -487,7 +526,7 @@ name = "ssh" type = "tcp" localIP = "127.0.0.1" localPort = 22 -remotePort = "{{ .Envs.FRP_SSH_REMOTE_PORT }}" +remotePort = {{ .Envs.FRP_SSH_REMOTE_PORT }} ``` With the config above, variables can be passed into `frpc` program like this: @@ -597,6 +636,21 @@ When specifying `auth.method = "token"` in `frpc.toml` and `frps.toml` - token b Make sure to specify the same `auth.token` in `frps.toml` and `frpc.toml` for frpc to pass frps validation +##### Token Source + +frp supports reading authentication tokens from external sources using the `tokenSource` configuration. Currently, file-based token source is supported. + +**File-based token source:** + +```toml +# frpc.toml +auth.method = "token" +auth.tokenSource.type = "file" +auth.tokenSource.file.path = "/path/to/token/file" +``` + +The token will be read from the specified file at startup. This is useful for scenarios where tokens are managed by external systems or need to be kept separate from configuration files for security reasons. + #### OIDC Authentication When specifying `auth.method = "oidc"` in `frpc.toml` and `frps.toml` - OIDC based authentication will be used. @@ -804,7 +858,7 @@ You can disable this feature by modify `frps.toml` and `frpc.toml`: ```toml # frps.toml and frpc.toml, must be same -tcpMux = false +transport.tcpMux = false ``` ### Support KCP Protocol @@ -983,7 +1037,7 @@ The HTTP request will have the `Host` header rewritten to `Host: dev.example.com ### Setting other HTTP Headers -Similar to `Host`, You can override other HTTP request headers with proxy type `http`. +Similar to `Host`, You can override other HTTP request and response headers with proxy type `http`. ```toml # frpc.toml @@ -995,21 +1049,22 @@ localPort = 80 customDomains = ["test.example.com"] hostHeaderRewrite = "dev.example.com" requestHeaders.set.x-from-where = "frp" +responseHeaders.set.foo = "bar" ``` -In this example, it will set header `x-from-where: frp` in the HTTP request. +In this example, it will set header `x-from-where: frp` in the HTTP request and `foo: bar` in the HTTP response. ### Get Real IP #### HTTP X-Forwarded-For -This feature is for http proxy only. +This feature is for `http` proxies or proxies with the `https2http` and `https2https` plugins enabled. You can get user's real IP from HTTP request headers `X-Forwarded-For`. #### Proxy Protocol -frp supports Proxy Protocol to send user's real IP to local services. It support all types except UDP. +frp supports Proxy Protocol to send user's real IP to local services. Here is an example for https service: @@ -1244,6 +1299,44 @@ frpc tcp --proxy_name "test-tcp" --local_ip 127.0.0.1 --local_port 8080 --remote Please refer to this [document](/doc/ssh_tunnel_gateway.md) for more information. +### Virtual Network (VirtualNet) + +*Alpha feature added in v0.62.0* + +The VirtualNet feature enables frp to create and manage virtual network connections between clients and visitors through a TUN interface. This allows for IP-level routing between machines, extending frp beyond simple port forwarding to support full network connectivity. + +For detailed information about configuration and usage, please refer to the [VirtualNet documentation](/doc/virtual_net.md). + +## Feature Gates + +frp supports feature gates to enable or disable experimental features. This allows users to try out new features before they're considered stable. + +### Available Feature Gates + +| Name | Stage | Default | Description | +|------|-------|---------|-------------| +| VirtualNet | ALPHA | false | Virtual network capabilities for frp | + +### Enabling Feature Gates + +To enable an experimental feature, add the feature gate to your configuration: + +```toml +featureGates = { VirtualNet = true } +``` + +### Feature Lifecycle + +Features typically go through three stages: +1. **ALPHA**: Disabled by default, may be unstable +2. **BETA**: May be enabled by default, more stable but still evolving +3. **GA (Generally Available)**: Enabled by default, ready for production use + +## Related Projects + +* [gofrp/plugin](https://github.com/gofrp/plugin) - A repository for frp plugins that contains a variety of plugins implemented based on the frp extension mechanism, meeting the customization needs of different scenarios. +* [gofrp/tiny-frpc](https://github.com/gofrp/tiny-frpc) - A lightweight version of the frp client (around 3.5MB at minimum) implemented using the ssh protocol, supporting some of the most commonly used features, suitable for devices with limited resources. + ## Contributing Interested in getting involved? We would like to help you! diff --git a/README_zh.md b/README_zh.md index 2c902f9f049..ea63d7261cb 100644 --- a/README_zh.md +++ b/README_zh.md @@ -9,15 +9,49 @@ frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议,且支持 P2P 通信。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。 +## Sponsors + +frp 是一个完全开源的项目,我们的开发工作完全依靠赞助者们的支持。如果你愿意加入他们的行列,请考虑 [赞助 frp 的开发](https://github.com/sponsors/fatedier)。 +

Gold Sponsors

- - + + Recall.ai - API for meeting recordings
+
+ If you're looking for a meeting recording API, consider checking out Recall.ai, an API that records Zoom, Google Meet, Microsoft Teams, in-person meetings, and more. +
+

+

+ + +
+ Warp, built for collaborating with AI Agents +
+ Available for macOS, Linux and Windows
-   +

+

+ + +
+ The complete IDE crafted for professional Go developers +
+

+

- + +
+ Secure and Elastic Infrastructure for Running Your AI-Generated Code +
+

+

+ + +
+ The sovereign cloud that puts you in control +
+ An open source, self-hosted alternative to public clouds, built for data ownership and privacy

@@ -72,7 +106,12 @@ frp 是一个免费且开源的项目,我们欢迎任何人为其开发和进 * 贡献代码请提交 PR 至 dev 分支,master 分支仅用于发布稳定可用版本。 * 如果你有任何其他方面的问题或合作,欢迎发送邮件至 fatedier@gmail.com 。 -**提醒:和项目相关的问题最好在 [issues](https://github.com/fatedier/frp/issues) 中反馈,这样方便其他有类似问题的人可以快速查找解决方法,并且也避免了我们重复回答一些问题。** +**提醒:和项目相关的问题请在 [issues](https://github.com/fatedier/frp/issues) 中反馈,这样方便其他有类似问题的人可以快速查找解决方法,并且也避免了我们重复回答一些问题。** + +## 关联项目 + +* [gofrp/plugin](https://github.com/gofrp/plugin) - frp 插件仓库,收录了基于 frp 扩展机制实现的各种插件,满足各种场景下的定制化需求。 +* [gofrp/tiny-frpc](https://github.com/gofrp/tiny-frpc) - 基于 ssh 协议实现的 frp 客户端的精简版本(最低约 3.5MB 左右),支持常用的部分功能,适用于资源有限的设备。 ## 赞助 @@ -84,7 +123,7 @@ frp 是一个免费且开源的项目,我们欢迎任何人为其开发和进 您可以通过 [GitHub Sponsors](https://github.com/sponsors/fatedier) 赞助我们。 -国内用户可以通过 [爱发电](https://afdian.net/a/fatedier) 赞助我们。 +国内用户可以通过 [爱发电](https://afdian.com/a/fatedier) 赞助我们。 企业赞助者可以将贵公司的 Logo 以及链接放置在项目 README 文件中。 @@ -93,7 +132,3 @@ frp 是一个免费且开源的项目,我们欢迎任何人为其开发和进 如果您想了解更多 frp 相关技术以及更新详解,或者寻求任何 frp 使用方面的帮助,都可以通过微信扫描下方的二维码付费加入知识星球的官方社群: ![zsxq](/doc/pic/zsxq.jpg) - -### 微信支付捐赠 - -![donate-wechatpay](/doc/pic/donate-wechatpay.png) diff --git a/Release.md b/Release.md index 163ca3728a1..2ea047fa5de 100644 --- a/Release.md +++ b/Release.md @@ -1,7 +1,5 @@ -### Features +## Features -* `https2http` and `https2https` plugin now supports `X-Forwared-For` header. - -### Fixes - -* `X-Forwared-For` header is now correctly set in the request to the backend server for proxy type http. +* Add NAT traversal configuration options for XTCP proxies and visitors. Support disabling assisted addresses to avoid using slow VPN connections during NAT hole punching. +* Enhanced OIDC client configuration with support for custom TLS certificate verification and proxy settings. Added `trustedCaFile`, `insecureSkipVerify`, and `proxyURL` options for OIDC token endpoint connections. +* Added detailed Prometheus metrics with `proxy_counts_detailed` metric that includes both proxy type and proxy name labels, enabling monitoring of individual proxy connections instead of just aggregate counts. diff --git a/assets/frps/static/index-Q42Pu2_S.js b/assets/frps/static/index-82-40HIG.js similarity index 91% rename from assets/frps/static/index-Q42Pu2_S.js rename to assets/frps/static/index-82-40HIG.js index 45293e05cfd..3d8e3c08da8 100644 --- a/assets/frps/static/index-Q42Pu2_S.js +++ b/assets/frps/static/index-82-40HIG.js @@ -1,20 +1,20 @@ -var DD=Object.defineProperty;var ID=(e,t,r)=>t in e?DD(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var OD=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var zt=(e,t,r)=>(ID(e,typeof t!="symbol"?t+"":t,r),r);var Ite=OD(($r,Hr)=>{(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))n(i);new MutationObserver(i=>{for(const a of i)if(a.type==="childList")for(const o of a.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&n(o)}).observe(document,{childList:!0,subtree:!0});function r(i){const a={};return i.integrity&&(a.integrity=i.integrity),i.referrerPolicy&&(a.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?a.credentials="include":i.crossOrigin==="anonymous"?a.credentials="omit":a.credentials="same-origin",a}function n(i){if(i.ep)return;i.ep=!0;const a=r(i);fetch(i.href,a)}})();/** +var DD=Object.defineProperty;var ID=(e,t,r)=>t in e?DD(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var OD=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var It=(e,t,r)=>(ID(e,typeof t!="symbol"?t+"":t,r),r);var Bte=OD(($r,Hr)=>{(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))n(i);new MutationObserver(i=>{for(const a of i)if(a.type==="childList")for(const o of a.addedNodes)o.tagName==="LINK"&&o.rel==="modulepreload"&&n(o)}).observe(document,{childList:!0,subtree:!0});function r(i){const a={};return i.integrity&&(a.integrity=i.integrity),i.referrerPolicy&&(a.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?a.credentials="include":i.crossOrigin==="anonymous"?a.credentials="omit":a.credentials="same-origin",a}function n(i){if(i.ep)return;i.ep=!0;const a=r(i);fetch(i.href,a)}})();/** * @vue/shared v3.4.15 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT -**/function Wm(e,t){const r=new Set(e.split(","));return t?n=>r.has(n.toLowerCase()):n=>r.has(n)}const St={},ns=[],Bt=()=>{},RD=()=>!1,Wd=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Gm=e=>e.startsWith("onUpdate:"),$t=Object.assign,Um=(e,t)=>{const r=e.indexOf(t);r>-1&&e.splice(r,1)},kD=Object.prototype.hasOwnProperty,Ue=(e,t)=>kD.call(e,t),_e=Array.isArray,is=e=>Wu(e)==="[object Map]",Gd=e=>Wu(e)==="[object Set]",l_=e=>Wu(e)==="[object Date]",De=e=>typeof e=="function",ze=e=>typeof e=="string",oa=e=>typeof e=="symbol",qe=e=>e!==null&&typeof e=="object",Qc=e=>(qe(e)||De(e))&&De(e.then)&&De(e.catch),EC=Object.prototype.toString,Wu=e=>EC.call(e),ND=e=>Wu(e).slice(8,-1),LC=e=>Wu(e)==="[object Object]",Ym=e=>ze(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Sc=Wm(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Ud=e=>{const t=Object.create(null);return r=>t[r]||(t[r]=e(r))},BD=/-(\w)/g,Pn=Ud(e=>e.replace(BD,(t,r)=>r?r.toUpperCase():"")),FD=/\B([A-Z])/g,xo=Ud(e=>e.replace(FD,"-$1").toLowerCase()),Yd=Ud(e=>e.charAt(0).toUpperCase()+e.slice(1)),xc=Ud(e=>e?`on${Yd(e)}`:""),sa=(e,t)=>!Object.is(e,t),Cc=(e,t)=>{for(let r=0;r{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:r})},$D=e=>{const t=parseFloat(e);return isNaN(t)?e:t},HD=e=>{const t=ze(e)?Number(e):NaN;return isNaN(t)?e:t};let u_;const DC=()=>u_||(u_=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function ct(e){if(_e(e)){const t={};for(let r=0;r{if(r){const n=r.split(VD);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}function re(e){let t="";if(ze(e))t=e;else if(_e(e))for(let r=0;rjd(r,t))}const be=e=>ze(e)?e:e==null?"":_e(e)||qe(e)&&(e.toString===EC||!De(e.toString))?JSON.stringify(e,RC,2):String(e),RC=(e,t)=>t&&t.__v_isRef?RC(e,t.value):is(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((r,[n,i],a)=>(r[Wh(n,a)+" =>"]=i,r),{})}:Gd(t)?{[`Set(${t.size})`]:[...t.values()].map(r=>Wh(r))}:oa(t)?Wh(t):qe(t)&&!_e(t)&&!LC(t)?String(t):t,Wh=(e,t="")=>{var r;return oa(e)?`Symbol(${(r=e.description)!=null?r:t})`:e};/** +**/function Wm(e,t){const r=new Set(e.split(","));return t?n=>r.has(n.toLowerCase()):n=>r.has(n)}const St={},as=[],Ft=()=>{},RD=()=>!1,Wd=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Gm=e=>e.startsWith("onUpdate:"),Ht=Object.assign,Um=(e,t)=>{const r=e.indexOf(t);r>-1&&e.splice(r,1)},kD=Object.prototype.hasOwnProperty,Ue=(e,t)=>kD.call(e,t),_e=Array.isArray,os=e=>Wu(e)==="[object Map]",Gd=e=>Wu(e)==="[object Set]",l_=e=>Wu(e)==="[object Date]",De=e=>typeof e=="function",ze=e=>typeof e=="string",oa=e=>typeof e=="symbol",qe=e=>e!==null&&typeof e=="object",Qc=e=>(qe(e)||De(e))&&De(e.then)&&De(e.catch),EC=Object.prototype.toString,Wu=e=>EC.call(e),ND=e=>Wu(e).slice(8,-1),LC=e=>Wu(e)==="[object Object]",Ym=e=>ze(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Sc=Wm(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Ud=e=>{const t=Object.create(null);return r=>t[r]||(t[r]=e(r))},BD=/-(\w)/g,Pn=Ud(e=>e.replace(BD,(t,r)=>r?r.toUpperCase():"")),FD=/\B([A-Z])/g,xo=Ud(e=>e.replace(FD,"-$1").toLowerCase()),Yd=Ud(e=>e.charAt(0).toUpperCase()+e.slice(1)),xc=Ud(e=>e?`on${Yd(e)}`:""),sa=(e,t)=>!Object.is(e,t),Cc=(e,t)=>{for(let r=0;r{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:r})},$D=e=>{const t=parseFloat(e);return isNaN(t)?e:t},HD=e=>{const t=ze(e)?Number(e):NaN;return isNaN(t)?e:t};let u_;const DC=()=>u_||(u_=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function ct(e){if(_e(e)){const t={};for(let r=0;r{if(r){const n=r.split(VD);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}function re(e){let t="";if(ze(e))t=e;else if(_e(e))for(let r=0;rjd(r,t))}const xe=e=>ze(e)?e:e==null?"":_e(e)||qe(e)&&(e.toString===EC||!De(e.toString))?JSON.stringify(e,RC,2):String(e),RC=(e,t)=>t&&t.__v_isRef?RC(e,t.value):os(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((r,[n,i],a)=>(r[Wh(n,a)+" =>"]=i,r),{})}:Gd(t)?{[`Set(${t.size})`]:[...t.values()].map(r=>Wh(r))}:oa(t)?Wh(t):qe(t)&&!_e(t)&&!LC(t)?String(t):t,Wh=(e,t="")=>{var r;return oa(e)?`Symbol(${(r=e.description)!=null?r:t})`:e};/** * @vue/reactivity v3.4.15 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT -**/let Nr;class qD{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=Nr,!t&&Nr&&(this.index=(Nr.scopes||(Nr.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const r=Nr;try{return Nr=this,t()}finally{Nr=r}}}on(){Nr=this}off(){Nr=this.parent}stop(t){if(this._active){let r,n;for(r=0,n=this.effects.length;r=2))break}this._dirtyLevel<2&&(this._dirtyLevel=0),To()}return this._dirtyLevel>=2}set dirty(t){this._dirtyLevel=t?2:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let t=ta,r=io;try{return ta=!0,io=this,this._runnings++,f_(this),this.fn()}finally{c_(this),this._runnings--,io=r,ta=t}}stop(){var t;this.active&&(f_(this),c_(this),(t=this.onStop)==null||t.call(this),this.active=!1)}}function XD(e){return e.value}function f_(e){e._trackId++,e._depsLength=0}function c_(e){if(e.deps&&e.deps.length>e._depsLength){for(let t=e._depsLength;t{const r=new Map;return r.cleanup=e,r.computed=t,r},ed=new WeakMap,ao=Symbol(""),Fp=Symbol("");function Lr(e,t,r){if(ta&&io){let n=ed.get(e);n||ed.set(e,n=new Map);let i=n.get(r);i||n.set(r,i=VC(()=>n.delete(r))),$C(io,i)}}function mi(e,t,r,n,i,a){const o=ed.get(e);if(!o)return;let s=[];if(t==="clear")s=[...o.values()];else if(r==="length"&&_e(e)){const l=Number(n);o.forEach((u,f)=>{(f==="length"||!oa(f)&&f>=l)&&s.push(u)})}else switch(r!==void 0&&s.push(o.get(r)),t){case"add":_e(e)?Ym(r)&&s.push(o.get("length")):(s.push(o.get(ao)),is(e)&&s.push(o.get(Fp)));break;case"delete":_e(e)||(s.push(o.get(ao)),is(e)&&s.push(o.get(Fp)));break;case"set":is(e)&&s.push(o.get(ao));break}qm();for(const l of s)l&&HC(l,2);Km()}function ZD(e,t){var r;return(r=ed.get(e))==null?void 0:r.get(t)}const QD=Wm("__proto__,__v_isRef,__isVue"),WC=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(oa)),d_=JD();function JD(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...r){const n=Qe(this);for(let a=0,o=this.length;a{e[t]=function(...r){Co(),qm();const n=Qe(this)[t].apply(this,r);return Km(),To(),n}}),e}function eI(e){const t=Qe(this);return Lr(t,"has",e),t.hasOwnProperty(e)}class GC{constructor(t=!1,r=!1){this._isReadonly=t,this._shallow=r}get(t,r,n){const i=this._isReadonly,a=this._shallow;if(r==="__v_isReactive")return!i;if(r==="__v_isReadonly")return i;if(r==="__v_isShallow")return a;if(r==="__v_raw")return n===(i?a?hI:qC:a?jC:YC).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(n)?t:void 0;const o=_e(t);if(!i){if(o&&Ue(d_,r))return Reflect.get(d_,r,n);if(r==="hasOwnProperty")return eI}const s=Reflect.get(t,r,n);return(oa(r)?WC.has(r):QD(r))||(i||Lr(t,"get",r),a)?s:Pt(s)?o&&Ym(r)?s:s.value:qe(s)?i?Gu(s):Ln(s):s}}class UC extends GC{constructor(t=!1){super(!1,t)}set(t,r,n,i){let a=t[r];if(!this._shallow){const l=hs(a);if(!td(n)&&!hs(n)&&(a=Qe(a),n=Qe(n)),!_e(t)&&Pt(a)&&!Pt(n))return l?!1:(a.value=n,!0)}const o=_e(t)&&Ym(r)?Number(r)e,qd=e=>Reflect.getPrototypeOf(e);function vf(e,t,r=!1,n=!1){e=e.__v_raw;const i=Qe(e),a=Qe(t);r||(sa(t,a)&&Lr(i,"get",t),Lr(i,"get",a));const{has:o}=qd(i),s=n?Xm:r?ey:su;if(o.call(i,t))return s(e.get(t));if(o.call(i,a))return s(e.get(a));e!==i&&e.get(t)}function pf(e,t=!1){const r=this.__v_raw,n=Qe(r),i=Qe(e);return t||(sa(e,i)&&Lr(n,"has",e),Lr(n,"has",i)),e===i?r.has(e):r.has(e)||r.has(i)}function gf(e,t=!1){return e=e.__v_raw,!t&&Lr(Qe(e),"iterate",ao),Reflect.get(e,"size",e)}function h_(e){e=Qe(e);const t=Qe(this);return qd(t).has.call(t,e)||(t.add(e),mi(t,"add",e,e)),this}function v_(e,t){t=Qe(t);const r=Qe(this),{has:n,get:i}=qd(r);let a=n.call(r,e);a||(e=Qe(e),a=n.call(r,e));const o=i.call(r,e);return r.set(e,t),a?sa(t,o)&&mi(r,"set",e,t):mi(r,"add",e,t),this}function p_(e){const t=Qe(this),{has:r,get:n}=qd(t);let i=r.call(t,e);i||(e=Qe(e),i=r.call(t,e)),n&&n.call(t,e);const a=t.delete(e);return i&&mi(t,"delete",e,void 0),a}function g_(){const e=Qe(this),t=e.size!==0,r=e.clear();return t&&mi(e,"clear",void 0,void 0),r}function mf(e,t){return function(n,i){const a=this,o=a.__v_raw,s=Qe(o),l=t?Xm:e?ey:su;return!e&&Lr(s,"iterate",ao),o.forEach((u,f)=>n.call(i,l(u),l(f),a))}}function yf(e,t,r){return function(...n){const i=this.__v_raw,a=Qe(i),o=is(a),s=e==="entries"||e===Symbol.iterator&&o,l=e==="keys"&&o,u=i[e](...n),f=r?Xm:t?ey:su;return!t&&Lr(a,"iterate",l?Fp:ao),{next(){const{value:c,done:h}=u.next();return h?{value:c,done:h}:{value:s?[f(c[0]),f(c[1])]:f(c),done:h}},[Symbol.iterator](){return this}}}}function Di(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function aI(){const e={get(a){return vf(this,a)},get size(){return gf(this)},has:pf,add:h_,set:v_,delete:p_,clear:g_,forEach:mf(!1,!1)},t={get(a){return vf(this,a,!1,!0)},get size(){return gf(this)},has:pf,add:h_,set:v_,delete:p_,clear:g_,forEach:mf(!1,!0)},r={get(a){return vf(this,a,!0)},get size(){return gf(this,!0)},has(a){return pf.call(this,a,!0)},add:Di("add"),set:Di("set"),delete:Di("delete"),clear:Di("clear"),forEach:mf(!0,!1)},n={get(a){return vf(this,a,!0,!0)},get size(){return gf(this,!0)},has(a){return pf.call(this,a,!0)},add:Di("add"),set:Di("set"),delete:Di("delete"),clear:Di("clear"),forEach:mf(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(a=>{e[a]=yf(a,!1,!1),r[a]=yf(a,!0,!1),t[a]=yf(a,!1,!0),n[a]=yf(a,!0,!0)}),[e,r,t,n]}const[oI,sI,lI,uI]=aI();function Zm(e,t){const r=t?e?uI:lI:e?sI:oI;return(n,i,a)=>i==="__v_isReactive"?!e:i==="__v_isReadonly"?e:i==="__v_raw"?n:Reflect.get(Ue(r,i)&&i in n?r:n,i,a)}const fI={get:Zm(!1,!1)},cI={get:Zm(!1,!0)},dI={get:Zm(!0,!1)},YC=new WeakMap,jC=new WeakMap,qC=new WeakMap,hI=new WeakMap;function vI(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function pI(e){return e.__v_skip||!Object.isExtensible(e)?0:vI(ND(e))}function Ln(e){return hs(e)?e:Jm(e,!1,rI,fI,YC)}function Qm(e){return Jm(e,!1,iI,cI,jC)}function Gu(e){return Jm(e,!0,nI,dI,qC)}function Jm(e,t,r,n,i){if(!qe(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const a=i.get(e);if(a)return a;const o=pI(e);if(o===0)return e;const s=new Proxy(e,o===2?n:r);return i.set(e,s),s}function as(e){return hs(e)?as(e.__v_raw):!!(e&&e.__v_isReactive)}function hs(e){return!!(e&&e.__v_isReadonly)}function td(e){return!!(e&&e.__v_isShallow)}function KC(e){return as(e)||hs(e)}function Qe(e){const t=e&&e.__v_raw;return t?Qe(t):e}function XC(e){return Jc(e,"__v_skip",!0),e}const su=e=>qe(e)?Ln(e):e,ey=e=>qe(e)?Gu(e):e;class ZC{constructor(t,r,n,i){this._setter=r,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this.effect=new jm(()=>t(this._value),()=>Tc(this,1),()=>this.dep&&zC(this.dep)),this.effect.computed=this,this.effect.active=this._cacheable=!i,this.__v_isReadonly=n}get value(){const t=Qe(this);return(!t._cacheable||t.effect.dirty)&&sa(t._value,t._value=t.effect.run())&&Tc(t,2),JC(t),t.effect._dirtyLevel>=1&&Tc(t,1),t._value}set value(t){this._setter(t)}get _dirty(){return this.effect.dirty}set _dirty(t){this.effect.dirty=t}}function QC(e,t,r=!1){let n,i;const a=De(e);return a?(n=e,i=Bt):(n=e.get,i=e.set),new ZC(n,i,a||!i,r)}function JC(e){ta&&io&&(e=Qe(e),$C(io,e.dep||(e.dep=VC(()=>e.dep=void 0,e instanceof ZC?e:void 0))))}function Tc(e,t=2,r){e=Qe(e);const n=e.dep;n&&HC(n,t)}function Pt(e){return!!(e&&e.__v_isRef===!0)}function $(e){return eT(e,!1)}function ty(e){return eT(e,!0)}function eT(e,t){return Pt(e)?e:new gI(e,t)}class gI{constructor(t,r){this.__v_isShallow=r,this.dep=void 0,this.__v_isRef=!0,this._rawValue=r?t:Qe(t),this._value=r?t:su(t)}get value(){return JC(this),this._value}set value(t){const r=this.__v_isShallow||td(t)||hs(t);t=r?t:Qe(t),sa(t,this._rawValue)&&(this._rawValue=t,this._value=r?t:su(t),Tc(this,2))}}function T(e){return Pt(e)?e.value:e}const mI={get:(e,t,r)=>T(Reflect.get(e,t,r)),set:(e,t,r,n)=>{const i=e[t];return Pt(i)&&!Pt(r)?(i.value=r,!0):Reflect.set(e,t,r,n)}};function tT(e){return as(e)?e:new Proxy(e,mI)}function Kd(e){const t=_e(e)?new Array(e.length):{};for(const r in e)t[r]=rT(e,r);return t}class yI{constructor(t,r,n){this._object=t,this._key=r,this._defaultValue=n,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return ZD(Qe(this._object),this._key)}}class _I{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function wn(e,t,r){return Pt(e)?e:De(e)?new _I(e):qe(e)&&arguments.length>1?rT(e,t,r):$(e)}function rT(e,t,r){const n=e[t];return Pt(n)?n:new yI(e,t,r)}/** +**/let Nr;class qD{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=Nr,!t&&Nr&&(this.index=(Nr.scopes||(Nr.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const r=Nr;try{return Nr=this,t()}finally{Nr=r}}}on(){Nr=this}off(){Nr=this.parent}stop(t){if(this._active){let r,n;for(r=0,n=this.effects.length;r=2))break}this._dirtyLevel<2&&(this._dirtyLevel=0),To()}return this._dirtyLevel>=2}set dirty(t){this._dirtyLevel=t?2:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let t=ta,r=io;try{return ta=!0,io=this,this._runnings++,f_(this),this.fn()}finally{c_(this),this._runnings--,io=r,ta=t}}stop(){var t;this.active&&(f_(this),c_(this),(t=this.onStop)==null||t.call(this),this.active=!1)}}function XD(e){return e.value}function f_(e){e._trackId++,e._depsLength=0}function c_(e){if(e.deps&&e.deps.length>e._depsLength){for(let t=e._depsLength;t{const r=new Map;return r.cleanup=e,r.computed=t,r},ed=new WeakMap,ao=Symbol(""),Fp=Symbol("");function Lr(e,t,r){if(ta&&io){let n=ed.get(e);n||ed.set(e,n=new Map);let i=n.get(r);i||n.set(r,i=VC(()=>n.delete(r))),$C(io,i)}}function mi(e,t,r,n,i,a){const o=ed.get(e);if(!o)return;let s=[];if(t==="clear")s=[...o.values()];else if(r==="length"&&_e(e)){const l=Number(n);o.forEach((u,f)=>{(f==="length"||!oa(f)&&f>=l)&&s.push(u)})}else switch(r!==void 0&&s.push(o.get(r)),t){case"add":_e(e)?Ym(r)&&s.push(o.get("length")):(s.push(o.get(ao)),os(e)&&s.push(o.get(Fp)));break;case"delete":_e(e)||(s.push(o.get(ao)),os(e)&&s.push(o.get(Fp)));break;case"set":os(e)&&s.push(o.get(ao));break}qm();for(const l of s)l&&HC(l,2);Km()}function ZD(e,t){var r;return(r=ed.get(e))==null?void 0:r.get(t)}const QD=Wm("__proto__,__v_isRef,__isVue"),WC=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(oa)),d_=JD();function JD(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...r){const n=Qe(this);for(let a=0,o=this.length;a{e[t]=function(...r){Co(),qm();const n=Qe(this)[t].apply(this,r);return Km(),To(),n}}),e}function eI(e){const t=Qe(this);return Lr(t,"has",e),t.hasOwnProperty(e)}class GC{constructor(t=!1,r=!1){this._isReadonly=t,this._shallow=r}get(t,r,n){const i=this._isReadonly,a=this._shallow;if(r==="__v_isReactive")return!i;if(r==="__v_isReadonly")return i;if(r==="__v_isShallow")return a;if(r==="__v_raw")return n===(i?a?hI:qC:a?jC:YC).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(n)?t:void 0;const o=_e(t);if(!i){if(o&&Ue(d_,r))return Reflect.get(d_,r,n);if(r==="hasOwnProperty")return eI}const s=Reflect.get(t,r,n);return(oa(r)?WC.has(r):QD(r))||(i||Lr(t,"get",r),a)?s:Pt(s)?o&&Ym(r)?s:s.value:qe(s)?i?Gu(s):Ln(s):s}}class UC extends GC{constructor(t=!1){super(!1,t)}set(t,r,n,i){let a=t[r];if(!this._shallow){const l=ps(a);if(!td(n)&&!ps(n)&&(a=Qe(a),n=Qe(n)),!_e(t)&&Pt(a)&&!Pt(n))return l?!1:(a.value=n,!0)}const o=_e(t)&&Ym(r)?Number(r)e,qd=e=>Reflect.getPrototypeOf(e);function vf(e,t,r=!1,n=!1){e=e.__v_raw;const i=Qe(e),a=Qe(t);r||(sa(t,a)&&Lr(i,"get",t),Lr(i,"get",a));const{has:o}=qd(i),s=n?Xm:r?ey:su;if(o.call(i,t))return s(e.get(t));if(o.call(i,a))return s(e.get(a));e!==i&&e.get(t)}function pf(e,t=!1){const r=this.__v_raw,n=Qe(r),i=Qe(e);return t||(sa(e,i)&&Lr(n,"has",e),Lr(n,"has",i)),e===i?r.has(e):r.has(e)||r.has(i)}function gf(e,t=!1){return e=e.__v_raw,!t&&Lr(Qe(e),"iterate",ao),Reflect.get(e,"size",e)}function h_(e){e=Qe(e);const t=Qe(this);return qd(t).has.call(t,e)||(t.add(e),mi(t,"add",e,e)),this}function v_(e,t){t=Qe(t);const r=Qe(this),{has:n,get:i}=qd(r);let a=n.call(r,e);a||(e=Qe(e),a=n.call(r,e));const o=i.call(r,e);return r.set(e,t),a?sa(t,o)&&mi(r,"set",e,t):mi(r,"add",e,t),this}function p_(e){const t=Qe(this),{has:r,get:n}=qd(t);let i=r.call(t,e);i||(e=Qe(e),i=r.call(t,e)),n&&n.call(t,e);const a=t.delete(e);return i&&mi(t,"delete",e,void 0),a}function g_(){const e=Qe(this),t=e.size!==0,r=e.clear();return t&&mi(e,"clear",void 0,void 0),r}function mf(e,t){return function(n,i){const a=this,o=a.__v_raw,s=Qe(o),l=t?Xm:e?ey:su;return!e&&Lr(s,"iterate",ao),o.forEach((u,f)=>n.call(i,l(u),l(f),a))}}function yf(e,t,r){return function(...n){const i=this.__v_raw,a=Qe(i),o=os(a),s=e==="entries"||e===Symbol.iterator&&o,l=e==="keys"&&o,u=i[e](...n),f=r?Xm:t?ey:su;return!t&&Lr(a,"iterate",l?Fp:ao),{next(){const{value:c,done:h}=u.next();return h?{value:c,done:h}:{value:s?[f(c[0]),f(c[1])]:f(c),done:h}},[Symbol.iterator](){return this}}}}function Di(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function aI(){const e={get(a){return vf(this,a)},get size(){return gf(this)},has:pf,add:h_,set:v_,delete:p_,clear:g_,forEach:mf(!1,!1)},t={get(a){return vf(this,a,!1,!0)},get size(){return gf(this)},has:pf,add:h_,set:v_,delete:p_,clear:g_,forEach:mf(!1,!0)},r={get(a){return vf(this,a,!0)},get size(){return gf(this,!0)},has(a){return pf.call(this,a,!0)},add:Di("add"),set:Di("set"),delete:Di("delete"),clear:Di("clear"),forEach:mf(!0,!1)},n={get(a){return vf(this,a,!0,!0)},get size(){return gf(this,!0)},has(a){return pf.call(this,a,!0)},add:Di("add"),set:Di("set"),delete:Di("delete"),clear:Di("clear"),forEach:mf(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(a=>{e[a]=yf(a,!1,!1),r[a]=yf(a,!0,!1),t[a]=yf(a,!1,!0),n[a]=yf(a,!0,!0)}),[e,r,t,n]}const[oI,sI,lI,uI]=aI();function Zm(e,t){const r=t?e?uI:lI:e?sI:oI;return(n,i,a)=>i==="__v_isReactive"?!e:i==="__v_isReadonly"?e:i==="__v_raw"?n:Reflect.get(Ue(r,i)&&i in n?r:n,i,a)}const fI={get:Zm(!1,!1)},cI={get:Zm(!1,!0)},dI={get:Zm(!0,!1)},YC=new WeakMap,jC=new WeakMap,qC=new WeakMap,hI=new WeakMap;function vI(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function pI(e){return e.__v_skip||!Object.isExtensible(e)?0:vI(ND(e))}function Ln(e){return ps(e)?e:Jm(e,!1,rI,fI,YC)}function Qm(e){return Jm(e,!1,iI,cI,jC)}function Gu(e){return Jm(e,!0,nI,dI,qC)}function Jm(e,t,r,n,i){if(!qe(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const a=i.get(e);if(a)return a;const o=pI(e);if(o===0)return e;const s=new Proxy(e,o===2?n:r);return i.set(e,s),s}function ss(e){return ps(e)?ss(e.__v_raw):!!(e&&e.__v_isReactive)}function ps(e){return!!(e&&e.__v_isReadonly)}function td(e){return!!(e&&e.__v_isShallow)}function KC(e){return ss(e)||ps(e)}function Qe(e){const t=e&&e.__v_raw;return t?Qe(t):e}function XC(e){return Jc(e,"__v_skip",!0),e}const su=e=>qe(e)?Ln(e):e,ey=e=>qe(e)?Gu(e):e;class ZC{constructor(t,r,n,i){this._setter=r,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this.effect=new jm(()=>t(this._value),()=>Tc(this,1),()=>this.dep&&zC(this.dep)),this.effect.computed=this,this.effect.active=this._cacheable=!i,this.__v_isReadonly=n}get value(){const t=Qe(this);return(!t._cacheable||t.effect.dirty)&&sa(t._value,t._value=t.effect.run())&&Tc(t,2),JC(t),t.effect._dirtyLevel>=1&&Tc(t,1),t._value}set value(t){this._setter(t)}get _dirty(){return this.effect.dirty}set _dirty(t){this.effect.dirty=t}}function QC(e,t,r=!1){let n,i;const a=De(e);return a?(n=e,i=Ft):(n=e.get,i=e.set),new ZC(n,i,a||!i,r)}function JC(e){ta&&io&&(e=Qe(e),$C(io,e.dep||(e.dep=VC(()=>e.dep=void 0,e instanceof ZC?e:void 0))))}function Tc(e,t=2,r){e=Qe(e);const n=e.dep;n&&HC(n,t)}function Pt(e){return!!(e&&e.__v_isRef===!0)}function $(e){return eT(e,!1)}function ty(e){return eT(e,!0)}function eT(e,t){return Pt(e)?e:new gI(e,t)}class gI{constructor(t,r){this.__v_isShallow=r,this.dep=void 0,this.__v_isRef=!0,this._rawValue=r?t:Qe(t),this._value=r?t:su(t)}get value(){return JC(this),this._value}set value(t){const r=this.__v_isShallow||td(t)||ps(t);t=r?t:Qe(t),sa(t,this._rawValue)&&(this._rawValue=t,this._value=r?t:su(t),Tc(this,2))}}function T(e){return Pt(e)?e.value:e}const mI={get:(e,t,r)=>T(Reflect.get(e,t,r)),set:(e,t,r,n)=>{const i=e[t];return Pt(i)&&!Pt(r)?(i.value=r,!0):Reflect.set(e,t,r,n)}};function tT(e){return ss(e)?e:new Proxy(e,mI)}function Kd(e){const t=_e(e)?new Array(e.length):{};for(const r in e)t[r]=rT(e,r);return t}class yI{constructor(t,r,n){this._object=t,this._key=r,this._defaultValue=n,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return ZD(Qe(this._object),this._key)}}class _I{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function wn(e,t,r){return Pt(e)?e:De(e)?new _I(e):qe(e)&&arguments.length>1?rT(e,t,r):$(e)}function rT(e,t,r){const n=e[t];return Pt(n)?n:new yI(e,t,r)}/** * @vue/runtime-core v3.4.15 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT -**/function ra(e,t,r,n){let i;try{i=n?e(...n):e()}catch(a){Xd(a,t,r)}return i}function sn(e,t,r,n){if(De(e)){const a=ra(e,t,r,n);return a&&Qc(a)&&a.catch(o=>{Xd(o,t,r)}),a}const i=[];for(let a=0;a>>1,i=or[n],a=uu(i);azn&&or.splice(t,1)}function xI(e){_e(e)?os.push(...e):(!Yi||!Yi.includes(e,e.allowRecurse?Ua+1:Ua))&&os.push(e),iT()}function m_(e,t,r=lu?zn+1:0){for(;ruu(r)-uu(n));if(os.length=0,Yi){Yi.push(...t);return}for(Yi=t,Ua=0;Uae.id==null?1/0:e.id,CI=(e,t)=>{const r=uu(e)-uu(t);if(r===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return r};function oT(e){$p=!1,lu=!0,or.sort(CI);try{for(zn=0;znze(d)?d.trim():d)),c&&(i=r.map($D))}let s,l=n[s=xc(t)]||n[s=xc(Pn(t))];!l&&a&&(l=n[s=xc(xo(t))]),l&&sn(l,e,6,i);const u=n[s+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[s])return;e.emitted[s]=!0,sn(u,e,6,i)}}function sT(e,t,r=!1){const n=t.emitsCache,i=n.get(e);if(i!==void 0)return i;const a=e.emits;let o={},s=!1;if(!De(e)){const l=u=>{const f=sT(u,t,!0);f&&(s=!0,$t(o,f))};!r&&t.mixins.length&&t.mixins.forEach(l),e.extends&&l(e.extends),e.mixins&&e.mixins.forEach(l)}return!a&&!s?(qe(e)&&n.set(e,null),null):(_e(a)?a.forEach(l=>o[l]=null):$t(o,a),qe(e)&&n.set(e,o),o)}function Zd(e,t){return!e||!Wd(t)?!1:(t=t.slice(2).replace(/Once$/,""),Ue(e,t[0].toLowerCase()+t.slice(1))||Ue(e,xo(t))||Ue(e,t))}let Wt=null,lT=null;function rd(e){const t=Wt;return Wt=e,lT=e&&e.type.__scopeId||null,t}function j(e,t=Wt,r){if(!t||e._n)return e;const n=(...i)=>{n._d&&D_(-1);const a=rd(t);let o;try{o=e(...i)}finally{rd(a),n._d&&D_(1)}return o};return n._n=!0,n._c=!0,n._d=!0,n}function Gh(e){const{type:t,vnode:r,proxy:n,withProxy:i,props:a,propsOptions:[o],slots:s,attrs:l,emit:u,render:f,renderCache:c,data:h,setupState:d,ctx:v,inheritAttrs:p}=e;let m,g;const y=rd(e);try{if(r.shapeFlag&4){const b=i||n,x=b;m=Hn(f.call(x,b,c,a,d,h,v)),g=l}else{const b=t;m=Hn(b.length>1?b(a,{attrs:l,slots:s,emit:u}):b(a,null)),g=t.props?l:MI(l)}}catch(b){kl.length=0,Xd(b,e,1),m=Z(Mr)}let _=m;if(g&&p!==!1){const b=Object.keys(g),{shapeFlag:x}=_;b.length&&x&7&&(o&&b.some(Gm)&&(g=AI(g,o)),_=_i(_,g))}return r.dirs&&(_=_i(_),_.dirs=_.dirs?_.dirs.concat(r.dirs):r.dirs),r.transition&&(_.transition=r.transition),m=_,rd(y),m}const MI=e=>{let t;for(const r in e)(r==="class"||r==="style"||Wd(r))&&((t||(t={}))[r]=e[r]);return t},AI=(e,t)=>{const r={};for(const n in e)(!Gm(n)||!(n.slice(9)in t))&&(r[n]=e[n]);return r};function PI(e,t,r){const{props:n,children:i,component:a}=e,{props:o,children:s,patchFlag:l}=t,u=a.emitsOptions;if(t.dirs||t.transition)return!0;if(r&&l>=0){if(l&1024)return!0;if(l&16)return n?y_(n,o,u):!!o;if(l&8){const f=t.dynamicProps;for(let c=0;ce.__isSuspense;function II(e,t){t&&t.pendingBranch?_e(e)?t.effects.push(...e):t.effects.push(e):xI(e)}const OI=Symbol.for("v-scx"),RI=()=>Le(OI);function na(e,t){return oy(e,null,t)}const _f={};function we(e,t,r){return oy(e,t,r)}function oy(e,t,{immediate:r,deep:n,flush:i,once:a,onTrack:o,onTrigger:s}=St){if(t&&a){const w=t;t=(...S)=>{w(...S),x()}}const l=Qt,u=w=>n===!0?w:Xa(w,n===!1?1:void 0);let f,c=!1,h=!1;if(Pt(e)?(f=()=>e.value,c=td(e)):as(e)?(f=()=>u(e),c=!0):_e(e)?(h=!0,c=e.some(w=>as(w)||td(w)),f=()=>e.map(w=>{if(Pt(w))return w.value;if(as(w))return u(w);if(De(w))return ra(w,l,2)})):De(e)?t?f=()=>ra(e,l,2):f=()=>(d&&d(),sn(e,l,3,[v])):f=Bt,t&&n){const w=f;f=()=>Xa(w())}let d,v=w=>{d=_.onStop=()=>{ra(w,l,4),d=_.onStop=void 0}},p;if(rh)if(v=Bt,t?r&&sn(t,l,3,[f(),h?[]:void 0,v]):f(),i==="sync"){const w=RI();p=w.__watcherHandles||(w.__watcherHandles=[])}else return Bt;let m=h?new Array(e.length).fill(_f):_f;const g=()=>{if(!(!_.active||!_.dirty))if(t){const w=_.run();(n||c||(h?w.some((S,C)=>sa(S,m[C])):sa(w,m)))&&(d&&d(),sn(t,l,3,[w,m===_f?void 0:h&&m[0]===_f?[]:m,v]),m=w)}else _.run()};g.allowRecurse=!!t;let y;i==="sync"?y=g:i==="post"?y=()=>Sr(g,l&&l.suspense):(g.pre=!0,l&&(g.id=l.uid),y=()=>ny(g));const _=new jm(f,Bt,y),b=kC(),x=()=>{_.stop(),b&&Um(b.effects,_)};return t?r?g():m=_.run():i==="post"?Sr(_.run.bind(_),l&&l.suspense):_.run(),p&&p.push(x),x}function kI(e,t,r){const n=this.proxy,i=ze(e)?e.includes(".")?cT(n,e):()=>n[e]:e.bind(n,n);let a;De(t)?a=t:(a=t.handler,r=t);const o=Yu(this),s=oy(i,a.bind(n),r);return o(),s}function cT(e,t){const r=t.split(".");return()=>{let n=e;for(let i=0;i0){if(r>=t)return e;r++}if(n=n||new Set,n.has(e))return e;if(n.add(e),Pt(e))Xa(e.value,t,r,n);else if(_e(e))for(let i=0;i{Xa(i,t,r,n)});else if(LC(e))for(const i in e)Xa(e[i],t,r,n);return e}function qt(e,t){if(Wt===null)return e;const r=nh(Wt)||Wt.proxy,n=e.dirs||(e.dirs=[]);for(let i=0;i{e.isMounted=!0}),tr(()=>{e.isUnmounting=!0}),e}const jr=[Function,Array],hT={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:jr,onEnter:jr,onAfterEnter:jr,onEnterCancelled:jr,onBeforeLeave:jr,onLeave:jr,onAfterLeave:jr,onLeaveCancelled:jr,onBeforeAppear:jr,onAppear:jr,onAfterAppear:jr,onAppearCancelled:jr},NI={name:"BaseTransition",props:hT,setup(e,{slots:t}){const r=it(),n=dT();let i;return()=>{const a=t.default&&sy(t.default(),!0);if(!a||!a.length)return;let o=a[0];if(a.length>1){for(const p of a)if(p.type!==Mr){o=p;break}}const s=Qe(e),{mode:l}=s;if(n.isLeaving)return Uh(o);const u=b_(o);if(!u)return Uh(o);const f=fu(u,s,n,r);cu(u,f);const c=r.subTree,h=c&&b_(c);let d=!1;const{getTransitionKey:v}=u.type;if(v){const p=v();i===void 0?i=p:p!==i&&(i=p,d=!0)}if(h&&h.type!==Mr&&(!Ya(u,h)||d)){const p=fu(h,s,n,r);if(cu(h,p),l==="out-in")return n.isLeaving=!0,p.afterLeave=()=>{n.isLeaving=!1,r.update.active!==!1&&(r.effect.dirty=!0,r.update())},Uh(o);l==="in-out"&&u.type!==Mr&&(p.delayLeave=(m,g,y)=>{const _=vT(n,h);_[String(h.key)]=h,m[ji]=()=>{g(),m[ji]=void 0,delete f.delayedLeave},f.delayedLeave=y})}return o}}},BI=NI;function vT(e,t){const{leavingVNodes:r}=e;let n=r.get(t.type);return n||(n=Object.create(null),r.set(t.type,n)),n}function fu(e,t,r,n){const{appear:i,mode:a,persisted:o=!1,onBeforeEnter:s,onEnter:l,onAfterEnter:u,onEnterCancelled:f,onBeforeLeave:c,onLeave:h,onAfterLeave:d,onLeaveCancelled:v,onBeforeAppear:p,onAppear:m,onAfterAppear:g,onAppearCancelled:y}=t,_=String(e.key),b=vT(r,e),x=(C,M)=>{C&&sn(C,n,9,M)},w=(C,M)=>{const A=M[1];x(C,M),_e(C)?C.every(P=>P.length<=1)&&A():C.length<=1&&A()},S={mode:a,persisted:o,beforeEnter(C){let M=s;if(!r.isMounted)if(i)M=p||s;else return;C[ji]&&C[ji](!0);const A=b[_];A&&Ya(e,A)&&A.el[ji]&&A.el[ji](),x(M,[C])},enter(C){let M=l,A=u,P=f;if(!r.isMounted)if(i)M=m||l,A=g||u,P=y||f;else return;let E=!1;const L=C[bf]=O=>{E||(E=!0,O?x(P,[C]):x(A,[C]),S.delayedLeave&&S.delayedLeave(),C[bf]=void 0)};M?w(M,[C,L]):L()},leave(C,M){const A=String(e.key);if(C[bf]&&C[bf](!0),r.isUnmounting)return M();x(c,[C]);let P=!1;const E=C[ji]=L=>{P||(P=!0,M(),L?x(v,[C]):x(d,[C]),C[ji]=void 0,b[A]===e&&delete b[A])};b[A]=e,h?w(h,[C,E]):E()},clone(C){return fu(C,t,r,n)}};return S}function Uh(e){if(Qd(e))return e=_i(e),e.children=null,e}function b_(e){return Qd(e)?e.children?e.children[0]:void 0:e}function cu(e,t){e.shapeFlag&6&&e.component?cu(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function sy(e,t=!1,r){let n=[],i=0;for(let a=0;a1)for(let a=0;a!!e.type.__asyncLoader,Qd=e=>e.type.__isKeepAlive;function FI(e,t){gT(e,"a",t)}function pT(e,t){gT(e,"da",t)}function gT(e,t,r=Qt){const n=e.__wdc||(e.__wdc=()=>{let i=r;for(;i;){if(i.isDeactivated)return;i=i.parent}return e()});if(Jd(t,n,r),r){let i=r.parent;for(;i&&i.parent;)Qd(i.parent.vnode)&&$I(n,t,r,i),i=i.parent}}function $I(e,t,r,n){const i=Jd(t,e,n,!0);Os(()=>{Um(n[t],i)},r)}function Jd(e,t,r=Qt,n=!1){if(r){const i=r[e]||(r[e]=[]),a=t.__weh||(t.__weh=(...o)=>{if(r.isUnmounted)return;Co();const s=Yu(r),l=sn(t,r,e,o);return s(),To(),l});return n?i.unshift(a):i.push(a),a}}const Ai=e=>(t,r=Qt)=>(!rh||e==="sp")&&Jd(e,(...n)=>t(...n),r),eh=Ai("bm"),_t=Ai("m"),HI=Ai("bu"),Uu=Ai("u"),tr=Ai("bum"),Os=Ai("um"),zI=Ai("sp"),VI=Ai("rtg"),WI=Ai("rtc");function GI(e,t=Qt){Jd("ec",e,t)}function Hp(e,t,r,n){let i;const a=r&&r[n];if(_e(e)||ze(e)){i=new Array(e.length);for(let o=0,s=e.length;ot(o,s,void 0,a&&a[s]));else{const o=Object.keys(e);i=new Array(o.length);for(let s=0,l=o.length;s{const a=n.fn(...i);return a&&(a.key=n.key),a}:n.fn)}return e}function Ce(e,t,r={},n,i){if(Wt.isCE||Wt.parent&&Il(Wt.parent)&&Wt.parent.isCE)return t!=="default"&&(r.name=t),Z("slot",r,n&&n());let a=e[t];a&&a._c&&(a._d=!1),G();const o=a&&mT(a(r)),s=de(ft,{key:r.key||o&&o.key||`_${t}`},o||(n?n():[]),o&&e._===1?64:-2);return!i&&s.scopeId&&(s.slotScopeIds=[s.scopeId+"-s"]),a&&a._c&&(a._d=!0),s}function mT(e){return e.some(t=>la(t)?!(t.type===Mr||t.type===ft&&!mT(t.children)):!0)?e:null}function YI(e,t){const r={};for(const n in e)r[t&&/[A-Z]/.test(n)?`on:${n}`:xc(n)]=e[n];return r}const zp=e=>e?LT(e)?nh(e)||e.proxy:zp(e.parent):null,Ol=$t(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>zp(e.parent),$root:e=>zp(e.root),$emit:e=>e.emit,$options:e=>ly(e),$forceUpdate:e=>e.f||(e.f=()=>{e.effect.dirty=!0,ny(e.update)}),$nextTick:e=>e.n||(e.n=kt.bind(e.proxy)),$watch:e=>kI.bind(e)}),Yh=(e,t)=>e!==St&&!e.__isScriptSetup&&Ue(e,t),jI={get({_:e},t){const{ctx:r,setupState:n,data:i,props:a,accessCache:o,type:s,appContext:l}=e;let u;if(t[0]!=="$"){const d=o[t];if(d!==void 0)switch(d){case 1:return n[t];case 2:return i[t];case 4:return r[t];case 3:return a[t]}else{if(Yh(n,t))return o[t]=1,n[t];if(i!==St&&Ue(i,t))return o[t]=2,i[t];if((u=e.propsOptions[0])&&Ue(u,t))return o[t]=3,a[t];if(r!==St&&Ue(r,t))return o[t]=4,r[t];Vp&&(o[t]=0)}}const f=Ol[t];let c,h;if(f)return t==="$attrs"&&Lr(e,"get",t),f(e);if((c=s.__cssModules)&&(c=c[t]))return c;if(r!==St&&Ue(r,t))return o[t]=4,r[t];if(h=l.config.globalProperties,Ue(h,t))return h[t]},set({_:e},t,r){const{data:n,setupState:i,ctx:a}=e;return Yh(i,t)?(i[t]=r,!0):n!==St&&Ue(n,t)?(n[t]=r,!0):Ue(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(a[t]=r,!0)},has({_:{data:e,setupState:t,accessCache:r,ctx:n,appContext:i,propsOptions:a}},o){let s;return!!r[o]||e!==St&&Ue(e,o)||Yh(t,o)||(s=a[0])&&Ue(s,o)||Ue(n,o)||Ue(Ol,o)||Ue(i.config.globalProperties,o)},defineProperty(e,t,r){return r.get!=null?e._.accessCache[t]=0:Ue(r,"value")&&this.set(e,t,r.value,null),Reflect.defineProperty(e,t,r)}};function Rs(){return qI().slots}function qI(){const e=it();return e.setupContext||(e.setupContext=IT(e))}function w_(e){return _e(e)?e.reduce((t,r)=>(t[r]=null,t),{}):e}let Vp=!0;function KI(e){const t=ly(e),r=e.proxy,n=e.ctx;Vp=!1,t.beforeCreate&&S_(t.beforeCreate,e,"bc");const{data:i,computed:a,methods:o,watch:s,provide:l,inject:u,created:f,beforeMount:c,mounted:h,beforeUpdate:d,updated:v,activated:p,deactivated:m,beforeDestroy:g,beforeUnmount:y,destroyed:_,unmounted:b,render:x,renderTracked:w,renderTriggered:S,errorCaptured:C,serverPrefetch:M,expose:A,inheritAttrs:P,components:E,directives:L,filters:O}=t;if(u&&XI(u,n,null),o)for(const V in o){const U=o[V];De(U)&&(n[V]=U.bind(r))}if(i){const V=i.call(r,r);qe(V)&&(e.data=Ln(V))}if(Vp=!0,a)for(const V in a){const U=a[V],F=De(U)?U.bind(r,r):De(U.get)?U.get.bind(r,r):Bt,z=!De(U)&&De(U.set)?U.set.bind(r):Bt,te=k({get:F,set:z});Object.defineProperty(n,V,{enumerable:!0,configurable:!0,get:()=>te.value,set:J=>te.value=J})}if(s)for(const V in s)yT(s[V],n,r,V);if(l){const V=De(l)?l.call(r):l;Reflect.ownKeys(V).forEach(U=>{Dt(U,V[U])})}f&&S_(f,e,"c");function H(V,U){_e(U)?U.forEach(F=>V(F.bind(r))):U&&V(U.bind(r))}if(H(eh,c),H(_t,h),H(HI,d),H(Uu,v),H(FI,p),H(pT,m),H(GI,C),H(WI,w),H(VI,S),H(tr,y),H(Os,b),H(zI,M),_e(A))if(A.length){const V=e.exposed||(e.exposed={});A.forEach(U=>{Object.defineProperty(V,U,{get:()=>r[U],set:F=>r[U]=F})})}else e.exposed||(e.exposed={});x&&e.render===Bt&&(e.render=x),P!=null&&(e.inheritAttrs=P),E&&(e.components=E),L&&(e.directives=L)}function XI(e,t,r=Bt){_e(e)&&(e=Wp(e));for(const n in e){const i=e[n];let a;qe(i)?"default"in i?a=Le(i.from||n,i.default,!0):a=Le(i.from||n):a=Le(i),Pt(a)?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>a.value,set:o=>a.value=o}):t[n]=a}}function S_(e,t,r){sn(_e(e)?e.map(n=>n.bind(t.proxy)):e.bind(t.proxy),t,r)}function yT(e,t,r,n){const i=n.includes(".")?cT(r,n):()=>r[n];if(ze(e)){const a=t[e];De(a)&&we(i,a)}else if(De(e))we(i,e.bind(r));else if(qe(e))if(_e(e))e.forEach(a=>yT(a,t,r,n));else{const a=De(e.handler)?e.handler.bind(r):t[e.handler];De(a)&&we(i,a,e)}}function ly(e){const t=e.type,{mixins:r,extends:n}=t,{mixins:i,optionsCache:a,config:{optionMergeStrategies:o}}=e.appContext,s=a.get(t);let l;return s?l=s:!i.length&&!r&&!n?l=t:(l={},i.length&&i.forEach(u=>nd(l,u,o,!0)),nd(l,t,o)),qe(t)&&a.set(t,l),l}function nd(e,t,r,n=!1){const{mixins:i,extends:a}=t;a&&nd(e,a,r,!0),i&&i.forEach(o=>nd(e,o,r,!0));for(const o in t)if(!(n&&o==="expose")){const s=ZI[o]||r&&r[o];e[o]=s?s(e[o],t[o]):t[o]}return e}const ZI={data:x_,props:C_,emits:C_,methods:Sl,computed:Sl,beforeCreate:ur,created:ur,beforeMount:ur,mounted:ur,beforeUpdate:ur,updated:ur,beforeDestroy:ur,beforeUnmount:ur,destroyed:ur,unmounted:ur,activated:ur,deactivated:ur,errorCaptured:ur,serverPrefetch:ur,components:Sl,directives:Sl,watch:JI,provide:x_,inject:QI};function x_(e,t){return t?e?function(){return $t(De(e)?e.call(this,this):e,De(t)?t.call(this,this):t)}:t:e}function QI(e,t){return Sl(Wp(e),Wp(t))}function Wp(e){if(_e(e)){const t={};for(let r=0;r1)return r&&De(t)?t.call(n&&n.proxy):t}}function rO(e,t,r,n=!1){const i={},a={};Jc(a,th,1),e.propsDefaults=Object.create(null),bT(e,t,i,a);for(const o in e.propsOptions[0])o in i||(i[o]=void 0);r?e.props=n?i:Qm(i):e.type.props?e.props=i:e.props=a,e.attrs=a}function nO(e,t,r,n){const{props:i,attrs:a,vnode:{patchFlag:o}}=e,s=Qe(i),[l]=e.propsOptions;let u=!1;if((n||o>0)&&!(o&16)){if(o&8){const f=e.vnode.dynamicProps;for(let c=0;c{l=!0;const[h,d]=wT(c,t,!0);$t(o,h),d&&s.push(...d)};!r&&t.mixins.length&&t.mixins.forEach(f),e.extends&&f(e.extends),e.mixins&&e.mixins.forEach(f)}if(!a&&!l)return qe(e)&&n.set(e,ns),ns;if(_e(a))for(let f=0;f-1,d[1]=p<0||v-1||Ue(d,"default"))&&s.push(c)}}}const u=[o,s];return qe(e)&&n.set(e,u),u}function T_(e){return e[0]!=="$"}function M_(e){const t=e&&e.toString().match(/^\s*(function|class) (\w+)/);return t?t[2]:e===null?"null":""}function A_(e,t){return M_(e)===M_(t)}function P_(e,t){return _e(t)?t.findIndex(r=>A_(r,e)):De(t)&&A_(t,e)?0:-1}const ST=e=>e[0]==="_"||e==="$stable",uy=e=>_e(e)?e.map(Hn):[Hn(e)],iO=(e,t,r)=>{if(t._n)return t;const n=j((...i)=>uy(t(...i)),r);return n._c=!1,n},xT=(e,t,r)=>{const n=e._ctx;for(const i in e){if(ST(i))continue;const a=e[i];if(De(a))t[i]=iO(i,a,n);else if(a!=null){const o=uy(a);t[i]=()=>o}}},CT=(e,t)=>{const r=uy(t);e.slots.default=()=>r},aO=(e,t)=>{if(e.vnode.shapeFlag&32){const r=t._;r?(e.slots=Qe(t),Jc(t,"_",r)):xT(t,e.slots={})}else e.slots={},t&&CT(e,t);Jc(e.slots,th,1)},oO=(e,t,r)=>{const{vnode:n,slots:i}=e;let a=!0,o=St;if(n.shapeFlag&32){const s=t._;s?r&&s===1?a=!1:($t(i,t),!r&&s===1&&delete i._):(a=!t.$stable,xT(t,i)),o=t}else t&&(CT(e,t),o={default:1});if(a)for(const s in i)!ST(s)&&o[s]==null&&delete i[s]};function Up(e,t,r,n,i=!1){if(_e(e)){e.forEach((h,d)=>Up(h,t&&(_e(t)?t[d]:t),r,n,i));return}if(Il(n)&&!i)return;const a=n.shapeFlag&4?nh(n.component)||n.component.proxy:n.el,o=i?null:a,{i:s,r:l}=e,u=t&&t.r,f=s.refs===St?s.refs={}:s.refs,c=s.setupState;if(u!=null&&u!==l&&(ze(u)?(f[u]=null,Ue(c,u)&&(c[u]=null)):Pt(u)&&(u.value=null)),De(l))ra(l,s,12,[o,f]);else{const h=ze(l),d=Pt(l),v=e.f;if(h||d){const p=()=>{if(v){const m=h?Ue(c,l)?c[l]:f[l]:l.value;i?_e(m)&&Um(m,a):_e(m)?m.includes(a)||m.push(a):h?(f[l]=[a],Ue(c,l)&&(c[l]=f[l])):(l.value=[a],e.k&&(f[e.k]=l.value))}else h?(f[l]=o,Ue(c,l)&&(c[l]=o)):d&&(l.value=o,e.k&&(f[e.k]=o))};i||v?p():(p.id=-1,Sr(p,r))}}}const Sr=II;function sO(e){return lO(e)}function lO(e,t){const r=DC();r.__VUE__=!0;const{insert:n,remove:i,patchProp:a,createElement:o,createText:s,createComment:l,setText:u,setElementText:f,parentNode:c,nextSibling:h,setScopeId:d=Bt,insertStaticContent:v}=e,p=(D,I,W,X=null,q=null,le=null,fe=void 0,ae=null,se=!!I.dynamicChildren)=>{if(D===I)return;D&&!Ya(D,I)&&(X=B(D),J(D,q,le,!0),D=null),I.patchFlag===-2&&(se=!1,I.dynamicChildren=null);const{type:ne,ref:he,shapeFlag:Me}=I;switch(ne){case ks:m(D,I,W,X);break;case Mr:g(D,I,W,X);break;case qh:D==null&&y(I,W,X,fe);break;case ft:E(D,I,W,X,q,le,fe,ae,se);break;default:Me&1?x(D,I,W,X,q,le,fe,ae,se):Me&6?L(D,I,W,X,q,le,fe,ae,se):(Me&64||Me&128)&&ne.process(D,I,W,X,q,le,fe,ae,se,Q)}he!=null&&q&&Up(he,D&&D.ref,le,I||D,!I)},m=(D,I,W,X)=>{if(D==null)n(I.el=s(I.children),W,X);else{const q=I.el=D.el;I.children!==D.children&&u(q,I.children)}},g=(D,I,W,X)=>{D==null?n(I.el=l(I.children||""),W,X):I.el=D.el},y=(D,I,W,X)=>{[D.el,D.anchor]=v(D.children,I,W,X,D.el,D.anchor)},_=({el:D,anchor:I},W,X)=>{let q;for(;D&&D!==I;)q=h(D),n(D,W,X),D=q;n(I,W,X)},b=({el:D,anchor:I})=>{let W;for(;D&&D!==I;)W=h(D),i(D),D=W;i(I)},x=(D,I,W,X,q,le,fe,ae,se)=>{I.type==="svg"?fe="svg":I.type==="math"&&(fe="mathml"),D==null?w(I,W,X,q,le,fe,ae,se):M(D,I,q,le,fe,ae,se)},w=(D,I,W,X,q,le,fe,ae)=>{let se,ne;const{props:he,shapeFlag:Me,transition:xe,dirs:ke}=D;if(se=D.el=o(D.type,le,he&&he.is,he),Me&8?f(se,D.children):Me&16&&C(D.children,se,null,X,q,jh(D,le),fe,ae),ke&&ma(D,null,X,"created"),S(se,D,D.scopeId,fe,X),he){for(const rt in he)rt!=="value"&&!Sc(rt)&&a(se,rt,null,he[rt],le,D.children,X,q,Ie);"value"in he&&a(se,"value",null,he.value,le),(ne=he.onVnodeBeforeMount)&&kn(ne,X,D)}ke&&ma(D,null,X,"beforeMount");const Ve=uO(q,xe);Ve&&xe.beforeEnter(se),n(se,I,W),((ne=he&&he.onVnodeMounted)||Ve||ke)&&Sr(()=>{ne&&kn(ne,X,D),Ve&&xe.enter(se),ke&&ma(D,null,X,"mounted")},q)},S=(D,I,W,X,q)=>{if(W&&d(D,W),X)for(let le=0;le{for(let ne=se;ne{const ae=I.el=D.el;let{patchFlag:se,dynamicChildren:ne,dirs:he}=I;se|=D.patchFlag&16;const Me=D.props||St,xe=I.props||St;let ke;if(W&&ya(W,!1),(ke=xe.onVnodeBeforeUpdate)&&kn(ke,W,I,D),he&&ma(I,D,W,"beforeUpdate"),W&&ya(W,!0),ne?A(D.dynamicChildren,ne,ae,W,X,jh(I,q),le):fe||U(D,I,ae,null,W,X,jh(I,q),le,!1),se>0){if(se&16)P(ae,I,Me,xe,W,X,q);else if(se&2&&Me.class!==xe.class&&a(ae,"class",null,xe.class,q),se&4&&a(ae,"style",Me.style,xe.style,q),se&8){const Ve=I.dynamicProps;for(let rt=0;rt{ke&&kn(ke,W,I,D),he&&ma(I,D,W,"updated")},X)},A=(D,I,W,X,q,le,fe)=>{for(let ae=0;ae{if(W!==X){if(W!==St)for(const ae in W)!Sc(ae)&&!(ae in X)&&a(D,ae,W[ae],null,fe,I.children,q,le,Ie);for(const ae in X){if(Sc(ae))continue;const se=X[ae],ne=W[ae];se!==ne&&ae!=="value"&&a(D,ae,ne,se,fe,I.children,q,le,Ie)}"value"in X&&a(D,"value",W.value,X.value,fe)}},E=(D,I,W,X,q,le,fe,ae,se)=>{const ne=I.el=D?D.el:s(""),he=I.anchor=D?D.anchor:s("");let{patchFlag:Me,dynamicChildren:xe,slotScopeIds:ke}=I;ke&&(ae=ae?ae.concat(ke):ke),D==null?(n(ne,W,X),n(he,W,X),C(I.children||[],W,he,q,le,fe,ae,se)):Me>0&&Me&64&&xe&&D.dynamicChildren?(A(D.dynamicChildren,xe,W,q,le,fe,ae),(I.key!=null||q&&I===q.subTree)&&fy(D,I,!0)):U(D,I,W,he,q,le,fe,ae,se)},L=(D,I,W,X,q,le,fe,ae,se)=>{I.slotScopeIds=ae,D==null?I.shapeFlag&512?q.ctx.activate(I,W,X,fe,se):O(I,W,X,q,le,fe,se):N(D,I,se)},O=(D,I,W,X,q,le,fe)=>{const ae=D.component=_O(D,X,q);if(Qd(D)&&(ae.ctx.renderer=Q),bO(ae),ae.asyncDep){if(q&&q.registerDep(ae,H),!D.el){const se=ae.subTree=Z(Mr);g(null,se,I,W)}}else H(ae,D,I,W,q,le,fe)},N=(D,I,W)=>{const X=I.component=D.component;if(PI(D,I,W))if(X.asyncDep&&!X.asyncResolved){V(X,I,W);return}else X.next=I,SI(X.update),X.effect.dirty=!0,X.update();else I.el=D.el,X.vnode=I},H=(D,I,W,X,q,le,fe)=>{const ae=()=>{if(D.isMounted){let{next:he,bu:Me,u:xe,parent:ke,vnode:Ve}=D;{const We=TT(D);if(We){he&&(he.el=Ve.el,V(D,he,fe)),We.asyncDep.then(()=>{D.isUnmounted||ae()});return}}let rt=he,bt;ya(D,!1),he?(he.el=Ve.el,V(D,he,fe)):he=Ve,Me&&Cc(Me),(bt=he.props&&he.props.onVnodeBeforeUpdate)&&kn(bt,ke,he,Ve),ya(D,!0);const ve=Gh(D),Pe=D.subTree;D.subTree=ve,p(Pe,ve,c(Pe.el),B(Pe),D,q,le),he.el=ve.el,rt===null&&EI(D,ve.el),xe&&Sr(xe,q),(bt=he.props&&he.props.onVnodeUpdated)&&Sr(()=>kn(bt,ke,he,Ve),q)}else{let he;const{el:Me,props:xe}=I,{bm:ke,m:Ve,parent:rt}=D,bt=Il(I);if(ya(D,!1),ke&&Cc(ke),!bt&&(he=xe&&xe.onVnodeBeforeMount)&&kn(he,rt,I),ya(D,!0),Me&&pe){const ve=()=>{D.subTree=Gh(D),pe(Me,D.subTree,D,q,null)};bt?I.type.__asyncLoader().then(()=>!D.isUnmounted&&ve()):ve()}else{const ve=D.subTree=Gh(D);p(null,ve,W,X,D,q,le),I.el=ve.el}if(Ve&&Sr(Ve,q),!bt&&(he=xe&&xe.onVnodeMounted)){const ve=I;Sr(()=>kn(he,rt,ve),q)}(I.shapeFlag&256||rt&&Il(rt.vnode)&&rt.vnode.shapeFlag&256)&&D.a&&Sr(D.a,q),D.isMounted=!0,I=W=X=null}},se=D.effect=new jm(ae,Bt,()=>ny(ne),D.scope),ne=D.update=()=>{se.dirty&&se.run()};ne.id=D.uid,ya(D,!0),ne()},V=(D,I,W)=>{I.component=D;const X=D.vnode.props;D.vnode=I,D.next=null,nO(D,I.props,X,W),oO(D,I.children,W),Co(),m_(D),To()},U=(D,I,W,X,q,le,fe,ae,se=!1)=>{const ne=D&&D.children,he=D?D.shapeFlag:0,Me=I.children,{patchFlag:xe,shapeFlag:ke}=I;if(xe>0){if(xe&128){z(ne,Me,W,X,q,le,fe,ae,se);return}else if(xe&256){F(ne,Me,W,X,q,le,fe,ae,se);return}}ke&8?(he&16&&Ie(ne,q,le),Me!==ne&&f(W,Me)):he&16?ke&16?z(ne,Me,W,X,q,le,fe,ae,se):Ie(ne,q,le,!0):(he&8&&f(W,""),ke&16&&C(Me,W,X,q,le,fe,ae,se))},F=(D,I,W,X,q,le,fe,ae,se)=>{D=D||ns,I=I||ns;const ne=D.length,he=I.length,Me=Math.min(ne,he);let xe;for(xe=0;xehe?Ie(D,q,le,!0,!1,Me):C(I,W,X,q,le,fe,ae,se,Me)},z=(D,I,W,X,q,le,fe,ae,se)=>{let ne=0;const he=I.length;let Me=D.length-1,xe=he-1;for(;ne<=Me&&ne<=xe;){const ke=D[ne],Ve=I[ne]=se?qi(I[ne]):Hn(I[ne]);if(Ya(ke,Ve))p(ke,Ve,W,null,q,le,fe,ae,se);else break;ne++}for(;ne<=Me&&ne<=xe;){const ke=D[Me],Ve=I[xe]=se?qi(I[xe]):Hn(I[xe]);if(Ya(ke,Ve))p(ke,Ve,W,null,q,le,fe,ae,se);else break;Me--,xe--}if(ne>Me){if(ne<=xe){const ke=xe+1,Ve=kexe)for(;ne<=Me;)J(D[ne],q,le,!0),ne++;else{const ke=ne,Ve=ne,rt=new Map;for(ne=Ve;ne<=xe;ne++){const pt=I[ne]=se?qi(I[ne]):Hn(I[ne]);pt.key!=null&&rt.set(pt.key,ne)}let bt,ve=0;const Pe=xe-Ve+1;let We=!1,Ge=0;const et=new Array(Pe);for(ne=0;ne=Pe){J(pt,q,le,!0);continue}let Kt;if(pt.key!=null)Kt=rt.get(pt.key);else for(bt=Ve;bt<=xe;bt++)if(et[bt-Ve]===0&&Ya(pt,I[bt])){Kt=bt;break}Kt===void 0?J(pt,q,le,!0):(et[Kt-Ve]=ne+1,Kt>=Ge?Ge=Kt:We=!0,p(pt,I[Kt],W,null,q,le,fe,ae,se),ve++)}const Ht=We?fO(et):ns;for(bt=Ht.length-1,ne=Pe-1;ne>=0;ne--){const pt=Ve+ne,Kt=I[pt],Yr=pt+1{const{el:le,type:fe,transition:ae,children:se,shapeFlag:ne}=D;if(ne&6){te(D.component.subTree,I,W,X);return}if(ne&128){D.suspense.move(I,W,X);return}if(ne&64){fe.move(D,I,W,Q);return}if(fe===ft){n(le,I,W);for(let Me=0;Meae.enter(le),q);else{const{leave:Me,delayLeave:xe,afterLeave:ke}=ae,Ve=()=>n(le,I,W),rt=()=>{Me(le,()=>{Ve(),ke&&ke()})};xe?xe(le,Ve,rt):rt()}else n(le,I,W)},J=(D,I,W,X=!1,q=!1)=>{const{type:le,props:fe,ref:ae,children:se,dynamicChildren:ne,shapeFlag:he,patchFlag:Me,dirs:xe}=D;if(ae!=null&&Up(ae,null,W,D,!0),he&256){I.ctx.deactivate(D);return}const ke=he&1&&xe,Ve=!Il(D);let rt;if(Ve&&(rt=fe&&fe.onVnodeBeforeUnmount)&&kn(rt,I,D),he&6)$e(D.component,W,X);else{if(he&128){D.suspense.unmount(W,X);return}ke&&ma(D,null,I,"beforeUnmount"),he&64?D.type.remove(D,I,W,q,Q,X):ne&&(le!==ft||Me>0&&Me&64)?Ie(ne,I,W,!1,!0):(le===ft&&Me&384||!q&&he&16)&&Ie(se,I,W),X&&me(D)}(Ve&&(rt=fe&&fe.onVnodeUnmounted)||ke)&&Sr(()=>{rt&&kn(rt,I,D),ke&&ma(D,null,I,"unmounted")},W)},me=D=>{const{type:I,el:W,anchor:X,transition:q}=D;if(I===ft){Se(W,X);return}if(I===qh){b(D);return}const le=()=>{i(W),q&&!q.persisted&&q.afterLeave&&q.afterLeave()};if(D.shapeFlag&1&&q&&!q.persisted){const{leave:fe,delayLeave:ae}=q,se=()=>fe(W,le);ae?ae(D.el,le,se):se()}else le()},Se=(D,I)=>{let W;for(;D!==I;)W=h(D),i(D),D=W;i(I)},$e=(D,I,W)=>{const{bum:X,scope:q,update:le,subTree:fe,um:ae}=D;X&&Cc(X),q.stop(),le&&(le.active=!1,J(fe,D,I,W)),ae&&Sr(ae,I),Sr(()=>{D.isUnmounted=!0},I),I&&I.pendingBranch&&!I.isUnmounted&&D.asyncDep&&!D.asyncResolved&&D.suspenseId===I.pendingId&&(I.deps--,I.deps===0&&I.resolve())},Ie=(D,I,W,X=!1,q=!1,le=0)=>{for(let fe=le;feD.shapeFlag&6?B(D.component.subTree):D.shapeFlag&128?D.suspense.next():h(D.anchor||D.el);let Y=!1;const K=(D,I,W)=>{D==null?I._vnode&&J(I._vnode,null,null,!0):p(I._vnode||null,D,I,null,null,null,W),Y||(Y=!0,m_(),aT(),Y=!1),I._vnode=D},Q={p,um:J,m:te,r:me,mt:O,mc:C,pc:U,pbc:A,n:B,o:e};let oe,pe;return t&&([oe,pe]=t(Q)),{render:K,hydrate:oe,createApp:tO(K,oe)}}function jh({type:e,props:t},r){return r==="svg"&&e==="foreignObject"||r==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:r}function ya({effect:e,update:t},r){e.allowRecurse=t.allowRecurse=r}function uO(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function fy(e,t,r=!1){const n=e.children,i=t.children;if(_e(n)&&_e(i))for(let a=0;a>1,e[r[s]]0&&(t[n]=r[a-1]),r[a]=n)}}for(a=r.length,o=r[a-1];a-- >0;)r[a]=o,o=t[o];return r}function TT(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:TT(t)}const cO=e=>e.__isTeleport,Rl=e=>e&&(e.disabled||e.disabled===""),E_=e=>typeof SVGElement<"u"&&e instanceof SVGElement,L_=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,Yp=(e,t)=>{const r=e&&e.to;return ze(r)?t?t(r):null:r},dO={name:"Teleport",__isTeleport:!0,process(e,t,r,n,i,a,o,s,l,u){const{mc:f,pc:c,pbc:h,o:{insert:d,querySelector:v,createText:p,createComment:m}}=u,g=Rl(t.props);let{shapeFlag:y,children:_,dynamicChildren:b}=t;if(e==null){const x=t.el=p(""),w=t.anchor=p("");d(x,r,n),d(w,r,n);const S=t.target=Yp(t.props,v),C=t.targetAnchor=p("");S&&(d(C,S),o==="svg"||E_(S)?o="svg":(o==="mathml"||L_(S))&&(o="mathml"));const M=(A,P)=>{y&16&&f(_,A,P,i,a,o,s,l)};g?M(r,w):S&&M(S,C)}else{t.el=e.el;const x=t.anchor=e.anchor,w=t.target=e.target,S=t.targetAnchor=e.targetAnchor,C=Rl(e.props),M=C?r:w,A=C?x:S;if(o==="svg"||E_(w)?o="svg":(o==="mathml"||L_(w))&&(o="mathml"),b?(h(e.dynamicChildren,b,M,i,a,o,s),fy(e,t,!0)):l||c(e,t,M,A,i,a,o,s,!1),g)C?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):wf(t,r,x,u,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const P=t.target=Yp(t.props,v);P&&wf(t,P,null,u,0)}else C&&wf(t,w,S,u,1)}AT(t)},remove(e,t,r,n,{um:i,o:{remove:a}},o){const{shapeFlag:s,children:l,anchor:u,targetAnchor:f,target:c,props:h}=e;if(c&&a(f),o&&a(u),s&16){const d=o||!Rl(h);for(let v=0;v0?Sn||ns:null,vO(),du>0&&Sn&&Sn.push(e),e}function ce(e,t,r,n,i,a){return PT(ee(e,t,r,n,i,a,!0))}function de(e,t,r,n,i){return PT(Z(e,t,r,n,i,!0))}function la(e){return e?e.__v_isVNode===!0:!1}function Ya(e,t){return e.type===t.type&&e.key===t.key}const th="__vInternal",ET=({key:e})=>e??null,Mc=({ref:e,ref_key:t,ref_for:r})=>(typeof e=="number"&&(e=""+e),e!=null?ze(e)||Pt(e)||De(e)?{i:Wt,r:e,k:t,f:!!r}:e:null);function ee(e,t=null,r=null,n=0,i=null,a=e===ft?0:1,o=!1,s=!1){const l={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&ET(t),ref:t&&Mc(t),scopeId:lT,slotScopeIds:null,children:r,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:a,patchFlag:n,dynamicProps:i,dynamicChildren:null,appContext:null,ctx:Wt};return s?(cy(l,r),a&128&&e.normalize(l)):r&&(l.shapeFlag|=ze(r)?8:16),du>0&&!o&&Sn&&(l.patchFlag>0||a&6)&&l.patchFlag!==32&&Sn.push(l),l}const Z=pO;function pO(e,t=null,r=null,n=0,i=null,a=!1){if((!e||e===uT)&&(e=Mr),la(e)){const s=_i(e,t,!0);return r&&cy(s,r),du>0&&!a&&Sn&&(s.shapeFlag&6?Sn[Sn.indexOf(e)]=s:Sn.push(s)),s.patchFlag|=-2,s}if(CO(e)&&(e=e.__vccOpts),t){t=gO(t);let{class:s,style:l}=t;s&&!ze(s)&&(t.class=re(s)),qe(l)&&(KC(l)&&!_e(l)&&(l=$t({},l)),t.style=ct(l))}const o=ze(e)?1:DI(e)?128:cO(e)?64:qe(e)?4:De(e)?2:0;return ee(e,t,r,n,i,o,a,!0)}function gO(e){return e?KC(e)||th in e?$t({},e):e:null}function _i(e,t,r=!1){const{props:n,ref:i,patchFlag:a,children:o}=e,s=t?ei(n||{},t):n;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:s,key:s&&ET(s),ref:t&&t.ref?r&&i?_e(i)?i.concat(Mc(t)):[i,Mc(t)]:Mc(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:o,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ft?a===-1?16:a|16:a,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&_i(e.ssContent),ssFallback:e.ssFallback&&_i(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function mt(e=" ",t=0){return Z(ks,null,e,t)}function Ae(e="",t=!1){return t?(G(),de(Mr,null,e)):Z(Mr,null,e)}function Hn(e){return e==null||typeof e=="boolean"?Z(Mr):_e(e)?Z(ft,null,e.slice()):typeof e=="object"?qi(e):Z(ks,null,String(e))}function qi(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:_i(e)}function cy(e,t){let r=0;const{shapeFlag:n}=e;if(t==null)t=null;else if(_e(t))r=16;else if(typeof t=="object")if(n&65){const i=t.default;i&&(i._c&&(i._d=!1),cy(e,i()),i._c&&(i._d=!0));return}else{r=32;const i=t._;!i&&!(th in t)?t._ctx=Wt:i===3&&Wt&&(Wt.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else De(t)?(t={default:t,_ctx:Wt},r=32):(t=String(t),n&64?(r=16,t=[mt(t)]):r=8);e.children=t,e.shapeFlag|=r}function ei(...e){const t={};for(let r=0;rQt||Wt;let ad,jp;{const e=DC(),t=(r,n)=>{let i;return(i=e[r])||(i=e[r]=[]),i.push(n),a=>{i.length>1?i.forEach(o=>o(a)):i[0](a)}};ad=t("__VUE_INSTANCE_SETTERS__",r=>Qt=r),jp=t("__VUE_SSR_SETTERS__",r=>rh=r)}const Yu=e=>{const t=Qt;return ad(e),e.scope.on(),()=>{e.scope.off(),ad(t)}},I_=()=>{Qt&&Qt.scope.off(),ad(null)};function LT(e){return e.vnode.shapeFlag&4}let rh=!1;function bO(e,t=!1){t&&jp(t);const{props:r,children:n}=e.vnode,i=LT(e);rO(e,r,i,t),aO(e,n);const a=i?wO(e,t):void 0;return t&&jp(!1),a}function wO(e,t){const r=e.type;e.accessCache=Object.create(null),e.proxy=XC(new Proxy(e.ctx,jI));const{setup:n}=r;if(n){const i=e.setupContext=n.length>1?IT(e):null,a=Yu(e);Co();const o=ra(n,e,0,[e.props,i]);if(To(),a(),Qc(o)){if(o.then(I_,I_),t)return o.then(s=>{O_(e,s,t)}).catch(s=>{Xd(s,e,0)});e.asyncDep=o}else O_(e,o,t)}else DT(e,t)}function O_(e,t,r){De(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:qe(t)&&(e.setupState=tT(t)),DT(e,r)}let R_;function DT(e,t,r){const n=e.type;if(!e.render){if(!t&&R_&&!n.render){const i=n.template||ly(e).template;if(i){const{isCustomElement:a,compilerOptions:o}=e.appContext.config,{delimiters:s,compilerOptions:l}=n,u=$t($t({isCustomElement:a,delimiters:s},o),l);n.render=R_(i,u)}}e.render=n.render||Bt}{const i=Yu(e);Co();try{KI(e)}finally{To(),i()}}}function SO(e){return e.attrsProxy||(e.attrsProxy=new Proxy(e.attrs,{get(t,r){return Lr(e,"get","$attrs"),t[r]}}))}function IT(e){const t=r=>{e.exposed=r||{}};return{get attrs(){return SO(e)},slots:e.slots,emit:e.emit,expose:t}}function nh(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(tT(XC(e.exposed)),{get(t,r){if(r in t)return t[r];if(r in Ol)return Ol[r](e)},has(t,r){return r in t||r in Ol}}))}function xO(e,t=!0){return De(e)?e.displayName||e.name:e.name||t&&e.__name}function CO(e){return De(e)&&"__vccOpts"in e}const k=(e,t)=>QC(e,t,rh);function Te(e,t,r){const n=arguments.length;return n===2?qe(t)&&!_e(t)?la(t)?Z(e,null,[t]):Z(e,t):Z(e,null,t):(n>3?r=Array.prototype.slice.call(arguments,2):n===3&&la(r)&&(r=[r]),Z(e,t,r))}const TO="3.4.15",MO=Bt;/** +**/function ra(e,t,r,n){let i;try{i=n?e(...n):e()}catch(a){Xd(a,t,r)}return i}function sn(e,t,r,n){if(De(e)){const a=ra(e,t,r,n);return a&&Qc(a)&&a.catch(o=>{Xd(o,t,r)}),a}const i=[];for(let a=0;a>>1,i=or[n],a=uu(i);azn&&or.splice(t,1)}function xI(e){_e(e)?ls.push(...e):(!Yi||!Yi.includes(e,e.allowRecurse?Ua+1:Ua))&&ls.push(e),iT()}function m_(e,t,r=lu?zn+1:0){for(;ruu(r)-uu(n));if(ls.length=0,Yi){Yi.push(...t);return}for(Yi=t,Ua=0;Uae.id==null?1/0:e.id,CI=(e,t)=>{const r=uu(e)-uu(t);if(r===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return r};function oT(e){$p=!1,lu=!0,or.sort(CI);try{for(zn=0;znze(d)?d.trim():d)),c&&(i=r.map($D))}let s,l=n[s=xc(t)]||n[s=xc(Pn(t))];!l&&a&&(l=n[s=xc(xo(t))]),l&&sn(l,e,6,i);const u=n[s+"Once"];if(u){if(!e.emitted)e.emitted={};else if(e.emitted[s])return;e.emitted[s]=!0,sn(u,e,6,i)}}function sT(e,t,r=!1){const n=t.emitsCache,i=n.get(e);if(i!==void 0)return i;const a=e.emits;let o={},s=!1;if(!De(e)){const l=u=>{const f=sT(u,t,!0);f&&(s=!0,Ht(o,f))};!r&&t.mixins.length&&t.mixins.forEach(l),e.extends&&l(e.extends),e.mixins&&e.mixins.forEach(l)}return!a&&!s?(qe(e)&&n.set(e,null),null):(_e(a)?a.forEach(l=>o[l]=null):Ht(o,a),qe(e)&&n.set(e,o),o)}function Zd(e,t){return!e||!Wd(t)?!1:(t=t.slice(2).replace(/Once$/,""),Ue(e,t[0].toLowerCase()+t.slice(1))||Ue(e,xo(t))||Ue(e,t))}let Wt=null,lT=null;function rd(e){const t=Wt;return Wt=e,lT=e&&e.type.__scopeId||null,t}function q(e,t=Wt,r){if(!t||e._n)return e;const n=(...i)=>{n._d&&D_(-1);const a=rd(t);let o;try{o=e(...i)}finally{rd(a),n._d&&D_(1)}return o};return n._n=!0,n._c=!0,n._d=!0,n}function Gh(e){const{type:t,vnode:r,proxy:n,withProxy:i,props:a,propsOptions:[o],slots:s,attrs:l,emit:u,render:f,renderCache:c,data:h,setupState:d,ctx:v,inheritAttrs:p}=e;let m,g;const y=rd(e);try{if(r.shapeFlag&4){const b=i||n,x=b;m=Hn(f.call(x,b,c,a,d,h,v)),g=l}else{const b=t;m=Hn(b.length>1?b(a,{attrs:l,slots:s,emit:u}):b(a,null)),g=t.props?l:MI(l)}}catch(b){kl.length=0,Xd(b,e,1),m=Z(Mr)}let _=m;if(g&&p!==!1){const b=Object.keys(g),{shapeFlag:x}=_;b.length&&x&7&&(o&&b.some(Gm)&&(g=AI(g,o)),_=_i(_,g))}return r.dirs&&(_=_i(_),_.dirs=_.dirs?_.dirs.concat(r.dirs):r.dirs),r.transition&&(_.transition=r.transition),m=_,rd(y),m}const MI=e=>{let t;for(const r in e)(r==="class"||r==="style"||Wd(r))&&((t||(t={}))[r]=e[r]);return t},AI=(e,t)=>{const r={};for(const n in e)(!Gm(n)||!(n.slice(9)in t))&&(r[n]=e[n]);return r};function PI(e,t,r){const{props:n,children:i,component:a}=e,{props:o,children:s,patchFlag:l}=t,u=a.emitsOptions;if(t.dirs||t.transition)return!0;if(r&&l>=0){if(l&1024)return!0;if(l&16)return n?y_(n,o,u):!!o;if(l&8){const f=t.dynamicProps;for(let c=0;ce.__isSuspense;function II(e,t){t&&t.pendingBranch?_e(e)?t.effects.push(...e):t.effects.push(e):xI(e)}const OI=Symbol.for("v-scx"),RI=()=>Le(OI);function na(e,t){return oy(e,null,t)}const _f={};function be(e,t,r){return oy(e,t,r)}function oy(e,t,{immediate:r,deep:n,flush:i,once:a,onTrack:o,onTrigger:s}=St){if(t&&a){const w=t;t=(...S)=>{w(...S),x()}}const l=Qt,u=w=>n===!0?w:Xa(w,n===!1?1:void 0);let f,c=!1,h=!1;if(Pt(e)?(f=()=>e.value,c=td(e)):ss(e)?(f=()=>u(e),c=!0):_e(e)?(h=!0,c=e.some(w=>ss(w)||td(w)),f=()=>e.map(w=>{if(Pt(w))return w.value;if(ss(w))return u(w);if(De(w))return ra(w,l,2)})):De(e)?t?f=()=>ra(e,l,2):f=()=>(d&&d(),sn(e,l,3,[v])):f=Ft,t&&n){const w=f;f=()=>Xa(w())}let d,v=w=>{d=_.onStop=()=>{ra(w,l,4),d=_.onStop=void 0}},p;if(rh)if(v=Ft,t?r&&sn(t,l,3,[f(),h?[]:void 0,v]):f(),i==="sync"){const w=RI();p=w.__watcherHandles||(w.__watcherHandles=[])}else return Ft;let m=h?new Array(e.length).fill(_f):_f;const g=()=>{if(!(!_.active||!_.dirty))if(t){const w=_.run();(n||c||(h?w.some((S,C)=>sa(S,m[C])):sa(w,m)))&&(d&&d(),sn(t,l,3,[w,m===_f?void 0:h&&m[0]===_f?[]:m,v]),m=w)}else _.run()};g.allowRecurse=!!t;let y;i==="sync"?y=g:i==="post"?y=()=>Sr(g,l&&l.suspense):(g.pre=!0,l&&(g.id=l.uid),y=()=>ny(g));const _=new jm(f,Ft,y),b=kC(),x=()=>{_.stop(),b&&Um(b.effects,_)};return t?r?g():m=_.run():i==="post"?Sr(_.run.bind(_),l&&l.suspense):_.run(),p&&p.push(x),x}function kI(e,t,r){const n=this.proxy,i=ze(e)?e.includes(".")?cT(n,e):()=>n[e]:e.bind(n,n);let a;De(t)?a=t:(a=t.handler,r=t);const o=Yu(this),s=oy(i,a.bind(n),r);return o(),s}function cT(e,t){const r=t.split(".");return()=>{let n=e;for(let i=0;i0){if(r>=t)return e;r++}if(n=n||new Set,n.has(e))return e;if(n.add(e),Pt(e))Xa(e.value,t,r,n);else if(_e(e))for(let i=0;i{Xa(i,t,r,n)});else if(LC(e))for(const i in e)Xa(e[i],t,r,n);return e}function qt(e,t){if(Wt===null)return e;const r=nh(Wt)||Wt.proxy,n=e.dirs||(e.dirs=[]);for(let i=0;i{e.isMounted=!0}),tr(()=>{e.isUnmounting=!0}),e}const jr=[Function,Array],hT={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:jr,onEnter:jr,onAfterEnter:jr,onEnterCancelled:jr,onBeforeLeave:jr,onLeave:jr,onAfterLeave:jr,onLeaveCancelled:jr,onBeforeAppear:jr,onAppear:jr,onAfterAppear:jr,onAppearCancelled:jr},NI={name:"BaseTransition",props:hT,setup(e,{slots:t}){const r=it(),n=dT();let i;return()=>{const a=t.default&&sy(t.default(),!0);if(!a||!a.length)return;let o=a[0];if(a.length>1){for(const p of a)if(p.type!==Mr){o=p;break}}const s=Qe(e),{mode:l}=s;if(n.isLeaving)return Uh(o);const u=b_(o);if(!u)return Uh(o);const f=fu(u,s,n,r);cu(u,f);const c=r.subTree,h=c&&b_(c);let d=!1;const{getTransitionKey:v}=u.type;if(v){const p=v();i===void 0?i=p:p!==i&&(i=p,d=!0)}if(h&&h.type!==Mr&&(!Ya(u,h)||d)){const p=fu(h,s,n,r);if(cu(h,p),l==="out-in")return n.isLeaving=!0,p.afterLeave=()=>{n.isLeaving=!1,r.update.active!==!1&&(r.effect.dirty=!0,r.update())},Uh(o);l==="in-out"&&u.type!==Mr&&(p.delayLeave=(m,g,y)=>{const _=vT(n,h);_[String(h.key)]=h,m[ji]=()=>{g(),m[ji]=void 0,delete f.delayedLeave},f.delayedLeave=y})}return o}}},BI=NI;function vT(e,t){const{leavingVNodes:r}=e;let n=r.get(t.type);return n||(n=Object.create(null),r.set(t.type,n)),n}function fu(e,t,r,n){const{appear:i,mode:a,persisted:o=!1,onBeforeEnter:s,onEnter:l,onAfterEnter:u,onEnterCancelled:f,onBeforeLeave:c,onLeave:h,onAfterLeave:d,onLeaveCancelled:v,onBeforeAppear:p,onAppear:m,onAfterAppear:g,onAppearCancelled:y}=t,_=String(e.key),b=vT(r,e),x=(C,M)=>{C&&sn(C,n,9,M)},w=(C,M)=>{const A=M[1];x(C,M),_e(C)?C.every(P=>P.length<=1)&&A():C.length<=1&&A()},S={mode:a,persisted:o,beforeEnter(C){let M=s;if(!r.isMounted)if(i)M=p||s;else return;C[ji]&&C[ji](!0);const A=b[_];A&&Ya(e,A)&&A.el[ji]&&A.el[ji](),x(M,[C])},enter(C){let M=l,A=u,P=f;if(!r.isMounted)if(i)M=m||l,A=g||u,P=y||f;else return;let E=!1;const L=C[bf]=O=>{E||(E=!0,O?x(P,[C]):x(A,[C]),S.delayedLeave&&S.delayedLeave(),C[bf]=void 0)};M?w(M,[C,L]):L()},leave(C,M){const A=String(e.key);if(C[bf]&&C[bf](!0),r.isUnmounting)return M();x(c,[C]);let P=!1;const E=C[ji]=L=>{P||(P=!0,M(),L?x(v,[C]):x(d,[C]),C[ji]=void 0,b[A]===e&&delete b[A])};b[A]=e,h?w(h,[C,E]):E()},clone(C){return fu(C,t,r,n)}};return S}function Uh(e){if(Qd(e))return e=_i(e),e.children=null,e}function b_(e){return Qd(e)?e.children?e.children[0]:void 0:e}function cu(e,t){e.shapeFlag&6&&e.component?cu(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function sy(e,t=!1,r){let n=[],i=0;for(let a=0;a1)for(let a=0;a!!e.type.__asyncLoader,Qd=e=>e.type.__isKeepAlive;function FI(e,t){gT(e,"a",t)}function pT(e,t){gT(e,"da",t)}function gT(e,t,r=Qt){const n=e.__wdc||(e.__wdc=()=>{let i=r;for(;i;){if(i.isDeactivated)return;i=i.parent}return e()});if(Jd(t,n,r),r){let i=r.parent;for(;i&&i.parent;)Qd(i.parent.vnode)&&$I(n,t,r,i),i=i.parent}}function $I(e,t,r,n){const i=Jd(t,e,n,!0);ks(()=>{Um(n[t],i)},r)}function Jd(e,t,r=Qt,n=!1){if(r){const i=r[e]||(r[e]=[]),a=t.__weh||(t.__weh=(...o)=>{if(r.isUnmounted)return;Co();const s=Yu(r),l=sn(t,r,e,o);return s(),To(),l});return n?i.unshift(a):i.push(a),a}}const Ai=e=>(t,r=Qt)=>(!rh||e==="sp")&&Jd(e,(...n)=>t(...n),r),eh=Ai("bm"),_t=Ai("m"),HI=Ai("bu"),Uu=Ai("u"),tr=Ai("bum"),ks=Ai("um"),zI=Ai("sp"),VI=Ai("rtg"),WI=Ai("rtc");function GI(e,t=Qt){Jd("ec",e,t)}function Hp(e,t,r,n){let i;const a=r&&r[n];if(_e(e)||ze(e)){i=new Array(e.length);for(let o=0,s=e.length;ot(o,s,void 0,a&&a[s]));else{const o=Object.keys(e);i=new Array(o.length);for(let s=0,l=o.length;s{const a=n.fn(...i);return a&&(a.key=n.key),a}:n.fn)}return e}function Ce(e,t,r={},n,i){if(Wt.isCE||Wt.parent&&Il(Wt.parent)&&Wt.parent.isCE)return t!=="default"&&(r.name=t),Z("slot",r,n&&n());let a=e[t];a&&a._c&&(a._d=!1),G();const o=a&&mT(a(r)),s=ve(ft,{key:r.key||o&&o.key||`_${t}`},o||(n?n():[]),o&&e._===1?64:-2);return!i&&s.scopeId&&(s.slotScopeIds=[s.scopeId+"-s"]),a&&a._c&&(a._d=!0),s}function mT(e){return e.some(t=>la(t)?!(t.type===Mr||t.type===ft&&!mT(t.children)):!0)?e:null}function YI(e,t){const r={};for(const n in e)r[t&&/[A-Z]/.test(n)?`on:${n}`:xc(n)]=e[n];return r}const zp=e=>e?LT(e)?nh(e)||e.proxy:zp(e.parent):null,Ol=Ht(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>zp(e.parent),$root:e=>zp(e.root),$emit:e=>e.emit,$options:e=>ly(e),$forceUpdate:e=>e.f||(e.f=()=>{e.effect.dirty=!0,ny(e.update)}),$nextTick:e=>e.n||(e.n=Nt.bind(e.proxy)),$watch:e=>kI.bind(e)}),Yh=(e,t)=>e!==St&&!e.__isScriptSetup&&Ue(e,t),jI={get({_:e},t){const{ctx:r,setupState:n,data:i,props:a,accessCache:o,type:s,appContext:l}=e;let u;if(t[0]!=="$"){const d=o[t];if(d!==void 0)switch(d){case 1:return n[t];case 2:return i[t];case 4:return r[t];case 3:return a[t]}else{if(Yh(n,t))return o[t]=1,n[t];if(i!==St&&Ue(i,t))return o[t]=2,i[t];if((u=e.propsOptions[0])&&Ue(u,t))return o[t]=3,a[t];if(r!==St&&Ue(r,t))return o[t]=4,r[t];Vp&&(o[t]=0)}}const f=Ol[t];let c,h;if(f)return t==="$attrs"&&Lr(e,"get",t),f(e);if((c=s.__cssModules)&&(c=c[t]))return c;if(r!==St&&Ue(r,t))return o[t]=4,r[t];if(h=l.config.globalProperties,Ue(h,t))return h[t]},set({_:e},t,r){const{data:n,setupState:i,ctx:a}=e;return Yh(i,t)?(i[t]=r,!0):n!==St&&Ue(n,t)?(n[t]=r,!0):Ue(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(a[t]=r,!0)},has({_:{data:e,setupState:t,accessCache:r,ctx:n,appContext:i,propsOptions:a}},o){let s;return!!r[o]||e!==St&&Ue(e,o)||Yh(t,o)||(s=a[0])&&Ue(s,o)||Ue(n,o)||Ue(Ol,o)||Ue(i.config.globalProperties,o)},defineProperty(e,t,r){return r.get!=null?e._.accessCache[t]=0:Ue(r,"value")&&this.set(e,t,r.value,null),Reflect.defineProperty(e,t,r)}};function Ns(){return qI().slots}function qI(){const e=it();return e.setupContext||(e.setupContext=IT(e))}function w_(e){return _e(e)?e.reduce((t,r)=>(t[r]=null,t),{}):e}let Vp=!0;function KI(e){const t=ly(e),r=e.proxy,n=e.ctx;Vp=!1,t.beforeCreate&&S_(t.beforeCreate,e,"bc");const{data:i,computed:a,methods:o,watch:s,provide:l,inject:u,created:f,beforeMount:c,mounted:h,beforeUpdate:d,updated:v,activated:p,deactivated:m,beforeDestroy:g,beforeUnmount:y,destroyed:_,unmounted:b,render:x,renderTracked:w,renderTriggered:S,errorCaptured:C,serverPrefetch:M,expose:A,inheritAttrs:P,components:E,directives:L,filters:O}=t;if(u&&XI(u,n,null),o)for(const V in o){const U=o[V];De(U)&&(n[V]=U.bind(r))}if(i){const V=i.call(r,r);qe(V)&&(e.data=Ln(V))}if(Vp=!0,a)for(const V in a){const U=a[V],F=De(U)?U.bind(r,r):De(U.get)?U.get.bind(r,r):Ft,z=!De(U)&&De(U.set)?U.set.bind(r):Ft,ee=k({get:F,set:z});Object.defineProperty(n,V,{enumerable:!0,configurable:!0,get:()=>ee.value,set:J=>ee.value=J})}if(s)for(const V in s)yT(s[V],n,r,V);if(l){const V=De(l)?l.call(r):l;Reflect.ownKeys(V).forEach(U=>{Dt(U,V[U])})}f&&S_(f,e,"c");function H(V,U){_e(U)?U.forEach(F=>V(F.bind(r))):U&&V(U.bind(r))}if(H(eh,c),H(_t,h),H(HI,d),H(Uu,v),H(FI,p),H(pT,m),H(GI,C),H(WI,w),H(VI,S),H(tr,y),H(ks,b),H(zI,M),_e(A))if(A.length){const V=e.exposed||(e.exposed={});A.forEach(U=>{Object.defineProperty(V,U,{get:()=>r[U],set:F=>r[U]=F})})}else e.exposed||(e.exposed={});x&&e.render===Ft&&(e.render=x),P!=null&&(e.inheritAttrs=P),E&&(e.components=E),L&&(e.directives=L)}function XI(e,t,r=Ft){_e(e)&&(e=Wp(e));for(const n in e){const i=e[n];let a;qe(i)?"default"in i?a=Le(i.from||n,i.default,!0):a=Le(i.from||n):a=Le(i),Pt(a)?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>a.value,set:o=>a.value=o}):t[n]=a}}function S_(e,t,r){sn(_e(e)?e.map(n=>n.bind(t.proxy)):e.bind(t.proxy),t,r)}function yT(e,t,r,n){const i=n.includes(".")?cT(r,n):()=>r[n];if(ze(e)){const a=t[e];De(a)&&be(i,a)}else if(De(e))be(i,e.bind(r));else if(qe(e))if(_e(e))e.forEach(a=>yT(a,t,r,n));else{const a=De(e.handler)?e.handler.bind(r):t[e.handler];De(a)&&be(i,a,e)}}function ly(e){const t=e.type,{mixins:r,extends:n}=t,{mixins:i,optionsCache:a,config:{optionMergeStrategies:o}}=e.appContext,s=a.get(t);let l;return s?l=s:!i.length&&!r&&!n?l=t:(l={},i.length&&i.forEach(u=>nd(l,u,o,!0)),nd(l,t,o)),qe(t)&&a.set(t,l),l}function nd(e,t,r,n=!1){const{mixins:i,extends:a}=t;a&&nd(e,a,r,!0),i&&i.forEach(o=>nd(e,o,r,!0));for(const o in t)if(!(n&&o==="expose")){const s=ZI[o]||r&&r[o];e[o]=s?s(e[o],t[o]):t[o]}return e}const ZI={data:x_,props:C_,emits:C_,methods:Sl,computed:Sl,beforeCreate:ur,created:ur,beforeMount:ur,mounted:ur,beforeUpdate:ur,updated:ur,beforeDestroy:ur,beforeUnmount:ur,destroyed:ur,unmounted:ur,activated:ur,deactivated:ur,errorCaptured:ur,serverPrefetch:ur,components:Sl,directives:Sl,watch:JI,provide:x_,inject:QI};function x_(e,t){return t?e?function(){return Ht(De(e)?e.call(this,this):e,De(t)?t.call(this,this):t)}:t:e}function QI(e,t){return Sl(Wp(e),Wp(t))}function Wp(e){if(_e(e)){const t={};for(let r=0;r1)return r&&De(t)?t.call(n&&n.proxy):t}}function rO(e,t,r,n=!1){const i={},a={};Jc(a,th,1),e.propsDefaults=Object.create(null),bT(e,t,i,a);for(const o in e.propsOptions[0])o in i||(i[o]=void 0);r?e.props=n?i:Qm(i):e.type.props?e.props=i:e.props=a,e.attrs=a}function nO(e,t,r,n){const{props:i,attrs:a,vnode:{patchFlag:o}}=e,s=Qe(i),[l]=e.propsOptions;let u=!1;if((n||o>0)&&!(o&16)){if(o&8){const f=e.vnode.dynamicProps;for(let c=0;c{l=!0;const[h,d]=wT(c,t,!0);Ht(o,h),d&&s.push(...d)};!r&&t.mixins.length&&t.mixins.forEach(f),e.extends&&f(e.extends),e.mixins&&e.mixins.forEach(f)}if(!a&&!l)return qe(e)&&n.set(e,as),as;if(_e(a))for(let f=0;f-1,d[1]=p<0||v-1||Ue(d,"default"))&&s.push(c)}}}const u=[o,s];return qe(e)&&n.set(e,u),u}function T_(e){return e[0]!=="$"}function M_(e){const t=e&&e.toString().match(/^\s*(function|class) (\w+)/);return t?t[2]:e===null?"null":""}function A_(e,t){return M_(e)===M_(t)}function P_(e,t){return _e(t)?t.findIndex(r=>A_(r,e)):De(t)&&A_(t,e)?0:-1}const ST=e=>e[0]==="_"||e==="$stable",uy=e=>_e(e)?e.map(Hn):[Hn(e)],iO=(e,t,r)=>{if(t._n)return t;const n=q((...i)=>uy(t(...i)),r);return n._c=!1,n},xT=(e,t,r)=>{const n=e._ctx;for(const i in e){if(ST(i))continue;const a=e[i];if(De(a))t[i]=iO(i,a,n);else if(a!=null){const o=uy(a);t[i]=()=>o}}},CT=(e,t)=>{const r=uy(t);e.slots.default=()=>r},aO=(e,t)=>{if(e.vnode.shapeFlag&32){const r=t._;r?(e.slots=Qe(t),Jc(t,"_",r)):xT(t,e.slots={})}else e.slots={},t&&CT(e,t);Jc(e.slots,th,1)},oO=(e,t,r)=>{const{vnode:n,slots:i}=e;let a=!0,o=St;if(n.shapeFlag&32){const s=t._;s?r&&s===1?a=!1:(Ht(i,t),!r&&s===1&&delete i._):(a=!t.$stable,xT(t,i)),o=t}else t&&(CT(e,t),o={default:1});if(a)for(const s in i)!ST(s)&&o[s]==null&&delete i[s]};function Up(e,t,r,n,i=!1){if(_e(e)){e.forEach((h,d)=>Up(h,t&&(_e(t)?t[d]:t),r,n,i));return}if(Il(n)&&!i)return;const a=n.shapeFlag&4?nh(n.component)||n.component.proxy:n.el,o=i?null:a,{i:s,r:l}=e,u=t&&t.r,f=s.refs===St?s.refs={}:s.refs,c=s.setupState;if(u!=null&&u!==l&&(ze(u)?(f[u]=null,Ue(c,u)&&(c[u]=null)):Pt(u)&&(u.value=null)),De(l))ra(l,s,12,[o,f]);else{const h=ze(l),d=Pt(l),v=e.f;if(h||d){const p=()=>{if(v){const m=h?Ue(c,l)?c[l]:f[l]:l.value;i?_e(m)&&Um(m,a):_e(m)?m.includes(a)||m.push(a):h?(f[l]=[a],Ue(c,l)&&(c[l]=f[l])):(l.value=[a],e.k&&(f[e.k]=l.value))}else h?(f[l]=o,Ue(c,l)&&(c[l]=o)):d&&(l.value=o,e.k&&(f[e.k]=o))};i||v?p():(p.id=-1,Sr(p,r))}}}const Sr=II;function sO(e){return lO(e)}function lO(e,t){const r=DC();r.__VUE__=!0;const{insert:n,remove:i,patchProp:a,createElement:o,createText:s,createComment:l,setText:u,setElementText:f,parentNode:c,nextSibling:h,setScopeId:d=Ft,insertStaticContent:v}=e,p=(D,I,W,X=null,j=null,le=null,fe=void 0,ae=null,se=!!I.dynamicChildren)=>{if(D===I)return;D&&!Ya(D,I)&&(X=B(D),J(D,j,le,!0),D=null),I.patchFlag===-2&&(se=!1,I.dynamicChildren=null);const{type:ne,ref:de,shapeFlag:Me}=I;switch(ne){case Bs:m(D,I,W,X);break;case Mr:g(D,I,W,X);break;case qh:D==null&&y(I,W,X,fe);break;case ft:E(D,I,W,X,j,le,fe,ae,se);break;default:Me&1?x(D,I,W,X,j,le,fe,ae,se):Me&6?L(D,I,W,X,j,le,fe,ae,se):(Me&64||Me&128)&&ne.process(D,I,W,X,j,le,fe,ae,se,Q)}de!=null&&j&&Up(de,D&&D.ref,le,I||D,!I)},m=(D,I,W,X)=>{if(D==null)n(I.el=s(I.children),W,X);else{const j=I.el=D.el;I.children!==D.children&&u(j,I.children)}},g=(D,I,W,X)=>{D==null?n(I.el=l(I.children||""),W,X):I.el=D.el},y=(D,I,W,X)=>{[D.el,D.anchor]=v(D.children,I,W,X,D.el,D.anchor)},_=({el:D,anchor:I},W,X)=>{let j;for(;D&&D!==I;)j=h(D),n(D,W,X),D=j;n(I,W,X)},b=({el:D,anchor:I})=>{let W;for(;D&&D!==I;)W=h(D),i(D),D=W;i(I)},x=(D,I,W,X,j,le,fe,ae,se)=>{I.type==="svg"?fe="svg":I.type==="math"&&(fe="mathml"),D==null?w(I,W,X,j,le,fe,ae,se):M(D,I,j,le,fe,ae,se)},w=(D,I,W,X,j,le,fe,ae)=>{let se,ne;const{props:de,shapeFlag:Me,transition:Se,dirs:ke}=D;if(se=D.el=o(D.type,le,de&&de.is,de),Me&8?f(se,D.children):Me&16&&C(D.children,se,null,X,j,jh(D,le),fe,ae),ke&&ma(D,null,X,"created"),S(se,D,D.scopeId,fe,X),de){for(const rt in de)rt!=="value"&&!Sc(rt)&&a(se,rt,null,de[rt],le,D.children,X,j,Ie);"value"in de&&a(se,"value",null,de.value,le),(ne=de.onVnodeBeforeMount)&&kn(ne,X,D)}ke&&ma(D,null,X,"beforeMount");const Ve=uO(j,Se);Ve&&Se.beforeEnter(se),n(se,I,W),((ne=de&&de.onVnodeMounted)||Ve||ke)&&Sr(()=>{ne&&kn(ne,X,D),Ve&&Se.enter(se),ke&&ma(D,null,X,"mounted")},j)},S=(D,I,W,X,j)=>{if(W&&d(D,W),X)for(let le=0;le{for(let ne=se;ne{const ae=I.el=D.el;let{patchFlag:se,dynamicChildren:ne,dirs:de}=I;se|=D.patchFlag&16;const Me=D.props||St,Se=I.props||St;let ke;if(W&&ya(W,!1),(ke=Se.onVnodeBeforeUpdate)&&kn(ke,W,I,D),de&&ma(I,D,W,"beforeUpdate"),W&&ya(W,!0),ne?A(D.dynamicChildren,ne,ae,W,X,jh(I,j),le):fe||U(D,I,ae,null,W,X,jh(I,j),le,!1),se>0){if(se&16)P(ae,I,Me,Se,W,X,j);else if(se&2&&Me.class!==Se.class&&a(ae,"class",null,Se.class,j),se&4&&a(ae,"style",Me.style,Se.style,j),se&8){const Ve=I.dynamicProps;for(let rt=0;rt{ke&&kn(ke,W,I,D),de&&ma(I,D,W,"updated")},X)},A=(D,I,W,X,j,le,fe)=>{for(let ae=0;ae{if(W!==X){if(W!==St)for(const ae in W)!Sc(ae)&&!(ae in X)&&a(D,ae,W[ae],null,fe,I.children,j,le,Ie);for(const ae in X){if(Sc(ae))continue;const se=X[ae],ne=W[ae];se!==ne&&ae!=="value"&&a(D,ae,ne,se,fe,I.children,j,le,Ie)}"value"in X&&a(D,"value",W.value,X.value,fe)}},E=(D,I,W,X,j,le,fe,ae,se)=>{const ne=I.el=D?D.el:s(""),de=I.anchor=D?D.anchor:s("");let{patchFlag:Me,dynamicChildren:Se,slotScopeIds:ke}=I;ke&&(ae=ae?ae.concat(ke):ke),D==null?(n(ne,W,X),n(de,W,X),C(I.children||[],W,de,j,le,fe,ae,se)):Me>0&&Me&64&&Se&&D.dynamicChildren?(A(D.dynamicChildren,Se,W,j,le,fe,ae),(I.key!=null||j&&I===j.subTree)&&fy(D,I,!0)):U(D,I,W,de,j,le,fe,ae,se)},L=(D,I,W,X,j,le,fe,ae,se)=>{I.slotScopeIds=ae,D==null?I.shapeFlag&512?j.ctx.activate(I,W,X,fe,se):O(I,W,X,j,le,fe,se):N(D,I,se)},O=(D,I,W,X,j,le,fe)=>{const ae=D.component=_O(D,X,j);if(Qd(D)&&(ae.ctx.renderer=Q),bO(ae),ae.asyncDep){if(j&&j.registerDep(ae,H),!D.el){const se=ae.subTree=Z(Mr);g(null,se,I,W)}}else H(ae,D,I,W,j,le,fe)},N=(D,I,W)=>{const X=I.component=D.component;if(PI(D,I,W))if(X.asyncDep&&!X.asyncResolved){V(X,I,W);return}else X.next=I,SI(X.update),X.effect.dirty=!0,X.update();else I.el=D.el,X.vnode=I},H=(D,I,W,X,j,le,fe)=>{const ae=()=>{if(D.isMounted){let{next:de,bu:Me,u:Se,parent:ke,vnode:Ve}=D;{const We=TT(D);if(We){de&&(de.el=Ve.el,V(D,de,fe)),We.asyncDep.then(()=>{D.isUnmounted||ae()});return}}let rt=de,bt;ya(D,!1),de?(de.el=Ve.el,V(D,de,fe)):de=Ve,Me&&Cc(Me),(bt=de.props&&de.props.onVnodeBeforeUpdate)&&kn(bt,ke,de,Ve),ya(D,!0);const he=Gh(D),Pe=D.subTree;D.subTree=he,p(Pe,he,c(Pe.el),B(Pe),D,j,le),de.el=he.el,rt===null&&EI(D,he.el),Se&&Sr(Se,j),(bt=de.props&&de.props.onVnodeUpdated)&&Sr(()=>kn(bt,ke,de,Ve),j)}else{let de;const{el:Me,props:Se}=I,{bm:ke,m:Ve,parent:rt}=D,bt=Il(I);if(ya(D,!1),ke&&Cc(ke),!bt&&(de=Se&&Se.onVnodeBeforeMount)&&kn(de,rt,I),ya(D,!0),Me&&pe){const he=()=>{D.subTree=Gh(D),pe(Me,D.subTree,D,j,null)};bt?I.type.__asyncLoader().then(()=>!D.isUnmounted&&he()):he()}else{const he=D.subTree=Gh(D);p(null,he,W,X,D,j,le),I.el=he.el}if(Ve&&Sr(Ve,j),!bt&&(de=Se&&Se.onVnodeMounted)){const he=I;Sr(()=>kn(de,rt,he),j)}(I.shapeFlag&256||rt&&Il(rt.vnode)&&rt.vnode.shapeFlag&256)&&D.a&&Sr(D.a,j),D.isMounted=!0,I=W=X=null}},se=D.effect=new jm(ae,Ft,()=>ny(ne),D.scope),ne=D.update=()=>{se.dirty&&se.run()};ne.id=D.uid,ya(D,!0),ne()},V=(D,I,W)=>{I.component=D;const X=D.vnode.props;D.vnode=I,D.next=null,nO(D,I.props,X,W),oO(D,I.children,W),Co(),m_(D),To()},U=(D,I,W,X,j,le,fe,ae,se=!1)=>{const ne=D&&D.children,de=D?D.shapeFlag:0,Me=I.children,{patchFlag:Se,shapeFlag:ke}=I;if(Se>0){if(Se&128){z(ne,Me,W,X,j,le,fe,ae,se);return}else if(Se&256){F(ne,Me,W,X,j,le,fe,ae,se);return}}ke&8?(de&16&&Ie(ne,j,le),Me!==ne&&f(W,Me)):de&16?ke&16?z(ne,Me,W,X,j,le,fe,ae,se):Ie(ne,j,le,!0):(de&8&&f(W,""),ke&16&&C(Me,W,X,j,le,fe,ae,se))},F=(D,I,W,X,j,le,fe,ae,se)=>{D=D||as,I=I||as;const ne=D.length,de=I.length,Me=Math.min(ne,de);let Se;for(Se=0;Sede?Ie(D,j,le,!0,!1,Me):C(I,W,X,j,le,fe,ae,se,Me)},z=(D,I,W,X,j,le,fe,ae,se)=>{let ne=0;const de=I.length;let Me=D.length-1,Se=de-1;for(;ne<=Me&&ne<=Se;){const ke=D[ne],Ve=I[ne]=se?qi(I[ne]):Hn(I[ne]);if(Ya(ke,Ve))p(ke,Ve,W,null,j,le,fe,ae,se);else break;ne++}for(;ne<=Me&&ne<=Se;){const ke=D[Me],Ve=I[Se]=se?qi(I[Se]):Hn(I[Se]);if(Ya(ke,Ve))p(ke,Ve,W,null,j,le,fe,ae,se);else break;Me--,Se--}if(ne>Me){if(ne<=Se){const ke=Se+1,Ve=keSe)for(;ne<=Me;)J(D[ne],j,le,!0),ne++;else{const ke=ne,Ve=ne,rt=new Map;for(ne=Ve;ne<=Se;ne++){const gt=I[ne]=se?qi(I[ne]):Hn(I[ne]);gt.key!=null&&rt.set(gt.key,ne)}let bt,he=0;const Pe=Se-Ve+1;let We=!1,Ge=0;const et=new Array(Pe);for(ne=0;ne=Pe){J(gt,j,le,!0);continue}let Kt;if(gt.key!=null)Kt=rt.get(gt.key);else for(bt=Ve;bt<=Se;bt++)if(et[bt-Ve]===0&&Ya(gt,I[bt])){Kt=bt;break}Kt===void 0?J(gt,j,le,!0):(et[Kt-Ve]=ne+1,Kt>=Ge?Ge=Kt:We=!0,p(gt,I[Kt],W,null,j,le,fe,ae,se),he++)}const zt=We?fO(et):as;for(bt=zt.length-1,ne=Pe-1;ne>=0;ne--){const gt=Ve+ne,Kt=I[gt],Yr=gt+1{const{el:le,type:fe,transition:ae,children:se,shapeFlag:ne}=D;if(ne&6){ee(D.component.subTree,I,W,X);return}if(ne&128){D.suspense.move(I,W,X);return}if(ne&64){fe.move(D,I,W,Q);return}if(fe===ft){n(le,I,W);for(let Me=0;Meae.enter(le),j);else{const{leave:Me,delayLeave:Se,afterLeave:ke}=ae,Ve=()=>n(le,I,W),rt=()=>{Me(le,()=>{Ve(),ke&&ke()})};Se?Se(le,Ve,rt):rt()}else n(le,I,W)},J=(D,I,W,X=!1,j=!1)=>{const{type:le,props:fe,ref:ae,children:se,dynamicChildren:ne,shapeFlag:de,patchFlag:Me,dirs:Se}=D;if(ae!=null&&Up(ae,null,W,D,!0),de&256){I.ctx.deactivate(D);return}const ke=de&1&&Se,Ve=!Il(D);let rt;if(Ve&&(rt=fe&&fe.onVnodeBeforeUnmount)&&kn(rt,I,D),de&6)$e(D.component,W,X);else{if(de&128){D.suspense.unmount(W,X);return}ke&&ma(D,null,I,"beforeUnmount"),de&64?D.type.remove(D,I,W,j,Q,X):ne&&(le!==ft||Me>0&&Me&64)?Ie(ne,I,W,!1,!0):(le===ft&&Me&384||!j&&de&16)&&Ie(se,I,W),X&&me(D)}(Ve&&(rt=fe&&fe.onVnodeUnmounted)||ke)&&Sr(()=>{rt&&kn(rt,I,D),ke&&ma(D,null,I,"unmounted")},W)},me=D=>{const{type:I,el:W,anchor:X,transition:j}=D;if(I===ft){we(W,X);return}if(I===qh){b(D);return}const le=()=>{i(W),j&&!j.persisted&&j.afterLeave&&j.afterLeave()};if(D.shapeFlag&1&&j&&!j.persisted){const{leave:fe,delayLeave:ae}=j,se=()=>fe(W,le);ae?ae(D.el,le,se):se()}else le()},we=(D,I)=>{let W;for(;D!==I;)W=h(D),i(D),D=W;i(I)},$e=(D,I,W)=>{const{bum:X,scope:j,update:le,subTree:fe,um:ae}=D;X&&Cc(X),j.stop(),le&&(le.active=!1,J(fe,D,I,W)),ae&&Sr(ae,I),Sr(()=>{D.isUnmounted=!0},I),I&&I.pendingBranch&&!I.isUnmounted&&D.asyncDep&&!D.asyncResolved&&D.suspenseId===I.pendingId&&(I.deps--,I.deps===0&&I.resolve())},Ie=(D,I,W,X=!1,j=!1,le=0)=>{for(let fe=le;feD.shapeFlag&6?B(D.component.subTree):D.shapeFlag&128?D.suspense.next():h(D.anchor||D.el);let Y=!1;const K=(D,I,W)=>{D==null?I._vnode&&J(I._vnode,null,null,!0):p(I._vnode||null,D,I,null,null,null,W),Y||(Y=!0,m_(),aT(),Y=!1),I._vnode=D},Q={p,um:J,m:ee,r:me,mt:O,mc:C,pc:U,pbc:A,n:B,o:e};let oe,pe;return t&&([oe,pe]=t(Q)),{render:K,hydrate:oe,createApp:tO(K,oe)}}function jh({type:e,props:t},r){return r==="svg"&&e==="foreignObject"||r==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:r}function ya({effect:e,update:t},r){e.allowRecurse=t.allowRecurse=r}function uO(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function fy(e,t,r=!1){const n=e.children,i=t.children;if(_e(n)&&_e(i))for(let a=0;a>1,e[r[s]]0&&(t[n]=r[a-1]),r[a]=n)}}for(a=r.length,o=r[a-1];a-- >0;)r[a]=o,o=t[o];return r}function TT(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:TT(t)}const cO=e=>e.__isTeleport,Rl=e=>e&&(e.disabled||e.disabled===""),E_=e=>typeof SVGElement<"u"&&e instanceof SVGElement,L_=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,Yp=(e,t)=>{const r=e&&e.to;return ze(r)?t?t(r):null:r},dO={name:"Teleport",__isTeleport:!0,process(e,t,r,n,i,a,o,s,l,u){const{mc:f,pc:c,pbc:h,o:{insert:d,querySelector:v,createText:p,createComment:m}}=u,g=Rl(t.props);let{shapeFlag:y,children:_,dynamicChildren:b}=t;if(e==null){const x=t.el=p(""),w=t.anchor=p("");d(x,r,n),d(w,r,n);const S=t.target=Yp(t.props,v),C=t.targetAnchor=p("");S&&(d(C,S),o==="svg"||E_(S)?o="svg":(o==="mathml"||L_(S))&&(o="mathml"));const M=(A,P)=>{y&16&&f(_,A,P,i,a,o,s,l)};g?M(r,w):S&&M(S,C)}else{t.el=e.el;const x=t.anchor=e.anchor,w=t.target=e.target,S=t.targetAnchor=e.targetAnchor,C=Rl(e.props),M=C?r:w,A=C?x:S;if(o==="svg"||E_(w)?o="svg":(o==="mathml"||L_(w))&&(o="mathml"),b?(h(e.dynamicChildren,b,M,i,a,o,s),fy(e,t,!0)):l||c(e,t,M,A,i,a,o,s,!1),g)C?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):wf(t,r,x,u,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const P=t.target=Yp(t.props,v);P&&wf(t,P,null,u,0)}else C&&wf(t,w,S,u,1)}AT(t)},remove(e,t,r,n,{um:i,o:{remove:a}},o){const{shapeFlag:s,children:l,anchor:u,targetAnchor:f,target:c,props:h}=e;if(c&&a(f),o&&a(u),s&16){const d=o||!Rl(h);for(let v=0;v0?Sn||as:null,vO(),du>0&&Sn&&Sn.push(e),e}function ce(e,t,r,n,i,a){return PT(te(e,t,r,n,i,a,!0))}function ve(e,t,r,n,i){return PT(Z(e,t,r,n,i,!0))}function la(e){return e?e.__v_isVNode===!0:!1}function Ya(e,t){return e.type===t.type&&e.key===t.key}const th="__vInternal",ET=({key:e})=>e??null,Mc=({ref:e,ref_key:t,ref_for:r})=>(typeof e=="number"&&(e=""+e),e!=null?ze(e)||Pt(e)||De(e)?{i:Wt,r:e,k:t,f:!!r}:e:null);function te(e,t=null,r=null,n=0,i=null,a=e===ft?0:1,o=!1,s=!1){const l={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&ET(t),ref:t&&Mc(t),scopeId:lT,slotScopeIds:null,children:r,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:a,patchFlag:n,dynamicProps:i,dynamicChildren:null,appContext:null,ctx:Wt};return s?(cy(l,r),a&128&&e.normalize(l)):r&&(l.shapeFlag|=ze(r)?8:16),du>0&&!o&&Sn&&(l.patchFlag>0||a&6)&&l.patchFlag!==32&&Sn.push(l),l}const Z=pO;function pO(e,t=null,r=null,n=0,i=null,a=!1){if((!e||e===uT)&&(e=Mr),la(e)){const s=_i(e,t,!0);return r&&cy(s,r),du>0&&!a&&Sn&&(s.shapeFlag&6?Sn[Sn.indexOf(e)]=s:Sn.push(s)),s.patchFlag|=-2,s}if(CO(e)&&(e=e.__vccOpts),t){t=gO(t);let{class:s,style:l}=t;s&&!ze(s)&&(t.class=re(s)),qe(l)&&(KC(l)&&!_e(l)&&(l=Ht({},l)),t.style=ct(l))}const o=ze(e)?1:DI(e)?128:cO(e)?64:qe(e)?4:De(e)?2:0;return te(e,t,r,n,i,o,a,!0)}function gO(e){return e?KC(e)||th in e?Ht({},e):e:null}function _i(e,t,r=!1){const{props:n,ref:i,patchFlag:a,children:o}=e,s=t?ei(n||{},t):n;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:s,key:s&&ET(s),ref:t&&t.ref?r&&i?_e(i)?i.concat(Mc(t)):[i,Mc(t)]:Mc(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:o,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ft?a===-1?16:a|16:a,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&_i(e.ssContent),ssFallback:e.ssFallback&&_i(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function pt(e=" ",t=0){return Z(Bs,null,e,t)}function Ae(e="",t=!1){return t?(G(),ve(Mr,null,e)):Z(Mr,null,e)}function Hn(e){return e==null||typeof e=="boolean"?Z(Mr):_e(e)?Z(ft,null,e.slice()):typeof e=="object"?qi(e):Z(Bs,null,String(e))}function qi(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:_i(e)}function cy(e,t){let r=0;const{shapeFlag:n}=e;if(t==null)t=null;else if(_e(t))r=16;else if(typeof t=="object")if(n&65){const i=t.default;i&&(i._c&&(i._d=!1),cy(e,i()),i._c&&(i._d=!0));return}else{r=32;const i=t._;!i&&!(th in t)?t._ctx=Wt:i===3&&Wt&&(Wt.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else De(t)?(t={default:t,_ctx:Wt},r=32):(t=String(t),n&64?(r=16,t=[pt(t)]):r=8);e.children=t,e.shapeFlag|=r}function ei(...e){const t={};for(let r=0;rQt||Wt;let ad,jp;{const e=DC(),t=(r,n)=>{let i;return(i=e[r])||(i=e[r]=[]),i.push(n),a=>{i.length>1?i.forEach(o=>o(a)):i[0](a)}};ad=t("__VUE_INSTANCE_SETTERS__",r=>Qt=r),jp=t("__VUE_SSR_SETTERS__",r=>rh=r)}const Yu=e=>{const t=Qt;return ad(e),e.scope.on(),()=>{e.scope.off(),ad(t)}},I_=()=>{Qt&&Qt.scope.off(),ad(null)};function LT(e){return e.vnode.shapeFlag&4}let rh=!1;function bO(e,t=!1){t&&jp(t);const{props:r,children:n}=e.vnode,i=LT(e);rO(e,r,i,t),aO(e,n);const a=i?wO(e,t):void 0;return t&&jp(!1),a}function wO(e,t){const r=e.type;e.accessCache=Object.create(null),e.proxy=XC(new Proxy(e.ctx,jI));const{setup:n}=r;if(n){const i=e.setupContext=n.length>1?IT(e):null,a=Yu(e);Co();const o=ra(n,e,0,[e.props,i]);if(To(),a(),Qc(o)){if(o.then(I_,I_),t)return o.then(s=>{O_(e,s,t)}).catch(s=>{Xd(s,e,0)});e.asyncDep=o}else O_(e,o,t)}else DT(e,t)}function O_(e,t,r){De(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:qe(t)&&(e.setupState=tT(t)),DT(e,r)}let R_;function DT(e,t,r){const n=e.type;if(!e.render){if(!t&&R_&&!n.render){const i=n.template||ly(e).template;if(i){const{isCustomElement:a,compilerOptions:o}=e.appContext.config,{delimiters:s,compilerOptions:l}=n,u=Ht(Ht({isCustomElement:a,delimiters:s},o),l);n.render=R_(i,u)}}e.render=n.render||Ft}{const i=Yu(e);Co();try{KI(e)}finally{To(),i()}}}function SO(e){return e.attrsProxy||(e.attrsProxy=new Proxy(e.attrs,{get(t,r){return Lr(e,"get","$attrs"),t[r]}}))}function IT(e){const t=r=>{e.exposed=r||{}};return{get attrs(){return SO(e)},slots:e.slots,emit:e.emit,expose:t}}function nh(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(tT(XC(e.exposed)),{get(t,r){if(r in t)return t[r];if(r in Ol)return Ol[r](e)},has(t,r){return r in t||r in Ol}}))}function xO(e,t=!0){return De(e)?e.displayName||e.name:e.name||t&&e.__name}function CO(e){return De(e)&&"__vccOpts"in e}const k=(e,t)=>QC(e,t,rh);function Te(e,t,r){const n=arguments.length;return n===2?qe(t)&&!_e(t)?la(t)?Z(e,null,[t]):Z(e,t):Z(e,null,t):(n>3?r=Array.prototype.slice.call(arguments,2):n===3&&la(r)&&(r=[r]),Z(e,t,r))}const TO="3.4.15",MO=Ft;/** * @vue/runtime-dom v3.4.15 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT -**/const AO="http://www.w3.org/2000/svg",PO="http://www.w3.org/1998/Math/MathML",Ki=typeof document<"u"?document:null,k_=Ki&&Ki.createElement("template"),EO={insert:(e,t,r)=>{t.insertBefore(e,r||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,r,n)=>{const i=t==="svg"?Ki.createElementNS(AO,e):t==="mathml"?Ki.createElementNS(PO,e):Ki.createElement(e,r?{is:r}:void 0);return e==="select"&&n&&n.multiple!=null&&i.setAttribute("multiple",n.multiple),i},createText:e=>Ki.createTextNode(e),createComment:e=>Ki.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Ki.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,r,n,i,a){const o=r?r.previousSibling:t.lastChild;if(i&&(i===a||i.nextSibling))for(;t.insertBefore(i.cloneNode(!0),r),!(i===a||!(i=i.nextSibling)););else{k_.innerHTML=n==="svg"?`${e}`:n==="mathml"?`${e}`:e;const s=k_.content;if(n==="svg"||n==="mathml"){const l=s.firstChild;for(;l.firstChild;)s.appendChild(l.firstChild);s.removeChild(l)}t.insertBefore(s,r)}return[o?o.nextSibling:t.firstChild,r?r.previousSibling:t.lastChild]}},Ii="transition",Xs="animation",vs=Symbol("_vtc"),ti=(e,{slots:t})=>Te(BI,RT(e),t);ti.displayName="Transition";const OT={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},LO=ti.props=$t({},hT,OT),_a=(e,t=[])=>{_e(e)?e.forEach(r=>r(...t)):e&&e(...t)},N_=e=>e?_e(e)?e.some(t=>t.length>1):e.length>1:!1;function RT(e){const t={};for(const E in e)E in OT||(t[E]=e[E]);if(e.css===!1)return t;const{name:r="v",type:n,duration:i,enterFromClass:a=`${r}-enter-from`,enterActiveClass:o=`${r}-enter-active`,enterToClass:s=`${r}-enter-to`,appearFromClass:l=a,appearActiveClass:u=o,appearToClass:f=s,leaveFromClass:c=`${r}-leave-from`,leaveActiveClass:h=`${r}-leave-active`,leaveToClass:d=`${r}-leave-to`}=e,v=DO(i),p=v&&v[0],m=v&&v[1],{onBeforeEnter:g,onEnter:y,onEnterCancelled:_,onLeave:b,onLeaveCancelled:x,onBeforeAppear:w=g,onAppear:S=y,onAppearCancelled:C=_}=t,M=(E,L,O)=>{zi(E,L?f:s),zi(E,L?u:o),O&&O()},A=(E,L)=>{E._isLeaving=!1,zi(E,c),zi(E,d),zi(E,h),L&&L()},P=E=>(L,O)=>{const N=E?S:y,H=()=>M(L,E,O);_a(N,[L,H]),B_(()=>{zi(L,E?l:a),ci(L,E?f:s),N_(N)||F_(L,n,p,H)})};return $t(t,{onBeforeEnter(E){_a(g,[E]),ci(E,a),ci(E,o)},onBeforeAppear(E){_a(w,[E]),ci(E,l),ci(E,u)},onEnter:P(!1),onAppear:P(!0),onLeave(E,L){E._isLeaving=!0;const O=()=>A(E,L);ci(E,c),NT(),ci(E,h),B_(()=>{E._isLeaving&&(zi(E,c),ci(E,d),N_(b)||F_(E,n,m,O))}),_a(b,[E,O])},onEnterCancelled(E){M(E,!1),_a(_,[E])},onAppearCancelled(E){M(E,!0),_a(C,[E])},onLeaveCancelled(E){A(E),_a(x,[E])}})}function DO(e){if(e==null)return null;if(qe(e))return[Kh(e.enter),Kh(e.leave)];{const t=Kh(e);return[t,t]}}function Kh(e){return HD(e)}function ci(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.add(r)),(e[vs]||(e[vs]=new Set)).add(t)}function zi(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.remove(n));const r=e[vs];r&&(r.delete(t),r.size||(e[vs]=void 0))}function B_(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let IO=0;function F_(e,t,r,n){const i=e._endId=++IO,a=()=>{i===e._endId&&n()};if(r)return setTimeout(a,r);const{type:o,timeout:s,propCount:l}=kT(e,t);if(!o)return n();const u=o+"end";let f=0;const c=()=>{e.removeEventListener(u,h),a()},h=d=>{d.target===e&&++f>=l&&c()};setTimeout(()=>{f(r[v]||"").split(", "),i=n(`${Ii}Delay`),a=n(`${Ii}Duration`),o=$_(i,a),s=n(`${Xs}Delay`),l=n(`${Xs}Duration`),u=$_(s,l);let f=null,c=0,h=0;t===Ii?o>0&&(f=Ii,c=o,h=a.length):t===Xs?u>0&&(f=Xs,c=u,h=l.length):(c=Math.max(o,u),f=c>0?o>u?Ii:Xs:null,h=f?f===Ii?a.length:l.length:0);const d=f===Ii&&/\b(transform|all)(,|$)/.test(n(`${Ii}Property`).toString());return{type:f,timeout:c,propCount:h,hasTransform:d}}function $_(e,t){for(;e.lengthH_(r)+H_(e[n])))}function H_(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function NT(){return document.body.offsetHeight}function OO(e,t,r){const n=e[vs];n&&(t=(t?[t,...n]:[...n]).join(" ")),t==null?e.removeAttribute("class"):r?e.setAttribute("class",t):e.className=t}const dy=Symbol("_vod"),Kn={beforeMount(e,{value:t},{transition:r}){e[dy]=e.style.display==="none"?"":e.style.display,r&&t?r.beforeEnter(e):Zs(e,t)},mounted(e,{value:t},{transition:r}){r&&t&&r.enter(e)},updated(e,{value:t,oldValue:r},{transition:n}){!t!=!r&&(n?t?(n.beforeEnter(e),Zs(e,!0),n.enter(e)):n.leave(e,()=>{Zs(e,!1)}):Zs(e,t))},beforeUnmount(e,{value:t}){Zs(e,t)}};function Zs(e,t){e.style.display=t?e[dy]:"none"}const RO=Symbol("");function kO(e,t,r){const n=e.style,i=n.display,a=ze(r);if(r&&!a){if(t&&!ze(t))for(const o in t)r[o]==null&&qp(n,o,"");for(const o in r)qp(n,o,r[o])}else if(a){if(t!==r){const o=n[RO];o&&(r+=";"+o),n.cssText=r}}else t&&e.removeAttribute("style");dy in e&&(n.display=i)}const z_=/\s*!important$/;function qp(e,t,r){if(_e(r))r.forEach(n=>qp(e,t,n));else if(r==null&&(r=""),t.startsWith("--"))e.setProperty(t,r);else{const n=NO(e,t);z_.test(r)?e.setProperty(xo(n),r.replace(z_,""),"important"):e[n]=r}}const V_=["Webkit","Moz","ms"],Xh={};function NO(e,t){const r=Xh[t];if(r)return r;let n=Pn(t);if(n!=="filter"&&n in e)return Xh[t]=n;n=Yd(n);for(let i=0;iZh||(VO.then(()=>Zh=0),Zh=Date.now());function GO(e,t){const r=n=>{if(!n._vts)n._vts=Date.now();else if(n._vts<=r.attached)return;sn(UO(n,r.value),t,5,[n])};return r.value=e,r.attached=WO(),r}function UO(e,t){if(_e(t)){const r=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{r.call(e),e._stopped=!0},t.map(n=>i=>!i._stopped&&n&&n(i))}else return t}const Y_=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,YO=(e,t,r,n,i,a,o,s,l)=>{const u=i==="svg";t==="class"?OO(e,n,u):t==="style"?kO(e,r,n):Wd(t)?Gm(t)||HO(e,t,r,n,o):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):jO(e,t,n,u))?FO(e,t,n,a,o,s,l):(t==="true-value"?e._trueValue=n:t==="false-value"&&(e._falseValue=n),BO(e,t,n,u))};function jO(e,t,r,n){if(n)return!!(t==="innerHTML"||t==="textContent"||t in e&&Y_(t)&&De(r));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const i=e.tagName;if(i==="IMG"||i==="VIDEO"||i==="CANVAS"||i==="SOURCE")return!1}return Y_(t)&&ze(r)?!1:t in e}const FT=new WeakMap,$T=new WeakMap,od=Symbol("_moveCb"),j_=Symbol("_enterCb"),HT={name:"TransitionGroup",props:$t({},LO,{tag:String,moveClass:String}),setup(e,{slots:t}){const r=it(),n=dT();let i,a;return Uu(()=>{if(!i.length)return;const o=e.moveClass||`${e.name||"v"}-move`;if(!JO(i[0].el,r.vnode.el,o))return;i.forEach(XO),i.forEach(ZO);const s=i.filter(QO);NT(),s.forEach(l=>{const u=l.el,f=u.style;ci(u,o),f.transform=f.webkitTransform=f.transitionDuration="";const c=u[od]=h=>{h&&h.target!==u||(!h||/transform$/.test(h.propertyName))&&(u.removeEventListener("transitionend",c),u[od]=null,zi(u,o))};u.addEventListener("transitionend",c)})}),()=>{const o=Qe(e),s=RT(o);let l=o.tag||ft;i=a,a=t.default?sy(t.default()):[];for(let u=0;udelete e.mode;HT.props;const KO=HT;function XO(e){const t=e.el;t[od]&&t[od](),t[j_]&&t[j_]()}function ZO(e){$T.set(e,e.el.getBoundingClientRect())}function QO(e){const t=FT.get(e),r=$T.get(e),n=t.left-r.left,i=t.top-r.top;if(n||i){const a=e.el.style;return a.transform=a.webkitTransform=`translate(${n}px,${i}px)`,a.transitionDuration="0s",e}}function JO(e,t,r){const n=e.cloneNode(),i=e[vs];i&&i.forEach(s=>{s.split(/\s+/).forEach(l=>l&&n.classList.remove(l))}),r.split(/\s+/).forEach(s=>s&&n.classList.add(s)),n.style.display="none";const a=t.nodeType===1?t:t.parentNode;a.appendChild(n);const{hasTransform:o}=kT(n);return a.removeChild(n),o}const q_=e=>{const t=e.props["onUpdate:modelValue"]||!1;return _e(t)?r=>Cc(t,r):t},Qh=Symbol("_assign"),sd={deep:!0,created(e,t,r){e[Qh]=q_(r),BT(e,"change",()=>{const n=e._modelValue,i=eR(e),a=e.checked,o=e[Qh];if(_e(n)){const s=OC(n,i),l=s!==-1;if(a&&!l)o(n.concat(i));else if(!a&&l){const u=[...n];u.splice(s,1),o(u)}}else if(Gd(n)){const s=new Set(n);a?s.add(i):s.delete(i),o(s)}else o(zT(e,a))})},mounted:K_,beforeUpdate(e,t,r){e[Qh]=q_(r),K_(e,t,r)}};function K_(e,{value:t,oldValue:r},n){e._modelValue=t,_e(t)?e.checked=OC(t,n.props.value)>-1:Gd(t)?e.checked=t.has(n.props.value):t!==r&&(e.checked=jd(t,zT(e,!0)))}function eR(e){return"_value"in e?e._value:e.value}function zT(e,t){const r=t?"_trueValue":"_falseValue";return r in e?e[r]:t}const tR=["ctrl","shift","alt","meta"],rR={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>tR.some(r=>e[`${r}Key`]&&!t.includes(r))},ua=(e,t)=>{const r=e._withMods||(e._withMods={}),n=t.join(".");return r[n]||(r[n]=(i,...a)=>{for(let o=0;o{const r=e._withKeys||(e._withKeys={}),n=t.join(".");return r[n]||(r[n]=i=>{if(!("key"in i))return;const a=xo(i.key);if(t.some(o=>o===a||nR[o]===a))return e(i)})},aR=$t({patchProp:YO},EO);let X_;function VT(){return X_||(X_=sO(aR))}const ld=(...e)=>{VT().render(...e)},oR=(...e)=>{const t=VT().createApp(...e),{mount:r}=t;return t.mount=n=>{const i=lR(n);if(!i)return;const a=t._component;!De(a)&&!a.render&&!a.template&&(a.template=i.innerHTML),i.innerHTML="";const o=r(i,!1,sR(i));return i instanceof Element&&(i.removeAttribute("v-cloak"),i.setAttribute("data-v-app","")),o},t};function sR(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function lR(e){return ze(e)?document.querySelector(e):e}const Ac=function(e,t,...r){let n;t.includes("mouse")||t.includes("click")?n="MouseEvents":t.includes("key")?n="KeyboardEvent":n="HTMLEvents";const i=document.createEvent(n);return i.initEvent(t,...r),e.dispatchEvent(i),e},di=(e,t,{checkForDefaultPrevented:r=!0}={})=>i=>{const a=e==null?void 0:e(i);if(r===!1||!a)return t==null?void 0:t(i)};var Z_;const At=typeof window<"u",uR=e=>typeof e=="function",fR=e=>typeof e=="string",Kp=()=>{};At&&((Z_=window==null?void 0:window.navigator)!=null&&Z_.userAgent)&&/iP(ad|hone|od)/.test(window.navigator.userAgent);function po(e){return typeof e=="function"?e():T(e)}function WT(e,t){function r(...n){return new Promise((i,a)=>{Promise.resolve(e(()=>t.apply(this,n),{fn:t,thisArg:this,args:n})).then(i).catch(a)})}return r}const GT=e=>e();function cR(e,t={}){let r,n,i=Kp;const a=s=>{clearTimeout(s),i(),i=Kp};return s=>{const l=po(e),u=po(t.maxWait);return r&&a(r),l<=0||u!==void 0&&u<=0?(n&&(a(n),n=null),Promise.resolve(s())):new Promise((f,c)=>{i=t.rejectOnCancel?c:f,u&&!n&&(n=setTimeout(()=>{r&&a(r),n=null,f(s())},u)),r=setTimeout(()=>{n&&a(n),n=null,f(s())},l)})}}function dR(e=GT){const t=$(!0);function r(){t.value=!1}function n(){t.value=!0}const i=(...a)=>{t.value&&e(...a)};return{isActive:Gu(t),pause:r,resume:n,eventFilter:i}}function hR(e){return e}function ju(e){return kC()?(NC(e),!0):!1}function vR(e,t=200,r={}){return WT(cR(t,r),e)}function pR(e,t=200,r={}){const n=$(e.value),i=vR(()=>{n.value=e.value},t,r);return we(e,()=>i()),n}function gR(e){return typeof e=="function"?k(e):$(e)}function UT(e,t=!0){it()?_t(e):t?e():kt(e)}function hu(e,t,r={}){const{immediate:n=!0}=r,i=$(!1);let a=null;function o(){a&&(clearTimeout(a),a=null)}function s(){i.value=!1,o()}function l(...u){o(),i.value=!0,a=setTimeout(()=>{i.value=!1,a=null,e(...u)},po(t))}return n&&(i.value=!0,At&&l()),ju(s),{isPending:Gu(i),start:l,stop:s}}function mR(e=!1,t={}){const{truthyValue:r=!0,falsyValue:n=!1}=t,i=Pt(e),a=$(e);function o(s){if(arguments.length)return a.value=s,a.value;{const l=po(r);return a.value=a.value===l?po(n):l,a.value}}return i?o:[a,o]}var Q_=Object.getOwnPropertySymbols,yR=Object.prototype.hasOwnProperty,_R=Object.prototype.propertyIsEnumerable,bR=(e,t)=>{var r={};for(var n in e)yR.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&Q_)for(var n of Q_(e))t.indexOf(n)<0&&_R.call(e,n)&&(r[n]=e[n]);return r};function wR(e,t,r={}){const n=r,{eventFilter:i=GT}=n,a=bR(n,["eventFilter"]);return we(e,WT(i,t),a)}var SR=Object.defineProperty,xR=Object.defineProperties,CR=Object.getOwnPropertyDescriptors,ud=Object.getOwnPropertySymbols,YT=Object.prototype.hasOwnProperty,jT=Object.prototype.propertyIsEnumerable,J_=(e,t,r)=>t in e?SR(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,TR=(e,t)=>{for(var r in t||(t={}))YT.call(t,r)&&J_(e,r,t[r]);if(ud)for(var r of ud(t))jT.call(t,r)&&J_(e,r,t[r]);return e},MR=(e,t)=>xR(e,CR(t)),AR=(e,t)=>{var r={};for(var n in e)YT.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&ud)for(var n of ud(e))t.indexOf(n)<0&&jT.call(e,n)&&(r[n]=e[n]);return r};function PR(e,t,r={}){const n=r,{eventFilter:i}=n,a=AR(n,["eventFilter"]),{eventFilter:o,pause:s,resume:l,isActive:u}=dR(i);return{stop:wR(e,t,MR(TR({},a),{eventFilter:o})),pause:s,resume:l,isActive:u}}function Zi(e){var t;const r=po(e);return(t=r==null?void 0:r.$el)!=null?t:r}const fa=At?window:void 0;function xn(...e){let t,r,n,i;if(fR(e[0])||Array.isArray(e[0])?([r,n,i]=e,t=fa):[t,r,n,i]=e,!t)return Kp;Array.isArray(r)||(r=[r]),Array.isArray(n)||(n=[n]);const a=[],o=()=>{a.forEach(f=>f()),a.length=0},s=(f,c,h)=>(f.addEventListener(c,h,i),()=>f.removeEventListener(c,h,i)),l=we(()=>Zi(t),f=>{o(),f&&a.push(...r.flatMap(c=>n.map(h=>s(f,c,h))))},{immediate:!0,flush:"post"}),u=()=>{l(),o()};return ju(u),u}function ER(e,t,r={}){const{window:n=fa,ignore:i=[],capture:a=!0,detectIframe:o=!1}=r;if(!n)return;let s=!0,l;const u=d=>i.some(v=>{if(typeof v=="string")return Array.from(n.document.querySelectorAll(v)).some(p=>p===d.target||d.composedPath().includes(p));{const p=Zi(v);return p&&(d.target===p||d.composedPath().includes(p))}}),f=d=>{n.clearTimeout(l);const v=Zi(e);if(!(!v||v===d.target||d.composedPath().includes(v))){if(d.detail===0&&(s=!u(d)),!s){s=!0;return}t(d)}},c=[xn(n,"click",f,{passive:!0,capture:a}),xn(n,"pointerdown",d=>{const v=Zi(e);v&&(s=!d.composedPath().includes(v)&&!u(d))},{passive:!0}),xn(n,"pointerup",d=>{if(d.button===0){const v=d.composedPath();d.composedPath=()=>v,l=n.setTimeout(()=>f(d),50)}},{passive:!0}),o&&xn(n,"blur",d=>{var v;const p=Zi(e);((v=n.document.activeElement)==null?void 0:v.tagName)==="IFRAME"&&!(p!=null&&p.contains(n.document.activeElement))&&t(d)})].filter(Boolean);return()=>c.forEach(d=>d())}function qT(e,t=!1){const r=$(),n=()=>r.value=!!e();return n(),UT(n,t),r}function LR(e,t={}){const{window:r=fa}=t,n=qT(()=>r&&"matchMedia"in r&&typeof r.matchMedia=="function");let i;const a=$(!1),o=()=>{i&&("removeEventListener"in i?i.removeEventListener("change",s):i.removeListener(s))},s=()=>{n.value&&(o(),i=r.matchMedia(gR(e).value),a.value=i.matches,"addEventListener"in i?i.addEventListener("change",s):i.addListener(s))};return na(s),ju(()=>o()),a}const Xp=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},Zp="__vueuse_ssr_handlers__";Xp[Zp]=Xp[Zp]||{};const DR=Xp[Zp];function KT(e,t){return DR[e]||t}function IR(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}var OR=Object.defineProperty,eb=Object.getOwnPropertySymbols,RR=Object.prototype.hasOwnProperty,kR=Object.prototype.propertyIsEnumerable,tb=(e,t,r)=>t in e?OR(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,rb=(e,t)=>{for(var r in t||(t={}))RR.call(t,r)&&tb(e,r,t[r]);if(eb)for(var r of eb(t))kR.call(t,r)&&tb(e,r,t[r]);return e};const NR={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}};function BR(e,t,r,n={}){var i;const{flush:a="pre",deep:o=!0,listenToStorageChanges:s=!0,writeDefaults:l=!0,mergeDefaults:u=!1,shallow:f,window:c=fa,eventFilter:h,onError:d=S=>{console.error(S)}}=n,v=(f?ty:$)(t);if(!r)try{r=KT("getDefaultStorage",()=>{var S;return(S=fa)==null?void 0:S.localStorage})()}catch(S){d(S)}if(!r)return v;const p=po(t),m=IR(p),g=(i=n.serializer)!=null?i:NR[m],{pause:y,resume:_}=PR(v,()=>b(v.value),{flush:a,deep:o,eventFilter:h});return c&&s&&xn(c,"storage",w),w(),v;function b(S){try{if(S==null)r.removeItem(e);else{const C=g.write(S),M=r.getItem(e);M!==C&&(r.setItem(e,C),c&&(c==null||c.dispatchEvent(new StorageEvent("storage",{key:e,oldValue:M,newValue:C,storageArea:r}))))}}catch(C){d(C)}}function x(S){const C=S?S.newValue:r.getItem(e);if(C==null)return l&&p!==null&&r.setItem(e,g.write(p)),p;if(!S&&u){const M=g.read(C);return uR(u)?u(M,p):m==="object"&&!Array.isArray(M)?rb(rb({},p),M):M}else return typeof C!="string"?C:g.read(C)}function w(S){if(!(S&&S.storageArea!==r)){if(S&&S.key==null){v.value=p;return}if(!(S&&S.key!==e)){y();try{v.value=x(S)}catch(C){d(C)}finally{S?kt(_):_()}}}}}function XT(e){return LR("(prefers-color-scheme: dark)",e)}var FR=Object.defineProperty,nb=Object.getOwnPropertySymbols,$R=Object.prototype.hasOwnProperty,HR=Object.prototype.propertyIsEnumerable,ib=(e,t,r)=>t in e?FR(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,zR=(e,t)=>{for(var r in t||(t={}))$R.call(t,r)&&ib(e,r,t[r]);if(nb)for(var r of nb(t))HR.call(t,r)&&ib(e,r,t[r]);return e};function VR(e={}){const{selector:t="html",attribute:r="class",initialValue:n="auto",window:i=fa,storage:a,storageKey:o="vueuse-color-scheme",listenToStorageChanges:s=!0,storageRef:l,emitAuto:u}=e,f=zR({auto:"",light:"light",dark:"dark"},e.modes||{}),c=XT({window:i}),h=k(()=>c.value?"dark":"light"),d=l||(o==null?$(n):BR(o,n,a,{window:i,listenToStorageChanges:s})),v=k({get(){return d.value==="auto"&&!u?h.value:d.value},set(y){d.value=y}}),p=KT("updateHTMLAttrs",(y,_,b)=>{const x=i==null?void 0:i.document.querySelector(y);if(x)if(_==="class"){const w=b.split(/\s/g);Object.values(f).flatMap(S=>(S||"").split(/\s/g)).filter(Boolean).forEach(S=>{w.includes(S)?x.classList.add(S):x.classList.remove(S)})}else x.setAttribute(_,b)});function m(y){var _;const b=y==="auto"?h.value:y;p(t,r,(_=f[b])!=null?_:b)}function g(y){e.onChanged?e.onChanged(y,m):m(y)}return we(v,g,{flush:"post",immediate:!0}),u&&we(h,()=>g(v.value),{flush:"post"}),UT(()=>g(v.value)),v}var WR=Object.defineProperty,GR=Object.defineProperties,UR=Object.getOwnPropertyDescriptors,ab=Object.getOwnPropertySymbols,YR=Object.prototype.hasOwnProperty,jR=Object.prototype.propertyIsEnumerable,ob=(e,t,r)=>t in e?WR(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,qR=(e,t)=>{for(var r in t||(t={}))YR.call(t,r)&&ob(e,r,t[r]);if(ab)for(var r of ab(t))jR.call(t,r)&&ob(e,r,t[r]);return e},KR=(e,t)=>GR(e,UR(t));function XR(e={}){const{valueDark:t="dark",valueLight:r="",window:n=fa}=e,i=VR(KR(qR({},e),{onChanged:(s,l)=>{var u;e.onChanged?(u=e.onChanged)==null||u.call(e,s==="dark"):l(s)},modes:{dark:t,light:r}})),a=XT({window:n});return k({get(){return i.value==="dark"},set(s){s===a.value?i.value="auto":i.value=s?"dark":"light"}})}var sb=Object.getOwnPropertySymbols,ZR=Object.prototype.hasOwnProperty,QR=Object.prototype.propertyIsEnumerable,JR=(e,t)=>{var r={};for(var n in e)ZR.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&sb)for(var n of sb(e))t.indexOf(n)<0&&QR.call(e,n)&&(r[n]=e[n]);return r};function ps(e,t,r={}){const n=r,{window:i=fa}=n,a=JR(n,["window"]);let o;const s=qT(()=>i&&"ResizeObserver"in i),l=()=>{o&&(o.disconnect(),o=void 0)},u=we(()=>Zi(e),c=>{l(),s.value&&i&&c&&(o=new ResizeObserver(t),o.observe(c,a))},{immediate:!0,flush:"post"}),f=()=>{l(),u()};return ju(f),{isSupported:s,stop:f}}var lb;(function(e){e.UP="UP",e.RIGHT="RIGHT",e.DOWN="DOWN",e.LEFT="LEFT",e.NONE="NONE"})(lb||(lb={}));var ek=Object.defineProperty,ub=Object.getOwnPropertySymbols,tk=Object.prototype.hasOwnProperty,rk=Object.prototype.propertyIsEnumerable,fb=(e,t,r)=>t in e?ek(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,nk=(e,t)=>{for(var r in t||(t={}))tk.call(t,r)&&fb(e,r,t[r]);if(ub)for(var r of ub(t))rk.call(t,r)&&fb(e,r,t[r]);return e};const ik={easeInSine:[.12,0,.39,0],easeOutSine:[.61,1,.88,1],easeInOutSine:[.37,0,.63,1],easeInQuad:[.11,0,.5,0],easeOutQuad:[.5,1,.89,1],easeInOutQuad:[.45,0,.55,1],easeInCubic:[.32,0,.67,0],easeOutCubic:[.33,1,.68,1],easeInOutCubic:[.65,0,.35,1],easeInQuart:[.5,0,.75,0],easeOutQuart:[.25,1,.5,1],easeInOutQuart:[.76,0,.24,1],easeInQuint:[.64,0,.78,0],easeOutQuint:[.22,1,.36,1],easeInOutQuint:[.83,0,.17,1],easeInExpo:[.7,0,.84,0],easeOutExpo:[.16,1,.3,1],easeInOutExpo:[.87,0,.13,1],easeInCirc:[.55,0,1,.45],easeOutCirc:[0,.55,.45,1],easeInOutCirc:[.85,0,.15,1],easeInBack:[.36,0,.66,-.56],easeOutBack:[.34,1.56,.64,1],easeInOutBack:[.68,-.6,.32,1.6]};nk({linear:hR},ik);var ZT=typeof global=="object"&&global&&global.Object===Object&&global,ak=typeof self=="object"&&self&&self.Object===Object&&self,Dn=ZT||ak||Function("return this")(),fn=Dn.Symbol,QT=Object.prototype,ok=QT.hasOwnProperty,sk=QT.toString,Qs=fn?fn.toStringTag:void 0;function lk(e){var t=ok.call(e,Qs),r=e[Qs];try{e[Qs]=void 0;var n=!0}catch{}var i=sk.call(e);return n&&(t?e[Qs]=r:delete e[Qs]),i}var uk=Object.prototype,fk=uk.toString;function ck(e){return fk.call(e)}var dk="[object Null]",hk="[object Undefined]",cb=fn?fn.toStringTag:void 0;function Mo(e){return e==null?e===void 0?hk:dk:cb&&cb in Object(e)?lk(e):ck(e)}function Xn(e){return e!=null&&typeof e=="object"}var vk="[object Symbol]";function ih(e){return typeof e=="symbol"||Xn(e)&&Mo(e)==vk}function JT(e,t){for(var r=-1,n=e==null?0:e.length,i=Array(n);++r0){if(++t>=Vk)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}function Yk(e){return function(){return e}}var fd=function(){try{var e=Po(Object,"defineProperty");return e({},"",{}),e}catch{}}(),jk=fd?function(e,t){return fd(e,"toString",{configurable:!0,enumerable:!1,value:Yk(t),writable:!0})}:hy;const qk=jk;var rM=Uk(qk);function Kk(e,t){for(var r=-1,n=e==null?0:e.length;++r-1&&e%1==0&&e-1&&e%1==0&&e<=tN}function Ns(e){return e!=null&&my(e.length)&&!vy(e)}function rN(e,t,r){if(!Dr(r))return!1;var n=typeof t;return(n=="number"?Ns(r)&&ah(t,r.length):n=="string"&&t in r)?qu(r[t],e):!1}function nN(e){return eN(function(t,r){var n=-1,i=r.length,a=i>1?r[i-1]:void 0,o=i>2?r[2]:void 0;for(a=e.length>3&&typeof a=="function"?(i--,a):void 0,o&&rN(r[0],r[1],o)&&(a=i<3?void 0:a,i=1),t=Object(t);++n-1}function hB(e,t){var r=this.__data__,n=oh(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this}function Pi(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t0&&r(s)?t>1?Ty(s,t-1,r,n,i):Cy(i,s):n||(i[i.length]=s)}return i}function EB(e){var t=e==null?0:e.length;return t?Ty(e,1):[]}function LB(e){return rM(nM(e,void 0,EB),e+"")}var DB=lM(Object.getPrototypeOf,Object);const My=DB;var IB="[object Object]",OB=Function.prototype,RB=Object.prototype,uM=OB.toString,kB=RB.hasOwnProperty,NB=uM.call(Object);function BB(e){if(!Xn(e)||Mo(e)!=IB)return!1;var t=My(e);if(t===null)return!0;var r=kB.call(t,"constructor")&&t.constructor;return typeof r=="function"&&r instanceof r&&uM.call(r)==NB}function Jp(){if(!arguments.length)return[];var e=arguments[0];return gr(e)?e:[e]}function FB(){this.__data__=new Pi,this.size=0}function $B(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}function HB(e){return this.__data__.get(e)}function zB(e){return this.__data__.has(e)}var VB=200;function WB(e,t){var r=this.__data__;if(r instanceof Pi){var n=r.__data__;if(!mu||n.lengths))return!1;var u=a.get(e),f=a.get(t);if(u&&f)return u==t&&f==e;var c=-1,h=!0,d=r&y$?new dd:void 0;for(a.set(e,t),a.set(t,e);++c=t||S<0||c&&C>=a}function g(){var w=rv();if(m(w))return y(w);s=setTimeout(g,p(w))}function y(w){return s=void 0,h&&n?d(w):(n=i=void 0,o)}function _(){s!==void 0&&clearTimeout(s),u=0,n=l=i=s=void 0}function b(){return s===void 0?o:y(rv())}function x(){var w=rv(),S=m(w);if(n=arguments,i=this,l=w,S){if(s===void 0)return v(l);if(c)return clearTimeout(s),s=setTimeout(g,t),d(l)}return s===void 0&&(s=setTimeout(g,t)),o}return x.cancel=_,x.flush=b,x}function ig(e,t,r){(r!==void 0&&!qu(e[t],r)||r===void 0&&!(t in e))&&py(e,t,r)}function u3(e){return Xn(e)&&Ns(e)}function ag(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="__proto__")return e[t]}function f3(e){return Ku(e,Zu(e))}function c3(e,t,r,n,i,a,o){var s=ag(e,r),l=ag(t,r),u=o.get(l);if(u){ig(e,r,u);return}var f=a?a(s,l,r+"",e,t,o):void 0,c=f===void 0;if(c){var h=gr(l),d=!h&&pu(l),v=!h&&!d&&by(l);f=l,h||d||v?gr(s)?f=s:u3(s)?f=tM(s):d?(c=!1,f=cM(l,!0)):v?(c=!1,f=pM(l,!0)):f=[]:BB(l)||vu(l)?(f=s,vu(s)?f=f3(s):(!Dr(s)||vy(s))&&(f=gM(l))):c=!1}c&&(o.set(l,f),i(f,l,n,a,o),o.delete(l)),ig(e,r,f)}function TM(e,t,r,n,i){e!==t&&CM(t,function(a,o){if(i||(i=new An),Dr(a))c3(e,t,o,r,TM,n,i);else{var s=n?n(ag(e,o),a,o+"",e,t,i):void 0;s===void 0&&(s=a),ig(e,o,s)}},Zu)}function d3(e,t){var r=-1,n=Ns(e)?Array(e.length):[];return a3(e,function(i,a,o){n[++r]=t(i,a,o)}),n}function h3(e,t){var r=gr(e)?JT:d3;return r(e,t3(t))}function v3(e,t){return Ty(h3(e,t),1)}function og(e){for(var t=-1,r=e==null?0:e.length,n={};++te===void 0,zr=e=>typeof e=="boolean",Rt=e=>typeof e=="number",mo=e=>typeof Element>"u"?!1:e instanceof Element,S3=e=>ze(e)?!Number.isNaN(Number(e)):!1,Vb=e=>Object.keys(e),Ec=(e,t,r)=>({get value(){return yu(e,t,r)},set value(n){w3(e,t,n)}});class x3 extends Error{constructor(t){super(t),this.name="ElementPlusError"}}function bi(e,t){throw new x3(`[${e}] ${t}`)}const PM=(e="")=>e.split(" ").filter(t=>!!t.trim()),oo=(e,t)=>{if(!e||!t)return!1;if(t.includes(" "))throw new Error("className should not contain space.");return e.classList.contains(t)},Za=(e,t)=>{!e||!t.trim()||e.classList.add(...PM(t))},so=(e,t)=>{!e||!t.trim()||e.classList.remove(...PM(t))},C3=(e,t)=>{var r;if(!At||!e||!t)return"";let n=Pn(t);n==="float"&&(n="cssFloat");try{const i=e.style[n];if(i)return i;const a=(r=document.defaultView)==null?void 0:r.getComputedStyle(e,"");return a?a[n]:""}catch{return e.style[n]}};function Zn(e,t="px"){if(!e)return"";if(Rt(e)||S3(e))return`${e}${t}`;if(ze(e))return e}let xf;const T3=e=>{var t;if(!At)return 0;if(xf!==void 0)return xf;const r=document.createElement("div");r.className=`${e}-scrollbar__wrap`,r.style.visibility="hidden",r.style.width="100px",r.style.position="absolute",r.style.top="-9999px",document.body.appendChild(r);const n=r.offsetWidth;r.style.overflow="scroll";const i=document.createElement("div");i.style.width="100%",r.appendChild(i);const a=i.offsetWidth;return(t=r.parentNode)==null||t.removeChild(r),xf=n-a,xf};/*! Element Plus Icons Vue v2.3.1 */var M3=ie({name:"ArrowDown",__name:"arrow-down",setup(e){return(t,r)=>(G(),ce("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[ee("path",{fill:"currentColor",d:"M831.872 340.864 512 652.672 192.128 340.864a30.592 30.592 0 0 0-42.752 0 29.12 29.12 0 0 0 0 41.6L489.664 714.24a32 32 0 0 0 44.672 0l340.288-331.712a29.12 29.12 0 0 0 0-41.728 30.592 30.592 0 0 0-42.752 0z"})]))}}),EM=M3,A3=ie({name:"ArrowRight",__name:"arrow-right",setup(e){return(t,r)=>(G(),ce("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[ee("path",{fill:"currentColor",d:"M340.864 149.312a30.592 30.592 0 0 0 0 42.752L652.736 512 340.864 831.872a30.592 30.592 0 0 0 0 42.752 29.12 29.12 0 0 0 41.728 0L714.24 534.336a32 32 0 0 0 0-44.672L382.592 149.376a29.12 29.12 0 0 0-41.728 0z"})]))}}),Ey=A3,P3=ie({name:"ArrowUp",__name:"arrow-up",setup(e){return(t,r)=>(G(),ce("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[ee("path",{fill:"currentColor",d:"m488.832 344.32-339.84 356.672a32 32 0 0 0 0 44.16l.384.384a29.44 29.44 0 0 0 42.688 0l320-335.872 319.872 335.872a29.44 29.44 0 0 0 42.688 0l.384-.384a32 32 0 0 0 0-44.16L535.168 344.32a32 32 0 0 0-46.336 0"})]))}}),E3=P3,L3=ie({name:"Back",__name:"back",setup(e){return(t,r)=>(G(),ce("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[ee("path",{fill:"currentColor",d:"M224 480h640a32 32 0 1 1 0 64H224a32 32 0 0 1 0-64"}),ee("path",{fill:"currentColor",d:"m237.248 512 265.408 265.344a32 32 0 0 1-45.312 45.312l-288-288a32 32 0 0 1 0-45.312l288-288a32 32 0 1 1 45.312 45.312z"})]))}}),D3=L3,I3=ie({name:"CircleCloseFilled",__name:"circle-close-filled",setup(e){return(t,r)=>(G(),ce("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[ee("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m0 393.664L407.936 353.6a38.4 38.4 0 1 0-54.336 54.336L457.664 512 353.6 616.064a38.4 38.4 0 1 0 54.336 54.336L512 566.336 616.064 670.4a38.4 38.4 0 1 0 54.336-54.336L566.336 512 670.4 407.936a38.4 38.4 0 1 0-54.336-54.336z"})]))}}),LM=I3,O3=ie({name:"Close",__name:"close",setup(e){return(t,r)=>(G(),ce("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[ee("path",{fill:"currentColor",d:"M764.288 214.592 512 466.88 259.712 214.592a31.936 31.936 0 0 0-45.12 45.12L466.752 512 214.528 764.224a31.936 31.936 0 1 0 45.12 45.184L512 557.184l252.288 252.288a31.936 31.936 0 0 0 45.12-45.12L557.12 512.064l252.288-252.352a31.936 31.936 0 1 0-45.12-45.184z"})]))}}),vd=O3,R3=ie({name:"InfoFilled",__name:"info-filled",setup(e){return(t,r)=>(G(),ce("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[ee("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896.064A448 448 0 0 1 512 64m67.2 275.072c33.28 0 60.288-23.104 60.288-57.344s-27.072-57.344-60.288-57.344c-33.28 0-60.16 23.104-60.16 57.344s26.88 57.344 60.16 57.344M590.912 699.2c0-6.848 2.368-24.64 1.024-34.752l-52.608 60.544c-10.88 11.456-24.512 19.392-30.912 17.28a12.992 12.992 0 0 1-8.256-14.72l87.68-276.992c7.168-35.136-12.544-67.2-54.336-71.296-44.096 0-108.992 44.736-148.48 101.504 0 6.784-1.28 23.68.064 33.792l52.544-60.608c10.88-11.328 23.552-19.328 29.952-17.152a12.8 12.8 0 0 1 7.808 16.128L388.48 728.576c-10.048 32.256 8.96 63.872 55.04 71.04 67.84 0 107.904-43.648 147.456-100.416z"})]))}}),DM=R3,k3=ie({name:"Loading",__name:"loading",setup(e){return(t,r)=>(G(),ce("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[ee("path",{fill:"currentColor",d:"M512 64a32 32 0 0 1 32 32v192a32 32 0 0 1-64 0V96a32 32 0 0 1 32-32m0 640a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V736a32 32 0 0 1 32-32m448-192a32 32 0 0 1-32 32H736a32 32 0 1 1 0-64h192a32 32 0 0 1 32 32m-640 0a32 32 0 0 1-32 32H96a32 32 0 0 1 0-64h192a32 32 0 0 1 32 32M195.2 195.2a32 32 0 0 1 45.248 0L376.32 331.008a32 32 0 0 1-45.248 45.248L195.2 240.448a32 32 0 0 1 0-45.248zm452.544 452.544a32 32 0 0 1 45.248 0L828.8 783.552a32 32 0 0 1-45.248 45.248L647.744 692.992a32 32 0 0 1 0-45.248zM828.8 195.264a32 32 0 0 1 0 45.184L692.992 376.32a32 32 0 0 1-45.248-45.248l135.808-135.808a32 32 0 0 1 45.248 0m-452.544 452.48a32 32 0 0 1 0 45.248L240.448 828.8a32 32 0 0 1-45.248-45.248l135.808-135.808a32 32 0 0 1 45.248 0z"})]))}}),Ly=k3,N3=ie({name:"More",__name:"more",setup(e){return(t,r)=>(G(),ce("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[ee("path",{fill:"currentColor",d:"M176 416a112 112 0 1 0 0 224 112 112 0 0 0 0-224m0 64a48 48 0 1 1 0 96 48 48 0 0 1 0-96m336-64a112 112 0 1 1 0 224 112 112 0 0 1 0-224m0 64a48 48 0 1 0 0 96 48 48 0 0 0 0-96m336-64a112 112 0 1 1 0 224 112 112 0 0 1 0-224m0 64a48 48 0 1 0 0 96 48 48 0 0 0 0-96"})]))}}),B3=N3,F3=ie({name:"QuestionFilled",__name:"question-filled",setup(e){return(t,r)=>(G(),ce("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[ee("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m23.744 191.488c-52.096 0-92.928 14.784-123.2 44.352-30.976 29.568-45.76 70.4-45.76 122.496h80.256c0-29.568 5.632-52.8 17.6-68.992 13.376-19.712 35.2-28.864 66.176-28.864 23.936 0 42.944 6.336 56.32 19.712 12.672 13.376 19.712 31.68 19.712 54.912 0 17.6-6.336 34.496-19.008 49.984l-8.448 9.856c-45.76 40.832-73.216 70.4-82.368 89.408-9.856 19.008-14.08 42.24-14.08 68.992v9.856h80.96v-9.856c0-16.896 3.52-31.68 10.56-45.76 6.336-12.672 15.488-24.64 28.16-35.2 33.792-29.568 54.208-48.576 60.544-55.616 16.896-22.528 26.048-51.392 26.048-86.592 0-42.944-14.08-76.736-42.24-101.376-28.16-25.344-65.472-37.312-111.232-37.312zm-12.672 406.208a54.272 54.272 0 0 0-38.72 14.784 49.408 49.408 0 0 0-15.488 38.016c0 15.488 4.928 28.16 15.488 38.016A54.848 54.848 0 0 0 523.072 768c15.488 0 28.16-4.928 38.72-14.784a51.52 51.52 0 0 0 16.192-38.72 51.968 51.968 0 0 0-15.488-38.016 55.936 55.936 0 0 0-39.424-14.784z"})]))}}),$3=F3,H3=ie({name:"SuccessFilled",__name:"success-filled",setup(e){return(t,r)=>(G(),ce("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[ee("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m-55.808 536.384-99.52-99.584a38.4 38.4 0 1 0-54.336 54.336l126.72 126.72a38.272 38.272 0 0 0 54.336 0l262.4-262.464a38.4 38.4 0 1 0-54.272-54.336z"})]))}}),IM=H3,z3=ie({name:"WarningFilled",__name:"warning-filled",setup(e){return(t,r)=>(G(),ce("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[ee("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m0 192a58.432 58.432 0 0 0-58.24 63.744l23.36 256.384a35.072 35.072 0 0 0 69.76 0l23.296-256.384A58.432 58.432 0 0 0 512 256m0 512a51.2 51.2 0 1 0 0-102.4 51.2 51.2 0 0 0 0 102.4"})]))}}),OM=z3;const RM="__epPropKey",Be=e=>e,V3=e=>qe(e)&&!!e[RM],fh=(e,t)=>{if(!qe(e)||V3(e))return e;const{values:r,required:n,default:i,type:a,validator:o}=e,l={type:a,required:!!n,validator:r||o?u=>{let f=!1,c=[];if(r&&(c=Array.from(r),Ue(e,"default")&&c.push(i),f||(f=c.includes(u))),o&&(f||(f=o(u))),!f&&c.length>0){const h=[...new Set(c)].map(d=>JSON.stringify(d)).join(", ");MO(`Invalid prop: validation failed${t?` for prop "${t}"`:""}. Expected one of [${h}], got value ${JSON.stringify(u)}.`)}return f}:void 0,[RM]:!0};return Ue(e,"default")&&(l.default=i),l},Je=e=>og(Object.entries(e).map(([t,r])=>[t,fh(r,t)])),vr=Be([String,Object,Function]),W3={Close:vd},G3={Close:vd,SuccessFilled:IM,InfoFilled:DM,WarningFilled:OM,CircleCloseFilled:LM},Wb={success:IM,warning:OM,error:LM,info:DM},Yt=(e,t)=>{if(e.install=r=>{for(const n of[e,...Object.values(t??{})])r.component(n.name,n)},t)for(const[r,n]of Object.entries(t))e[r]=n;return e},U3=(e,t)=>(e.install=r=>{e._context=r._context,r.config.globalProperties[t]=e},e),pa=e=>(e.install=Bt,e),Y3=(...e)=>t=>{e.forEach(r=>{De(r)?r(t):r.value=t})},hr={tab:"Tab",enter:"Enter",space:"Space",left:"ArrowLeft",up:"ArrowUp",right:"ArrowRight",down:"ArrowDown",esc:"Escape",delete:"Delete",backspace:"Backspace",numpadEnter:"NumpadEnter",pageUp:"PageUp",pageDown:"PageDown",home:"Home",end:"End"},wi="update:modelValue",sg="change",lg="input",Bs=["","default","small","large"],j3=e=>["",...Bs].includes(e);var Lc=(e=>(e[e.TEXT=1]="TEXT",e[e.CLASS=2]="CLASS",e[e.STYLE=4]="STYLE",e[e.PROPS=8]="PROPS",e[e.FULL_PROPS=16]="FULL_PROPS",e[e.HYDRATE_EVENTS=32]="HYDRATE_EVENTS",e[e.STABLE_FRAGMENT=64]="STABLE_FRAGMENT",e[e.KEYED_FRAGMENT=128]="KEYED_FRAGMENT",e[e.UNKEYED_FRAGMENT=256]="UNKEYED_FRAGMENT",e[e.NEED_PATCH=512]="NEED_PATCH",e[e.DYNAMIC_SLOTS=1024]="DYNAMIC_SLOTS",e[e.HOISTED=-1]="HOISTED",e[e.BAIL=-2]="BAIL",e))(Lc||{});const Dc=e=>{const t=_e(e)?e:[e],r=[];return t.forEach(n=>{var i;_e(n)?r.push(...Dc(n)):la(n)&&_e(n.children)?r.push(...Dc(n.children)):(r.push(n),la(n)&&((i=n.component)!=null&&i.subTree)&&r.push(...Dc(n.component.subTree)))}),r},q3=e=>At?window.requestAnimationFrame(e):setTimeout(e,16),ja=e=>e,bu=({from:e,replacement:t,scope:r,version:n,ref:i,type:a="API"},o)=>{we(()=>T(o),s=>{},{immediate:!0})},K3=(e,t,r)=>{let n={offsetX:0,offsetY:0};const i=s=>{const l=s.clientX,u=s.clientY,{offsetX:f,offsetY:c}=n,h=e.value.getBoundingClientRect(),d=h.left,v=h.top,p=h.width,m=h.height,g=document.documentElement.clientWidth,y=document.documentElement.clientHeight,_=-d+f,b=-v+c,x=g-d-p+f,w=y-v-m+c,S=M=>{const A=Math.min(Math.max(f+M.clientX-l,_),x),P=Math.min(Math.max(c+M.clientY-u,b),w);n={offsetX:A,offsetY:P},e.value&&(e.value.style.transform=`translate(${Zn(A)}, ${Zn(P)})`)},C=()=>{document.removeEventListener("mousemove",S),document.removeEventListener("mouseup",C)};document.addEventListener("mousemove",S),document.addEventListener("mouseup",C)},a=()=>{t.value&&e.value&&t.value.addEventListener("mousedown",i)},o=()=>{t.value&&e.value&&t.value.removeEventListener("mousedown",i)};_t(()=>{na(()=>{r.value?a():o()})}),tr(()=>{o()})};var X3={name:"en",el:{colorpicker:{confirm:"OK",clear:"Clear",defaultLabel:"color picker",description:"current color is {color}. press enter to select a new color."},datepicker:{now:"Now",today:"Today",cancel:"Cancel",clear:"Clear",confirm:"OK",dateTablePrompt:"Use the arrow keys and enter to select the day of the month",monthTablePrompt:"Use the arrow keys and enter to select the month",yearTablePrompt:"Use the arrow keys and enter to select the year",selectedDate:"Selected date",selectDate:"Select date",selectTime:"Select time",startDate:"Start Date",startTime:"Start Time",endDate:"End Date",endTime:"End Time",prevYear:"Previous Year",nextYear:"Next Year",prevMonth:"Previous Month",nextMonth:"Next Month",year:"",month1:"January",month2:"February",month3:"March",month4:"April",month5:"May",month6:"June",month7:"July",month8:"August",month9:"September",month10:"October",month11:"November",month12:"December",week:"week",weeks:{sun:"Sun",mon:"Mon",tue:"Tue",wed:"Wed",thu:"Thu",fri:"Fri",sat:"Sat"},weeksFull:{sun:"Sunday",mon:"Monday",tue:"Tuesday",wed:"Wednesday",thu:"Thursday",fri:"Friday",sat:"Saturday"},months:{jan:"Jan",feb:"Feb",mar:"Mar",apr:"Apr",may:"May",jun:"Jun",jul:"Jul",aug:"Aug",sep:"Sep",oct:"Oct",nov:"Nov",dec:"Dec"}},inputNumber:{decrease:"decrease number",increase:"increase number"},select:{loading:"Loading",noMatch:"No matching data",noData:"No data",placeholder:"Select"},dropdown:{toggleDropdown:"Toggle Dropdown"},cascader:{noMatch:"No matching data",loading:"Loading",placeholder:"Select",noData:"No data"},pagination:{goto:"Go to",pagesize:"/page",total:"Total {total}",pageClassifier:"",page:"Page",prev:"Go to previous page",next:"Go to next page",currentPage:"page {pager}",prevPages:"Previous {pager} pages",nextPages:"Next {pager} pages",deprecationWarning:"Deprecated usages detected, please refer to the el-pagination documentation for more details"},dialog:{close:"Close this dialog"},drawer:{close:"Close this dialog"},messagebox:{title:"Message",confirm:"OK",cancel:"Cancel",error:"Illegal input",close:"Close this dialog"},upload:{deleteTip:"press delete to remove",delete:"Delete",preview:"Preview",continue:"Continue"},slider:{defaultLabel:"slider between {min} and {max}",defaultRangeStartLabel:"pick start value",defaultRangeEndLabel:"pick end value"},table:{emptyText:"No Data",confirmFilter:"Confirm",resetFilter:"Reset",clearFilter:"All",sumText:"Sum"},tour:{next:"Next",previous:"Previous",finish:"Finish"},tree:{emptyText:"No Data"},transfer:{noMatch:"No matching data",noData:"No data",titles:["List 1","List 2"],filterPlaceholder:"Enter keyword",noCheckedFormat:"{total} items",hasCheckedFormat:"{checked}/{total} checked"},image:{error:"FAILED"},pageHeader:{title:"Back"},popconfirm:{confirmButtonText:"Yes",cancelButtonText:"No"}}};const Z3=e=>(t,r)=>Q3(t,r,T(e)),Q3=(e,t,r)=>yu(r,e,e).replace(/\{(\w+)\}/g,(n,i)=>{var a;return`${(a=t==null?void 0:t[i])!=null?a:`{${i}}`}`}),J3=e=>{const t=k(()=>T(e).name),r=Pt(e)?e:$(e);return{lang:t,locale:r,t:Z3(e)}},kM=Symbol("localeContextKey"),Fs=e=>{const t=e||Le(kM,$());return J3(k(()=>t.value||X3))},Bl="el",e5="is-",ba=(e,t,r,n,i)=>{let a=`${e}-${t}`;return r&&(a+=`-${r}`),n&&(a+=`__${n}`),i&&(a+=`--${i}`),a},NM=Symbol("namespaceContextKey"),Dy=e=>{const t=e||(it()?Le(NM,$(Bl)):$(Bl));return k(()=>T(t)||Bl)},Oe=(e,t)=>{const r=Dy(t);return{namespace:r,b:(p="")=>ba(r.value,e,p,"",""),e:p=>p?ba(r.value,e,"",p,""):"",m:p=>p?ba(r.value,e,"","",p):"",be:(p,m)=>p&&m?ba(r.value,e,p,m,""):"",em:(p,m)=>p&&m?ba(r.value,e,"",p,m):"",bm:(p,m)=>p&&m?ba(r.value,e,p,"",m):"",bem:(p,m,g)=>p&&m&&g?ba(r.value,e,p,m,g):"",is:(p,...m)=>{const g=m.length>=1?m[0]:!0;return p&&g?`${e5}${p}`:""},cssVar:p=>{const m={};for(const g in p)p[g]&&(m[`--${r.value}-${g}`]=p[g]);return m},cssVarName:p=>`--${r.value}-${p}`,cssVarBlock:p=>{const m={};for(const g in p)p[g]&&(m[`--${r.value}-${e}-${g}`]=p[g]);return m},cssVarBlockName:p=>`--${r.value}-${e}-${p}`}},t5=(e,t={})=>{Pt(e)||bi("[useLockscreen]","You need to pass a ref param to this function");const r=t.ns||Oe("popup"),n=QC(()=>r.bm("parent","hidden"));if(!At||oo(document.body,n.value))return;let i=0,a=!1,o="0";const s=()=>{setTimeout(()=>{so(document==null?void 0:document.body,n.value),a&&document&&(document.body.style.width=o)},200)};we(e,l=>{if(!l){s();return}a=!oo(document.body,n.value),a&&(o=document.body.style.width),i=T3(r.namespace.value);const u=document.documentElement.clientHeight0&&(u||f==="scroll")&&a&&(document.body.style.width=`calc(100% - ${i}px)`),Za(document.body,n.value)}),NC(()=>s())},r5=fh({type:Be(Boolean),default:null}),n5=fh({type:Be(Function)}),BM=e=>{const t=`update:${e}`,r=`onUpdate:${e}`,n=[t],i={[e]:r5,[r]:n5};return{useModelToggle:({indicator:o,toggleReason:s,shouldHideWhenRouteChanges:l,shouldProceed:u,onShow:f,onHide:c})=>{const h=it(),{emit:d}=h,v=h.props,p=k(()=>De(v[r])),m=k(()=>v[e]===null),g=S=>{o.value!==!0&&(o.value=!0,s&&(s.value=S),De(f)&&f(S))},y=S=>{o.value!==!1&&(o.value=!1,s&&(s.value=S),De(c)&&c(S))},_=S=>{if(v.disabled===!0||De(u)&&!u())return;const C=p.value&&At;C&&d(t,!0),(m.value||!C)&&g(S)},b=S=>{if(v.disabled===!0||!At)return;const C=p.value&&At;C&&d(t,!1),(m.value||!C)&&y(S)},x=S=>{zr(S)&&(v.disabled&&S?p.value&&d(t,!1):o.value!==S&&(S?g():y()))},w=()=>{o.value?b():_()};return we(()=>v[e],x),l&&h.appContext.config.globalProperties.$route!==void 0&&we(()=>({...h.proxy.$route}),()=>{l.value&&o.value&&b()}),_t(()=>{x(v[e])}),{hide:b,show:_,toggle:w,hasUpdateHandler:p}},useModelToggleProps:i,useModelToggleEmits:n}};BM("modelValue");const FM=e=>{const t=it();return k(()=>{var r,n;return(n=(r=t==null?void 0:t.proxy)==null?void 0:r.$props)==null?void 0:n[e]})};var Ar="top",cn="bottom",dn="right",Pr="left",Iy="auto",Ju=[Ar,cn,dn,Pr],_s="start",wu="end",i5="clippingParents",$M="viewport",Js="popper",a5="reference",Gb=Ju.reduce(function(e,t){return e.concat([t+"-"+_s,t+"-"+wu])},[]),Oy=[].concat(Ju,[Iy]).reduce(function(e,t){return e.concat([t,t+"-"+_s,t+"-"+wu])},[]),o5="beforeRead",s5="read",l5="afterRead",u5="beforeMain",f5="main",c5="afterMain",d5="beforeWrite",h5="write",v5="afterWrite",p5=[o5,s5,l5,u5,f5,c5,d5,h5,v5];function Qn(e){return e?(e.nodeName||"").toLowerCase():null}function In(e){if(e==null)return window;if(e.toString()!=="[object Window]"){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function bs(e){var t=In(e).Element;return e instanceof t||e instanceof Element}function ln(e){var t=In(e).HTMLElement;return e instanceof t||e instanceof HTMLElement}function Ry(e){if(typeof ShadowRoot>"u")return!1;var t=In(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot}function g5(e){var t=e.state;Object.keys(t.elements).forEach(function(r){var n=t.styles[r]||{},i=t.attributes[r]||{},a=t.elements[r];!ln(a)||!Qn(a)||(Object.assign(a.style,n),Object.keys(i).forEach(function(o){var s=i[o];s===!1?a.removeAttribute(o):a.setAttribute(o,s===!0?"":s)}))})}function m5(e){var t=e.state,r={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,r.popper),t.styles=r,t.elements.arrow&&Object.assign(t.elements.arrow.style,r.arrow),function(){Object.keys(t.elements).forEach(function(n){var i=t.elements[n],a=t.attributes[n]||{},o=Object.keys(t.styles.hasOwnProperty(n)?t.styles[n]:r[n]),s=o.reduce(function(l,u){return l[u]="",l},{});!ln(i)||!Qn(i)||(Object.assign(i.style,s),Object.keys(a).forEach(function(l){i.removeAttribute(l)}))})}}var HM={name:"applyStyles",enabled:!0,phase:"write",fn:g5,effect:m5,requires:["computeStyles"]};function jn(e){return e.split("-")[0]}var lo=Math.max,pd=Math.min,ws=Math.round;function Ss(e,t){t===void 0&&(t=!1);var r=e.getBoundingClientRect(),n=1,i=1;if(ln(e)&&t){var a=e.offsetHeight,o=e.offsetWidth;o>0&&(n=ws(r.width)/o||1),a>0&&(i=ws(r.height)/a||1)}return{width:r.width/n,height:r.height/i,top:r.top/i,right:r.right/n,bottom:r.bottom/i,left:r.left/n,x:r.left/n,y:r.top/i}}function ky(e){var t=Ss(e),r=e.offsetWidth,n=e.offsetHeight;return Math.abs(t.width-r)<=1&&(r=t.width),Math.abs(t.height-n)<=1&&(n=t.height),{x:e.offsetLeft,y:e.offsetTop,width:r,height:n}}function zM(e,t){var r=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(r&&Ry(r)){var n=t;do{if(n&&e.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function Si(e){return In(e).getComputedStyle(e)}function y5(e){return["table","td","th"].indexOf(Qn(e))>=0}function ga(e){return((bs(e)?e.ownerDocument:e.document)||window.document).documentElement}function ch(e){return Qn(e)==="html"?e:e.assignedSlot||e.parentNode||(Ry(e)?e.host:null)||ga(e)}function Ub(e){return!ln(e)||Si(e).position==="fixed"?null:e.offsetParent}function _5(e){var t=navigator.userAgent.toLowerCase().indexOf("firefox")!==-1,r=navigator.userAgent.indexOf("Trident")!==-1;if(r&&ln(e)){var n=Si(e);if(n.position==="fixed")return null}var i=ch(e);for(Ry(i)&&(i=i.host);ln(i)&&["html","body"].indexOf(Qn(i))<0;){var a=Si(i);if(a.transform!=="none"||a.perspective!=="none"||a.contain==="paint"||["transform","perspective"].indexOf(a.willChange)!==-1||t&&a.willChange==="filter"||t&&a.filter&&a.filter!=="none")return i;i=i.parentNode}return null}function ef(e){for(var t=In(e),r=Ub(e);r&&y5(r)&&Si(r).position==="static";)r=Ub(r);return r&&(Qn(r)==="html"||Qn(r)==="body"&&Si(r).position==="static")?t:r||_5(e)||t}function Ny(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function Fl(e,t,r){return lo(e,pd(t,r))}function b5(e,t,r){var n=Fl(e,t,r);return n>r?r:n}function VM(){return{top:0,right:0,bottom:0,left:0}}function WM(e){return Object.assign({},VM(),e)}function GM(e,t){return t.reduce(function(r,n){return r[n]=e,r},{})}var w5=function(e,t){return e=typeof e=="function"?e(Object.assign({},t.rects,{placement:t.placement})):e,WM(typeof e!="number"?e:GM(e,Ju))};function S5(e){var t,r=e.state,n=e.name,i=e.options,a=r.elements.arrow,o=r.modifiersData.popperOffsets,s=jn(r.placement),l=Ny(s),u=[Pr,dn].indexOf(s)>=0,f=u?"height":"width";if(!(!a||!o)){var c=w5(i.padding,r),h=ky(a),d=l==="y"?Ar:Pr,v=l==="y"?cn:dn,p=r.rects.reference[f]+r.rects.reference[l]-o[l]-r.rects.popper[f],m=o[l]-r.rects.reference[l],g=ef(a),y=g?l==="y"?g.clientHeight||0:g.clientWidth||0:0,_=p/2-m/2,b=c[d],x=y-h[f]-c[v],w=y/2-h[f]/2+_,S=Fl(b,w,x),C=l;r.modifiersData[n]=(t={},t[C]=S,t.centerOffset=S-w,t)}}function x5(e){var t=e.state,r=e.options,n=r.element,i=n===void 0?"[data-popper-arrow]":n;i!=null&&(typeof i=="string"&&(i=t.elements.popper.querySelector(i),!i)||!zM(t.elements.popper,i)||(t.elements.arrow=i))}var C5={name:"arrow",enabled:!0,phase:"main",fn:S5,effect:x5,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function xs(e){return e.split("-")[1]}var T5={top:"auto",right:"auto",bottom:"auto",left:"auto"};function M5(e){var t=e.x,r=e.y,n=window,i=n.devicePixelRatio||1;return{x:ws(t*i)/i||0,y:ws(r*i)/i||0}}function Yb(e){var t,r=e.popper,n=e.popperRect,i=e.placement,a=e.variation,o=e.offsets,s=e.position,l=e.gpuAcceleration,u=e.adaptive,f=e.roundOffsets,c=e.isFixed,h=o.x,d=h===void 0?0:h,v=o.y,p=v===void 0?0:v,m=typeof f=="function"?f({x:d,y:p}):{x:d,y:p};d=m.x,p=m.y;var g=o.hasOwnProperty("x"),y=o.hasOwnProperty("y"),_=Pr,b=Ar,x=window;if(u){var w=ef(r),S="clientHeight",C="clientWidth";if(w===In(r)&&(w=ga(r),Si(w).position!=="static"&&s==="absolute"&&(S="scrollHeight",C="scrollWidth")),w=w,i===Ar||(i===Pr||i===dn)&&a===wu){b=cn;var M=c&&w===x&&x.visualViewport?x.visualViewport.height:w[S];p-=M-n.height,p*=l?1:-1}if(i===Pr||(i===Ar||i===cn)&&a===wu){_=dn;var A=c&&w===x&&x.visualViewport?x.visualViewport.width:w[C];d-=A-n.width,d*=l?1:-1}}var P=Object.assign({position:s},u&&T5),E=f===!0?M5({x:d,y:p}):{x:d,y:p};if(d=E.x,p=E.y,l){var L;return Object.assign({},P,(L={},L[b]=y?"0":"",L[_]=g?"0":"",L.transform=(x.devicePixelRatio||1)<=1?"translate("+d+"px, "+p+"px)":"translate3d("+d+"px, "+p+"px, 0)",L))}return Object.assign({},P,(t={},t[b]=y?p+"px":"",t[_]=g?d+"px":"",t.transform="",t))}function A5(e){var t=e.state,r=e.options,n=r.gpuAcceleration,i=n===void 0?!0:n,a=r.adaptive,o=a===void 0?!0:a,s=r.roundOffsets,l=s===void 0?!0:s,u={placement:jn(t.placement),variation:xs(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:i,isFixed:t.options.strategy==="fixed"};t.modifiersData.popperOffsets!=null&&(t.styles.popper=Object.assign({},t.styles.popper,Yb(Object.assign({},u,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:o,roundOffsets:l})))),t.modifiersData.arrow!=null&&(t.styles.arrow=Object.assign({},t.styles.arrow,Yb(Object.assign({},u,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})}var UM={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:A5,data:{}},Cf={passive:!0};function P5(e){var t=e.state,r=e.instance,n=e.options,i=n.scroll,a=i===void 0?!0:i,o=n.resize,s=o===void 0?!0:o,l=In(t.elements.popper),u=[].concat(t.scrollParents.reference,t.scrollParents.popper);return a&&u.forEach(function(f){f.addEventListener("scroll",r.update,Cf)}),s&&l.addEventListener("resize",r.update,Cf),function(){a&&u.forEach(function(f){f.removeEventListener("scroll",r.update,Cf)}),s&&l.removeEventListener("resize",r.update,Cf)}}var YM={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:P5,data:{}},E5={left:"right",right:"left",bottom:"top",top:"bottom"};function Ic(e){return e.replace(/left|right|bottom|top/g,function(t){return E5[t]})}var L5={start:"end",end:"start"};function jb(e){return e.replace(/start|end/g,function(t){return L5[t]})}function By(e){var t=In(e),r=t.pageXOffset,n=t.pageYOffset;return{scrollLeft:r,scrollTop:n}}function Fy(e){return Ss(ga(e)).left+By(e).scrollLeft}function D5(e){var t=In(e),r=ga(e),n=t.visualViewport,i=r.clientWidth,a=r.clientHeight,o=0,s=0;return n&&(i=n.width,a=n.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(o=n.offsetLeft,s=n.offsetTop)),{width:i,height:a,x:o+Fy(e),y:s}}function I5(e){var t,r=ga(e),n=By(e),i=(t=e.ownerDocument)==null?void 0:t.body,a=lo(r.scrollWidth,r.clientWidth,i?i.scrollWidth:0,i?i.clientWidth:0),o=lo(r.scrollHeight,r.clientHeight,i?i.scrollHeight:0,i?i.clientHeight:0),s=-n.scrollLeft+Fy(e),l=-n.scrollTop;return Si(i||r).direction==="rtl"&&(s+=lo(r.clientWidth,i?i.clientWidth:0)-a),{width:a,height:o,x:s,y:l}}function $y(e){var t=Si(e),r=t.overflow,n=t.overflowX,i=t.overflowY;return/auto|scroll|overlay|hidden/.test(r+i+n)}function jM(e){return["html","body","#document"].indexOf(Qn(e))>=0?e.ownerDocument.body:ln(e)&&$y(e)?e:jM(ch(e))}function $l(e,t){var r;t===void 0&&(t=[]);var n=jM(e),i=n===((r=e.ownerDocument)==null?void 0:r.body),a=In(n),o=i?[a].concat(a.visualViewport||[],$y(n)?n:[]):n,s=t.concat(o);return i?s:s.concat($l(ch(o)))}function ug(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function O5(e){var t=Ss(e);return t.top=t.top+e.clientTop,t.left=t.left+e.clientLeft,t.bottom=t.top+e.clientHeight,t.right=t.left+e.clientWidth,t.width=e.clientWidth,t.height=e.clientHeight,t.x=t.left,t.y=t.top,t}function qb(e,t){return t===$M?ug(D5(e)):bs(t)?O5(t):ug(I5(ga(e)))}function R5(e){var t=$l(ch(e)),r=["absolute","fixed"].indexOf(Si(e).position)>=0,n=r&&ln(e)?ef(e):e;return bs(n)?t.filter(function(i){return bs(i)&&zM(i,n)&&Qn(i)!=="body"}):[]}function k5(e,t,r){var n=t==="clippingParents"?R5(e):[].concat(t),i=[].concat(n,[r]),a=i[0],o=i.reduce(function(s,l){var u=qb(e,l);return s.top=lo(u.top,s.top),s.right=pd(u.right,s.right),s.bottom=pd(u.bottom,s.bottom),s.left=lo(u.left,s.left),s},qb(e,a));return o.width=o.right-o.left,o.height=o.bottom-o.top,o.x=o.left,o.y=o.top,o}function qM(e){var t=e.reference,r=e.element,n=e.placement,i=n?jn(n):null,a=n?xs(n):null,o=t.x+t.width/2-r.width/2,s=t.y+t.height/2-r.height/2,l;switch(i){case Ar:l={x:o,y:t.y-r.height};break;case cn:l={x:o,y:t.y+t.height};break;case dn:l={x:t.x+t.width,y:s};break;case Pr:l={x:t.x-r.width,y:s};break;default:l={x:t.x,y:t.y}}var u=i?Ny(i):null;if(u!=null){var f=u==="y"?"height":"width";switch(a){case _s:l[u]=l[u]-(t[f]/2-r[f]/2);break;case wu:l[u]=l[u]+(t[f]/2-r[f]/2);break}}return l}function Su(e,t){t===void 0&&(t={});var r=t,n=r.placement,i=n===void 0?e.placement:n,a=r.boundary,o=a===void 0?i5:a,s=r.rootBoundary,l=s===void 0?$M:s,u=r.elementContext,f=u===void 0?Js:u,c=r.altBoundary,h=c===void 0?!1:c,d=r.padding,v=d===void 0?0:d,p=WM(typeof v!="number"?v:GM(v,Ju)),m=f===Js?a5:Js,g=e.rects.popper,y=e.elements[h?m:f],_=k5(bs(y)?y:y.contextElement||ga(e.elements.popper),o,l),b=Ss(e.elements.reference),x=qM({reference:b,element:g,strategy:"absolute",placement:i}),w=ug(Object.assign({},g,x)),S=f===Js?w:b,C={top:_.top-S.top+p.top,bottom:S.bottom-_.bottom+p.bottom,left:_.left-S.left+p.left,right:S.right-_.right+p.right},M=e.modifiersData.offset;if(f===Js&&M){var A=M[i];Object.keys(C).forEach(function(P){var E=[dn,cn].indexOf(P)>=0?1:-1,L=[Ar,cn].indexOf(P)>=0?"y":"x";C[P]+=A[L]*E})}return C}function N5(e,t){t===void 0&&(t={});var r=t,n=r.placement,i=r.boundary,a=r.rootBoundary,o=r.padding,s=r.flipVariations,l=r.allowedAutoPlacements,u=l===void 0?Oy:l,f=xs(n),c=f?s?Gb:Gb.filter(function(v){return xs(v)===f}):Ju,h=c.filter(function(v){return u.indexOf(v)>=0});h.length===0&&(h=c);var d=h.reduce(function(v,p){return v[p]=Su(e,{placement:p,boundary:i,rootBoundary:a,padding:o})[jn(p)],v},{});return Object.keys(d).sort(function(v,p){return d[v]-d[p]})}function B5(e){if(jn(e)===Iy)return[];var t=Ic(e);return[jb(e),t,jb(t)]}function F5(e){var t=e.state,r=e.options,n=e.name;if(!t.modifiersData[n]._skip){for(var i=r.mainAxis,a=i===void 0?!0:i,o=r.altAxis,s=o===void 0?!0:o,l=r.fallbackPlacements,u=r.padding,f=r.boundary,c=r.rootBoundary,h=r.altBoundary,d=r.flipVariations,v=d===void 0?!0:d,p=r.allowedAutoPlacements,m=t.options.placement,g=jn(m),y=g===m,_=l||(y||!v?[Ic(m)]:B5(m)),b=[m].concat(_).reduce(function(Se,$e){return Se.concat(jn($e)===Iy?N5(t,{placement:$e,boundary:f,rootBoundary:c,padding:u,flipVariations:v,allowedAutoPlacements:p}):$e)},[]),x=t.rects.reference,w=t.rects.popper,S=new Map,C=!0,M=b[0],A=0;A=0,N=O?"width":"height",H=Su(t,{placement:P,boundary:f,rootBoundary:c,altBoundary:h,padding:u}),V=O?L?dn:Pr:L?cn:Ar;x[N]>w[N]&&(V=Ic(V));var U=Ic(V),F=[];if(a&&F.push(H[E]<=0),s&&F.push(H[V]<=0,H[U]<=0),F.every(function(Se){return Se})){M=P,C=!1;break}S.set(P,F)}if(C)for(var z=v?3:1,te=function(Se){var $e=b.find(function(Ie){var B=S.get(Ie);if(B)return B.slice(0,Se).every(function(Y){return Y})});if($e)return M=$e,"break"},J=z;J>0;J--){var me=te(J);if(me==="break")break}t.placement!==M&&(t.modifiersData[n]._skip=!0,t.placement=M,t.reset=!0)}}var $5={name:"flip",enabled:!0,phase:"main",fn:F5,requiresIfExists:["offset"],data:{_skip:!1}};function Kb(e,t,r){return r===void 0&&(r={x:0,y:0}),{top:e.top-t.height-r.y,right:e.right-t.width+r.x,bottom:e.bottom-t.height+r.y,left:e.left-t.width-r.x}}function Xb(e){return[Ar,dn,cn,Pr].some(function(t){return e[t]>=0})}function H5(e){var t=e.state,r=e.name,n=t.rects.reference,i=t.rects.popper,a=t.modifiersData.preventOverflow,o=Su(t,{elementContext:"reference"}),s=Su(t,{altBoundary:!0}),l=Kb(o,n),u=Kb(s,i,a),f=Xb(l),c=Xb(u);t.modifiersData[r]={referenceClippingOffsets:l,popperEscapeOffsets:u,isReferenceHidden:f,hasPopperEscaped:c},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":f,"data-popper-escaped":c})}var z5={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:H5};function V5(e,t,r){var n=jn(e),i=[Pr,Ar].indexOf(n)>=0?-1:1,a=typeof r=="function"?r(Object.assign({},t,{placement:e})):r,o=a[0],s=a[1];return o=o||0,s=(s||0)*i,[Pr,dn].indexOf(n)>=0?{x:s,y:o}:{x:o,y:s}}function W5(e){var t=e.state,r=e.options,n=e.name,i=r.offset,a=i===void 0?[0,0]:i,o=Oy.reduce(function(f,c){return f[c]=V5(c,t.rects,a),f},{}),s=o[t.placement],l=s.x,u=s.y;t.modifiersData.popperOffsets!=null&&(t.modifiersData.popperOffsets.x+=l,t.modifiersData.popperOffsets.y+=u),t.modifiersData[n]=o}var G5={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:W5};function U5(e){var t=e.state,r=e.name;t.modifiersData[r]=qM({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})}var KM={name:"popperOffsets",enabled:!0,phase:"read",fn:U5,data:{}};function Y5(e){return e==="x"?"y":"x"}function j5(e){var t=e.state,r=e.options,n=e.name,i=r.mainAxis,a=i===void 0?!0:i,o=r.altAxis,s=o===void 0?!1:o,l=r.boundary,u=r.rootBoundary,f=r.altBoundary,c=r.padding,h=r.tether,d=h===void 0?!0:h,v=r.tetherOffset,p=v===void 0?0:v,m=Su(t,{boundary:l,rootBoundary:u,padding:c,altBoundary:f}),g=jn(t.placement),y=xs(t.placement),_=!y,b=Ny(g),x=Y5(b),w=t.modifiersData.popperOffsets,S=t.rects.reference,C=t.rects.popper,M=typeof p=="function"?p(Object.assign({},t.rects,{placement:t.placement})):p,A=typeof M=="number"?{mainAxis:M,altAxis:M}:Object.assign({mainAxis:0,altAxis:0},M),P=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,E={x:0,y:0};if(w){if(a){var L,O=b==="y"?Ar:Pr,N=b==="y"?cn:dn,H=b==="y"?"height":"width",V=w[b],U=V+m[O],F=V-m[N],z=d?-C[H]/2:0,te=y===_s?S[H]:C[H],J=y===_s?-C[H]:-S[H],me=t.elements.arrow,Se=d&&me?ky(me):{width:0,height:0},$e=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:VM(),Ie=$e[O],B=$e[N],Y=Fl(0,S[H],Se[H]),K=_?S[H]/2-z-Y-Ie-A.mainAxis:te-Y-Ie-A.mainAxis,Q=_?-S[H]/2+z+Y+B+A.mainAxis:J+Y+B+A.mainAxis,oe=t.elements.arrow&&ef(t.elements.arrow),pe=oe?b==="y"?oe.clientTop||0:oe.clientLeft||0:0,D=(L=P==null?void 0:P[b])!=null?L:0,I=V+K-D-pe,W=V+Q-D,X=Fl(d?pd(U,I):U,V,d?lo(F,W):F);w[b]=X,E[b]=X-V}if(s){var q,le=b==="x"?Ar:Pr,fe=b==="x"?cn:dn,ae=w[x],se=x==="y"?"height":"width",ne=ae+m[le],he=ae-m[fe],Me=[Ar,Pr].indexOf(g)!==-1,xe=(q=P==null?void 0:P[x])!=null?q:0,ke=Me?ne:ae-S[se]-C[se]-xe+A.altAxis,Ve=Me?ae+S[se]+C[se]-xe-A.altAxis:he,rt=d&&Me?b5(ke,ae,Ve):Fl(d?ke:ne,ae,d?Ve:he);w[x]=rt,E[x]=rt-ae}t.modifiersData[n]=E}}var q5={name:"preventOverflow",enabled:!0,phase:"main",fn:j5,requiresIfExists:["offset"]};function K5(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function X5(e){return e===In(e)||!ln(e)?By(e):K5(e)}function Z5(e){var t=e.getBoundingClientRect(),r=ws(t.width)/e.offsetWidth||1,n=ws(t.height)/e.offsetHeight||1;return r!==1||n!==1}function Q5(e,t,r){r===void 0&&(r=!1);var n=ln(t),i=ln(t)&&Z5(t),a=ga(t),o=Ss(e,i),s={scrollLeft:0,scrollTop:0},l={x:0,y:0};return(n||!n&&!r)&&((Qn(t)!=="body"||$y(a))&&(s=X5(t)),ln(t)?(l=Ss(t,!0),l.x+=t.clientLeft,l.y+=t.clientTop):a&&(l.x=Fy(a))),{x:o.left+s.scrollLeft-l.x,y:o.top+s.scrollTop-l.y,width:o.width,height:o.height}}function J5(e){var t=new Map,r=new Set,n=[];e.forEach(function(a){t.set(a.name,a)});function i(a){r.add(a.name);var o=[].concat(a.requires||[],a.requiresIfExists||[]);o.forEach(function(s){if(!r.has(s)){var l=t.get(s);l&&i(l)}}),n.push(a)}return e.forEach(function(a){r.has(a.name)||i(a)}),n}function e4(e){var t=J5(e);return p5.reduce(function(r,n){return r.concat(t.filter(function(i){return i.phase===n}))},[])}function t4(e){var t;return function(){return t||(t=new Promise(function(r){Promise.resolve().then(function(){t=void 0,r(e())})})),t}}function r4(e){var t=e.reduce(function(r,n){var i=r[n.name];return r[n.name]=i?Object.assign({},i,n,{options:Object.assign({},i.options,n.options),data:Object.assign({},i.data,n.data)}):n,r},{});return Object.keys(t).map(function(r){return t[r]})}var Zb={placement:"bottom",modifiers:[],strategy:"absolute"};function Qb(){for(var e=arguments.length,t=new Array(e),r=0;r{const n={name:"updateState",enabled:!0,phase:"write",fn:({state:l})=>{const u=s4(l);Object.assign(o.value,u)},requires:["computeStyles"]},i=k(()=>{const{onFirstUpdate:l,placement:u,strategy:f,modifiers:c}=T(r);return{onFirstUpdate:l,placement:u||"bottom",strategy:f||"absolute",modifiers:[...c||[],n,{name:"applyStyles",enabled:!1}]}}),a=ty(),o=$({styles:{popper:{position:T(i).strategy,left:"0",top:"0"},arrow:{position:"absolute"}},attributes:{}}),s=()=>{a.value&&(a.value.destroy(),a.value=void 0)};return we(i,l=>{const u=T(a);u&&u.setOptions(l)},{deep:!0}),we([e,t],([l,u])=>{s(),!(!l||!u)&&(a.value=a4(l,u,T(i)))}),tr(()=>{s()}),{state:k(()=>{var l;return{...((l=T(a))==null?void 0:l.state)||{}}}),styles:k(()=>T(o).styles),attributes:k(()=>T(o).attributes),update:()=>{var l;return(l=T(a))==null?void 0:l.update()},forceUpdate:()=>{var l;return(l=T(a))==null?void 0:l.forceUpdate()},instanceRef:k(()=>T(a))}};function s4(e){const t=Object.keys(e.elements),r=og(t.map(i=>[i,e.styles[i]||{}])),n=og(t.map(i=>[i,e.attributes[i]]));return{styles:r,attributes:n}}const XM=e=>{if(!e)return{onClick:Bt,onMousedown:Bt,onMouseup:Bt};let t=!1,r=!1;return{onClick:o=>{t&&r&&e(o),t=r=!1},onMousedown:o=>{t=o.target===o.currentTarget},onMouseup:o=>{r=o.target===o.currentTarget}}};function Jb(){let e;const t=(n,i)=>{r(),e=window.setTimeout(n,i)},r=()=>window.clearTimeout(e);return ju(()=>r()),{registerTimeout:t,cancelTimeout:r}}const e1={prefix:Math.floor(Math.random()*1e4),current:0},l4=Symbol("elIdInjection"),ZM=()=>it()?Le(l4,e1):e1,xu=e=>{const t=ZM(),r=Dy();return k(()=>T(e)||`${r.value}-id-${t.prefix}-${t.current++}`)};let qo=[];const t1=e=>{const t=e;t.key===hr.esc&&qo.forEach(r=>r(t))},u4=e=>{_t(()=>{qo.length===0&&document.addEventListener("keydown",t1),At&&qo.push(e)}),tr(()=>{qo=qo.filter(t=>t!==e),qo.length===0&&At&&document.removeEventListener("keydown",t1)})};let r1;const QM=()=>{const e=Dy(),t=ZM(),r=k(()=>`${e.value}-popper-container-${t.prefix}`),n=k(()=>`#${r.value}`);return{id:r,selector:n}},f4=e=>{const t=document.createElement("div");return t.id=e,document.body.appendChild(t),t},c4=()=>{const{id:e,selector:t}=QM();return eh(()=>{At&&!r1&&!document.body.querySelector(t.value)&&(r1=f4(e.value))}),{id:e,selector:t}},d4=Je({showAfter:{type:Number,default:0},hideAfter:{type:Number,default:200},autoClose:{type:Number,default:0}}),h4=({showAfter:e,hideAfter:t,autoClose:r,open:n,close:i})=>{const{registerTimeout:a}=Jb(),{registerTimeout:o,cancelTimeout:s}=Jb();return{onOpen:f=>{a(()=>{n(f);const c=T(r);Rt(c)&&c>0&&o(()=>{i(f)},c)},T(e))},onClose:f=>{s(),a(()=>{i(f)},T(t))}}},JM=Symbol("elForwardRef"),v4=e=>{Dt(JM,{setForwardRef:r=>{e.value=r}})},p4=e=>({mounted(t){e(t)},updated(t){e(t)},unmounted(){e(null)}}),n1=$(0),eA=2e3,tA=Symbol("zIndexContextKey"),zy=e=>{const t=e||(it()?Le(tA,void 0):void 0),r=k(()=>{const a=T(t);return Rt(a)?a:eA}),n=k(()=>r.value+n1.value);return{initialZIndex:r,currentZIndex:n,nextZIndex:()=>(n1.value++,n.value)}},dh=fh({type:String,values:Bs,required:!1}),rA=Symbol("size"),g4=()=>{const e=Le(rA,{});return k(()=>T(e.size)||"")},nA=Symbol(),gd=$();function hh(e,t=void 0){const r=it()?Le(nA,gd):gd;return e?k(()=>{var n,i;return(i=(n=r.value)==null?void 0:n[e])!=null?i:t}):r}function m4(e,t){const r=hh(),n=Oe(e,k(()=>{var s;return((s=r.value)==null?void 0:s.namespace)||Bl})),i=Fs(k(()=>{var s;return(s=r.value)==null?void 0:s.locale})),a=zy(k(()=>{var s;return((s=r.value)==null?void 0:s.zIndex)||eA})),o=k(()=>{var s;return T(t)||((s=r.value)==null?void 0:s.size)||""});return y4(k(()=>T(r)||{})),{ns:n,locale:i,zIndex:a,size:o}}const y4=(e,t,r=!1)=>{var n;const i=!!it(),a=i?hh():void 0,o=(n=t==null?void 0:t.provide)!=null?n:i?Dt:void 0;if(!o)return;const s=k(()=>{const l=T(e);return a!=null&&a.value?_4(a.value,l):l});return o(nA,s),o(kM,k(()=>s.value.locale)),o(NM,k(()=>s.value.namespace)),o(tA,k(()=>s.value.zIndex)),o(rA,{size:k(()=>s.value.size||"")}),(r||!gd.value)&&(gd.value=s.value),s},_4=(e,t)=>{var r;const n=[...new Set([...Vb(e),...Vb(t)])],i={};for(const a of n)i[a]=(r=t[a])!=null?r:e[a];return i},i1={};var Ke=(e,t)=>{const r=e.__vccOpts||e;for(const[n,i]of t)r[n]=i;return r};const b4=Je({size:{type:Be([Number,String])},color:{type:String}}),w4=ie({name:"ElIcon",inheritAttrs:!1}),S4=ie({...w4,props:b4,setup(e){const t=e,r=Oe("icon"),n=k(()=>{const{size:i,color:a}=t;return!i&&!a?{}:{fontSize:ys(i)?void 0:Zn(i),"--color":a}});return(i,a)=>(G(),ce("i",ei({class:T(r).b(),style:T(n)},i.$attrs),[Ce(i.$slots,"default")],16))}});var x4=Ke(S4,[["__file","icon.vue"]]);const Nt=Yt(x4),$s=Symbol("formContextKey"),yo=Symbol("formItemContextKey"),xi=(e,t={})=>{const r=$(void 0),n=t.prop?r:FM("size"),i=t.global?r:g4(),a=t.form?{size:void 0}:Le($s,void 0),o=t.formItem?{size:void 0}:Le(yo,void 0);return k(()=>n.value||T(e)||(o==null?void 0:o.size)||(a==null?void 0:a.size)||i.value||"")},vh=e=>{const t=FM("disabled"),r=Le($s,void 0);return k(()=>t.value||T(e)||(r==null?void 0:r.disabled)||!1)},tf=()=>{const e=Le($s,void 0),t=Le(yo,void 0);return{form:e,formItem:t}},Vy=(e,{formItemContext:t,disableIdGeneration:r,disableIdManagement:n})=>{r||(r=$(!1)),n||(n=$(!1));const i=$();let a;const o=k(()=>{var s;return!!(!e.label&&t&&t.inputIds&&((s=t.inputIds)==null?void 0:s.length)<=1)});return _t(()=>{a=we([wn(e,"id"),r],([s,l])=>{const u=s??(l?void 0:xu().value);u!==i.value&&(t!=null&&t.removeInputId&&(i.value&&t.removeInputId(i.value),!(n!=null&&n.value)&&!l&&u&&t.addInputId(u)),i.value=u)},{immediate:!0})}),Os(()=>{a&&a(),t!=null&&t.removeInputId&&i.value&&t.removeInputId(i.value)}),{isLabeledByFormItem:o,inputId:i}},C4=Je({size:{type:String,values:Bs},disabled:Boolean}),T4=Je({...C4,model:Object,rules:{type:Be(Object)},labelPosition:{type:String,values:["left","right","top"],default:"right"},requireAsteriskPosition:{type:String,values:["left","right"],default:"left"},labelWidth:{type:[String,Number],default:""},labelSuffix:{type:String,default:""},inline:Boolean,inlineMessage:Boolean,statusIcon:Boolean,showMessage:{type:Boolean,default:!0},validateOnRuleChange:{type:Boolean,default:!0},hideRequiredAsterisk:Boolean,scrollToError:Boolean,scrollIntoViewOptions:{type:[Object,Boolean]}}),M4={validate:(e,t,r)=>(_e(e)||ze(e))&&zr(t)&&ze(r)};function A4(){const e=$([]),t=k(()=>{if(!e.value.length)return"0";const a=Math.max(...e.value);return a?`${a}px`:""});function r(a){const o=e.value.indexOf(a);return o===-1&&t.value,o}function n(a,o){if(a&&o){const s=r(o);e.value.splice(s,1,a)}else a&&e.value.push(a)}function i(a){const o=r(a);o>-1&&e.value.splice(o,1)}return{autoLabelWidth:t,registerLabelWidth:n,deregisterLabelWidth:i}}const Tf=(e,t)=>{const r=Jp(t);return r.length>0?e.filter(n=>n.prop&&r.includes(n.prop)):e},P4="ElForm",E4=ie({name:P4}),L4=ie({...E4,props:T4,emits:M4,setup(e,{expose:t,emit:r}){const n=e,i=[],a=xi(),o=Oe("form"),s=k(()=>{const{labelPosition:_,inline:b}=n;return[o.b(),o.m(a.value||"default"),{[o.m(`label-${_}`)]:_,[o.m("inline")]:b}]}),l=_=>i.find(b=>b.prop===_),u=_=>{i.push(_)},f=_=>{_.prop&&i.splice(i.indexOf(_),1)},c=(_=[])=>{n.model&&Tf(i,_).forEach(b=>b.resetField())},h=(_=[])=>{Tf(i,_).forEach(b=>b.clearValidate())},d=k(()=>!!n.model),v=_=>{if(i.length===0)return[];const b=Tf(i,_);return b.length?b:[]},p=async _=>g(void 0,_),m=async(_=[])=>{if(!d.value)return!1;const b=v(_);if(b.length===0)return!0;let x={};for(const w of b)try{await w.validate("")}catch(S){x={...x,...S}}return Object.keys(x).length===0?!0:Promise.reject(x)},g=async(_=[],b)=>{const x=!De(b);try{const w=await m(_);return w===!0&&(b==null||b(w)),w}catch(w){if(w instanceof Error)throw w;const S=w;return n.scrollToError&&y(Object.keys(S)[0]),b==null||b(!1,S),x&&Promise.reject(S)}},y=_=>{var b;const x=Tf(i,_)[0];x&&((b=x.$el)==null||b.scrollIntoView(n.scrollIntoViewOptions))};return we(()=>n.rules,()=>{n.validateOnRuleChange&&p().catch(_=>void 0)},{deep:!0}),Dt($s,Ln({...Kd(n),emit:r,resetFields:c,clearValidate:h,validateField:g,getField:l,addField:u,removeField:f,...A4()})),t({validate:p,validateField:g,resetFields:c,clearValidate:h,scrollToField:y}),(_,b)=>(G(),ce("form",{class:re(T(s))},[Ce(_.$slots,"default")],2))}});var D4=Ke(L4,[["__file","form.vue"]]);function Qa(){return Qa=Object.assign?Object.assign.bind():function(e){for(var t=1;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function Oc(e,t,r){return O4()?Oc=Reflect.construct.bind():Oc=function(i,a,o){var s=[null];s.push.apply(s,a);var l=Function.bind.apply(i,s),u=new l;return o&&Cu(u,o.prototype),u},Oc.apply(null,arguments)}function R4(e){return Function.toString.call(e).indexOf("[native code]")!==-1}function cg(e){var t=typeof Map=="function"?new Map:void 0;return cg=function(n){if(n===null||!R4(n))return n;if(typeof n!="function")throw new TypeError("Super expression must either be null or a function");if(typeof t<"u"){if(t.has(n))return t.get(n);t.set(n,i)}function i(){return Oc(n,arguments,fg(this).constructor)}return i.prototype=Object.create(n.prototype,{constructor:{value:i,enumerable:!1,writable:!0,configurable:!0}}),Cu(i,n)},cg(e)}var k4=/%[sdj%]/g,N4=function(){};function dg(e){if(!e||!e.length)return null;var t={};return e.forEach(function(r){var n=r.field;t[n]=t[n]||[],t[n].push(r)}),t}function Fr(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n=a)return s;switch(s){case"%s":return String(r[i++]);case"%d":return Number(r[i++]);case"%j":try{return JSON.stringify(r[i++])}catch{return"[Circular]"}break;default:return s}});return o}return e}function B4(e){return e==="string"||e==="url"||e==="hex"||e==="email"||e==="date"||e==="pattern"}function Ut(e,t){return!!(e==null||t==="array"&&Array.isArray(e)&&!e.length||B4(t)&&typeof e=="string"&&!e)}function F4(e,t,r){var n=[],i=0,a=e.length;function o(s){n.push.apply(n,s||[]),i++,i===a&&r(n)}e.forEach(function(s){t(s,o)})}function a1(e,t,r){var n=0,i=e.length;function a(o){if(o&&o.length){r(o);return}var s=n;n=n+1,s{t.insertBefore(e,r||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,r,n)=>{const i=t==="svg"?Ki.createElementNS(AO,e):t==="mathml"?Ki.createElementNS(PO,e):Ki.createElement(e,r?{is:r}:void 0);return e==="select"&&n&&n.multiple!=null&&i.setAttribute("multiple",n.multiple),i},createText:e=>Ki.createTextNode(e),createComment:e=>Ki.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Ki.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,r,n,i,a){const o=r?r.previousSibling:t.lastChild;if(i&&(i===a||i.nextSibling))for(;t.insertBefore(i.cloneNode(!0),r),!(i===a||!(i=i.nextSibling)););else{k_.innerHTML=n==="svg"?`${e}`:n==="mathml"?`${e}`:e;const s=k_.content;if(n==="svg"||n==="mathml"){const l=s.firstChild;for(;l.firstChild;)s.appendChild(l.firstChild);s.removeChild(l)}t.insertBefore(s,r)}return[o?o.nextSibling:t.firstChild,r?r.previousSibling:t.lastChild]}},Ii="transition",Xs="animation",gs=Symbol("_vtc"),ti=(e,{slots:t})=>Te(BI,RT(e),t);ti.displayName="Transition";const OT={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},LO=ti.props=Ht({},hT,OT),_a=(e,t=[])=>{_e(e)?e.forEach(r=>r(...t)):e&&e(...t)},N_=e=>e?_e(e)?e.some(t=>t.length>1):e.length>1:!1;function RT(e){const t={};for(const E in e)E in OT||(t[E]=e[E]);if(e.css===!1)return t;const{name:r="v",type:n,duration:i,enterFromClass:a=`${r}-enter-from`,enterActiveClass:o=`${r}-enter-active`,enterToClass:s=`${r}-enter-to`,appearFromClass:l=a,appearActiveClass:u=o,appearToClass:f=s,leaveFromClass:c=`${r}-leave-from`,leaveActiveClass:h=`${r}-leave-active`,leaveToClass:d=`${r}-leave-to`}=e,v=DO(i),p=v&&v[0],m=v&&v[1],{onBeforeEnter:g,onEnter:y,onEnterCancelled:_,onLeave:b,onLeaveCancelled:x,onBeforeAppear:w=g,onAppear:S=y,onAppearCancelled:C=_}=t,M=(E,L,O)=>{zi(E,L?f:s),zi(E,L?u:o),O&&O()},A=(E,L)=>{E._isLeaving=!1,zi(E,c),zi(E,d),zi(E,h),L&&L()},P=E=>(L,O)=>{const N=E?S:y,H=()=>M(L,E,O);_a(N,[L,H]),B_(()=>{zi(L,E?l:a),ci(L,E?f:s),N_(N)||F_(L,n,p,H)})};return Ht(t,{onBeforeEnter(E){_a(g,[E]),ci(E,a),ci(E,o)},onBeforeAppear(E){_a(w,[E]),ci(E,l),ci(E,u)},onEnter:P(!1),onAppear:P(!0),onLeave(E,L){E._isLeaving=!0;const O=()=>A(E,L);ci(E,c),NT(),ci(E,h),B_(()=>{E._isLeaving&&(zi(E,c),ci(E,d),N_(b)||F_(E,n,m,O))}),_a(b,[E,O])},onEnterCancelled(E){M(E,!1),_a(_,[E])},onAppearCancelled(E){M(E,!0),_a(C,[E])},onLeaveCancelled(E){A(E),_a(x,[E])}})}function DO(e){if(e==null)return null;if(qe(e))return[Kh(e.enter),Kh(e.leave)];{const t=Kh(e);return[t,t]}}function Kh(e){return HD(e)}function ci(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.add(r)),(e[gs]||(e[gs]=new Set)).add(t)}function zi(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.remove(n));const r=e[gs];r&&(r.delete(t),r.size||(e[gs]=void 0))}function B_(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let IO=0;function F_(e,t,r,n){const i=e._endId=++IO,a=()=>{i===e._endId&&n()};if(r)return setTimeout(a,r);const{type:o,timeout:s,propCount:l}=kT(e,t);if(!o)return n();const u=o+"end";let f=0;const c=()=>{e.removeEventListener(u,h),a()},h=d=>{d.target===e&&++f>=l&&c()};setTimeout(()=>{f(r[v]||"").split(", "),i=n(`${Ii}Delay`),a=n(`${Ii}Duration`),o=$_(i,a),s=n(`${Xs}Delay`),l=n(`${Xs}Duration`),u=$_(s,l);let f=null,c=0,h=0;t===Ii?o>0&&(f=Ii,c=o,h=a.length):t===Xs?u>0&&(f=Xs,c=u,h=l.length):(c=Math.max(o,u),f=c>0?o>u?Ii:Xs:null,h=f?f===Ii?a.length:l.length:0);const d=f===Ii&&/\b(transform|all)(,|$)/.test(n(`${Ii}Property`).toString());return{type:f,timeout:c,propCount:h,hasTransform:d}}function $_(e,t){for(;e.lengthH_(r)+H_(e[n])))}function H_(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function NT(){return document.body.offsetHeight}function OO(e,t,r){const n=e[gs];n&&(t=(t?[t,...n]:[...n]).join(" ")),t==null?e.removeAttribute("class"):r?e.setAttribute("class",t):e.className=t}const dy=Symbol("_vod"),Kn={beforeMount(e,{value:t},{transition:r}){e[dy]=e.style.display==="none"?"":e.style.display,r&&t?r.beforeEnter(e):Zs(e,t)},mounted(e,{value:t},{transition:r}){r&&t&&r.enter(e)},updated(e,{value:t,oldValue:r},{transition:n}){!t!=!r&&(n?t?(n.beforeEnter(e),Zs(e,!0),n.enter(e)):n.leave(e,()=>{Zs(e,!1)}):Zs(e,t))},beforeUnmount(e,{value:t}){Zs(e,t)}};function Zs(e,t){e.style.display=t?e[dy]:"none"}const RO=Symbol("");function kO(e,t,r){const n=e.style,i=n.display,a=ze(r);if(r&&!a){if(t&&!ze(t))for(const o in t)r[o]==null&&qp(n,o,"");for(const o in r)qp(n,o,r[o])}else if(a){if(t!==r){const o=n[RO];o&&(r+=";"+o),n.cssText=r}}else t&&e.removeAttribute("style");dy in e&&(n.display=i)}const z_=/\s*!important$/;function qp(e,t,r){if(_e(r))r.forEach(n=>qp(e,t,n));else if(r==null&&(r=""),t.startsWith("--"))e.setProperty(t,r);else{const n=NO(e,t);z_.test(r)?e.setProperty(xo(n),r.replace(z_,""),"important"):e[n]=r}}const V_=["Webkit","Moz","ms"],Xh={};function NO(e,t){const r=Xh[t];if(r)return r;let n=Pn(t);if(n!=="filter"&&n in e)return Xh[t]=n;n=Yd(n);for(let i=0;iZh||(VO.then(()=>Zh=0),Zh=Date.now());function GO(e,t){const r=n=>{if(!n._vts)n._vts=Date.now();else if(n._vts<=r.attached)return;sn(UO(n,r.value),t,5,[n])};return r.value=e,r.attached=WO(),r}function UO(e,t){if(_e(t)){const r=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{r.call(e),e._stopped=!0},t.map(n=>i=>!i._stopped&&n&&n(i))}else return t}const Y_=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,YO=(e,t,r,n,i,a,o,s,l)=>{const u=i==="svg";t==="class"?OO(e,n,u):t==="style"?kO(e,r,n):Wd(t)?Gm(t)||HO(e,t,r,n,o):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):jO(e,t,n,u))?FO(e,t,n,a,o,s,l):(t==="true-value"?e._trueValue=n:t==="false-value"&&(e._falseValue=n),BO(e,t,n,u))};function jO(e,t,r,n){if(n)return!!(t==="innerHTML"||t==="textContent"||t in e&&Y_(t)&&De(r));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const i=e.tagName;if(i==="IMG"||i==="VIDEO"||i==="CANVAS"||i==="SOURCE")return!1}return Y_(t)&&ze(r)?!1:t in e}const FT=new WeakMap,$T=new WeakMap,od=Symbol("_moveCb"),j_=Symbol("_enterCb"),HT={name:"TransitionGroup",props:Ht({},LO,{tag:String,moveClass:String}),setup(e,{slots:t}){const r=it(),n=dT();let i,a;return Uu(()=>{if(!i.length)return;const o=e.moveClass||`${e.name||"v"}-move`;if(!JO(i[0].el,r.vnode.el,o))return;i.forEach(XO),i.forEach(ZO);const s=i.filter(QO);NT(),s.forEach(l=>{const u=l.el,f=u.style;ci(u,o),f.transform=f.webkitTransform=f.transitionDuration="";const c=u[od]=h=>{h&&h.target!==u||(!h||/transform$/.test(h.propertyName))&&(u.removeEventListener("transitionend",c),u[od]=null,zi(u,o))};u.addEventListener("transitionend",c)})}),()=>{const o=Qe(e),s=RT(o);let l=o.tag||ft;i=a,a=t.default?sy(t.default()):[];for(let u=0;udelete e.mode;HT.props;const KO=HT;function XO(e){const t=e.el;t[od]&&t[od](),t[j_]&&t[j_]()}function ZO(e){$T.set(e,e.el.getBoundingClientRect())}function QO(e){const t=FT.get(e),r=$T.get(e),n=t.left-r.left,i=t.top-r.top;if(n||i){const a=e.el.style;return a.transform=a.webkitTransform=`translate(${n}px,${i}px)`,a.transitionDuration="0s",e}}function JO(e,t,r){const n=e.cloneNode(),i=e[gs];i&&i.forEach(s=>{s.split(/\s+/).forEach(l=>l&&n.classList.remove(l))}),r.split(/\s+/).forEach(s=>s&&n.classList.add(s)),n.style.display="none";const a=t.nodeType===1?t:t.parentNode;a.appendChild(n);const{hasTransform:o}=kT(n);return a.removeChild(n),o}const q_=e=>{const t=e.props["onUpdate:modelValue"]||!1;return _e(t)?r=>Cc(t,r):t},Qh=Symbol("_assign"),sd={deep:!0,created(e,t,r){e[Qh]=q_(r),BT(e,"change",()=>{const n=e._modelValue,i=eR(e),a=e.checked,o=e[Qh];if(_e(n)){const s=OC(n,i),l=s!==-1;if(a&&!l)o(n.concat(i));else if(!a&&l){const u=[...n];u.splice(s,1),o(u)}}else if(Gd(n)){const s=new Set(n);a?s.add(i):s.delete(i),o(s)}else o(zT(e,a))})},mounted:K_,beforeUpdate(e,t,r){e[Qh]=q_(r),K_(e,t,r)}};function K_(e,{value:t,oldValue:r},n){e._modelValue=t,_e(t)?e.checked=OC(t,n.props.value)>-1:Gd(t)?e.checked=t.has(n.props.value):t!==r&&(e.checked=jd(t,zT(e,!0)))}function eR(e){return"_value"in e?e._value:e.value}function zT(e,t){const r=t?"_trueValue":"_falseValue";return r in e?e[r]:t}const tR=["ctrl","shift","alt","meta"],rR={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>tR.some(r=>e[`${r}Key`]&&!t.includes(r))},ua=(e,t)=>{const r=e._withMods||(e._withMods={}),n=t.join(".");return r[n]||(r[n]=(i,...a)=>{for(let o=0;o{const r=e._withKeys||(e._withKeys={}),n=t.join(".");return r[n]||(r[n]=i=>{if(!("key"in i))return;const a=xo(i.key);if(t.some(o=>o===a||nR[o]===a))return e(i)})},aR=Ht({patchProp:YO},EO);let X_;function VT(){return X_||(X_=sO(aR))}const ld=(...e)=>{VT().render(...e)},oR=(...e)=>{const t=VT().createApp(...e),{mount:r}=t;return t.mount=n=>{const i=lR(n);if(!i)return;const a=t._component;!De(a)&&!a.render&&!a.template&&(a.template=i.innerHTML),i.innerHTML="";const o=r(i,!1,sR(i));return i instanceof Element&&(i.removeAttribute("v-cloak"),i.setAttribute("data-v-app","")),o},t};function sR(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function lR(e){return ze(e)?document.querySelector(e):e}const Ac=function(e,t,...r){let n;t.includes("mouse")||t.includes("click")?n="MouseEvents":t.includes("key")?n="KeyboardEvent":n="HTMLEvents";const i=document.createEvent(n);return i.initEvent(t,...r),e.dispatchEvent(i),e},di=(e,t,{checkForDefaultPrevented:r=!0}={})=>i=>{const a=e==null?void 0:e(i);if(r===!1||!a)return t==null?void 0:t(i)};var Z_;const At=typeof window<"u",uR=e=>typeof e=="function",fR=e=>typeof e=="string",Kp=()=>{};At&&((Z_=window==null?void 0:window.navigator)!=null&&Z_.userAgent)&&/iP(ad|hone|od)/.test(window.navigator.userAgent);function po(e){return typeof e=="function"?e():T(e)}function WT(e,t){function r(...n){return new Promise((i,a)=>{Promise.resolve(e(()=>t.apply(this,n),{fn:t,thisArg:this,args:n})).then(i).catch(a)})}return r}const GT=e=>e();function cR(e,t={}){let r,n,i=Kp;const a=s=>{clearTimeout(s),i(),i=Kp};return s=>{const l=po(e),u=po(t.maxWait);return r&&a(r),l<=0||u!==void 0&&u<=0?(n&&(a(n),n=null),Promise.resolve(s())):new Promise((f,c)=>{i=t.rejectOnCancel?c:f,u&&!n&&(n=setTimeout(()=>{r&&a(r),n=null,f(s())},u)),r=setTimeout(()=>{n&&a(n),n=null,f(s())},l)})}}function dR(e=GT){const t=$(!0);function r(){t.value=!1}function n(){t.value=!0}const i=(...a)=>{t.value&&e(...a)};return{isActive:Gu(t),pause:r,resume:n,eventFilter:i}}function hR(e){return e}function ju(e){return kC()?(NC(e),!0):!1}function vR(e,t=200,r={}){return WT(cR(t,r),e)}function pR(e,t=200,r={}){const n=$(e.value),i=vR(()=>{n.value=e.value},t,r);return be(e,()=>i()),n}function gR(e){return typeof e=="function"?k(e):$(e)}function UT(e,t=!0){it()?_t(e):t?e():Nt(e)}function hu(e,t,r={}){const{immediate:n=!0}=r,i=$(!1);let a=null;function o(){a&&(clearTimeout(a),a=null)}function s(){i.value=!1,o()}function l(...u){o(),i.value=!0,a=setTimeout(()=>{i.value=!1,a=null,e(...u)},po(t))}return n&&(i.value=!0,At&&l()),ju(s),{isPending:Gu(i),start:l,stop:s}}function mR(e=!1,t={}){const{truthyValue:r=!0,falsyValue:n=!1}=t,i=Pt(e),a=$(e);function o(s){if(arguments.length)return a.value=s,a.value;{const l=po(r);return a.value=a.value===l?po(n):l,a.value}}return i?o:[a,o]}var Q_=Object.getOwnPropertySymbols,yR=Object.prototype.hasOwnProperty,_R=Object.prototype.propertyIsEnumerable,bR=(e,t)=>{var r={};for(var n in e)yR.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&Q_)for(var n of Q_(e))t.indexOf(n)<0&&_R.call(e,n)&&(r[n]=e[n]);return r};function wR(e,t,r={}){const n=r,{eventFilter:i=GT}=n,a=bR(n,["eventFilter"]);return be(e,WT(i,t),a)}var SR=Object.defineProperty,xR=Object.defineProperties,CR=Object.getOwnPropertyDescriptors,ud=Object.getOwnPropertySymbols,YT=Object.prototype.hasOwnProperty,jT=Object.prototype.propertyIsEnumerable,J_=(e,t,r)=>t in e?SR(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,TR=(e,t)=>{for(var r in t||(t={}))YT.call(t,r)&&J_(e,r,t[r]);if(ud)for(var r of ud(t))jT.call(t,r)&&J_(e,r,t[r]);return e},MR=(e,t)=>xR(e,CR(t)),AR=(e,t)=>{var r={};for(var n in e)YT.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&ud)for(var n of ud(e))t.indexOf(n)<0&&jT.call(e,n)&&(r[n]=e[n]);return r};function PR(e,t,r={}){const n=r,{eventFilter:i}=n,a=AR(n,["eventFilter"]),{eventFilter:o,pause:s,resume:l,isActive:u}=dR(i);return{stop:wR(e,t,MR(TR({},a),{eventFilter:o})),pause:s,resume:l,isActive:u}}function Zi(e){var t;const r=po(e);return(t=r==null?void 0:r.$el)!=null?t:r}const fa=At?window:void 0;function xn(...e){let t,r,n,i;if(fR(e[0])||Array.isArray(e[0])?([r,n,i]=e,t=fa):[t,r,n,i]=e,!t)return Kp;Array.isArray(r)||(r=[r]),Array.isArray(n)||(n=[n]);const a=[],o=()=>{a.forEach(f=>f()),a.length=0},s=(f,c,h)=>(f.addEventListener(c,h,i),()=>f.removeEventListener(c,h,i)),l=be(()=>Zi(t),f=>{o(),f&&a.push(...r.flatMap(c=>n.map(h=>s(f,c,h))))},{immediate:!0,flush:"post"}),u=()=>{l(),o()};return ju(u),u}function ER(e,t,r={}){const{window:n=fa,ignore:i=[],capture:a=!0,detectIframe:o=!1}=r;if(!n)return;let s=!0,l;const u=d=>i.some(v=>{if(typeof v=="string")return Array.from(n.document.querySelectorAll(v)).some(p=>p===d.target||d.composedPath().includes(p));{const p=Zi(v);return p&&(d.target===p||d.composedPath().includes(p))}}),f=d=>{n.clearTimeout(l);const v=Zi(e);if(!(!v||v===d.target||d.composedPath().includes(v))){if(d.detail===0&&(s=!u(d)),!s){s=!0;return}t(d)}},c=[xn(n,"click",f,{passive:!0,capture:a}),xn(n,"pointerdown",d=>{const v=Zi(e);v&&(s=!d.composedPath().includes(v)&&!u(d))},{passive:!0}),xn(n,"pointerup",d=>{if(d.button===0){const v=d.composedPath();d.composedPath=()=>v,l=n.setTimeout(()=>f(d),50)}},{passive:!0}),o&&xn(n,"blur",d=>{var v;const p=Zi(e);((v=n.document.activeElement)==null?void 0:v.tagName)==="IFRAME"&&!(p!=null&&p.contains(n.document.activeElement))&&t(d)})].filter(Boolean);return()=>c.forEach(d=>d())}function qT(e,t=!1){const r=$(),n=()=>r.value=!!e();return n(),UT(n,t),r}function LR(e,t={}){const{window:r=fa}=t,n=qT(()=>r&&"matchMedia"in r&&typeof r.matchMedia=="function");let i;const a=$(!1),o=()=>{i&&("removeEventListener"in i?i.removeEventListener("change",s):i.removeListener(s))},s=()=>{n.value&&(o(),i=r.matchMedia(gR(e).value),a.value=i.matches,"addEventListener"in i?i.addEventListener("change",s):i.addListener(s))};return na(s),ju(()=>o()),a}const Xp=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},Zp="__vueuse_ssr_handlers__";Xp[Zp]=Xp[Zp]||{};const DR=Xp[Zp];function KT(e,t){return DR[e]||t}function IR(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}var OR=Object.defineProperty,eb=Object.getOwnPropertySymbols,RR=Object.prototype.hasOwnProperty,kR=Object.prototype.propertyIsEnumerable,tb=(e,t,r)=>t in e?OR(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,rb=(e,t)=>{for(var r in t||(t={}))RR.call(t,r)&&tb(e,r,t[r]);if(eb)for(var r of eb(t))kR.call(t,r)&&tb(e,r,t[r]);return e};const NR={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}};function BR(e,t,r,n={}){var i;const{flush:a="pre",deep:o=!0,listenToStorageChanges:s=!0,writeDefaults:l=!0,mergeDefaults:u=!1,shallow:f,window:c=fa,eventFilter:h,onError:d=S=>{console.error(S)}}=n,v=(f?ty:$)(t);if(!r)try{r=KT("getDefaultStorage",()=>{var S;return(S=fa)==null?void 0:S.localStorage})()}catch(S){d(S)}if(!r)return v;const p=po(t),m=IR(p),g=(i=n.serializer)!=null?i:NR[m],{pause:y,resume:_}=PR(v,()=>b(v.value),{flush:a,deep:o,eventFilter:h});return c&&s&&xn(c,"storage",w),w(),v;function b(S){try{if(S==null)r.removeItem(e);else{const C=g.write(S),M=r.getItem(e);M!==C&&(r.setItem(e,C),c&&(c==null||c.dispatchEvent(new StorageEvent("storage",{key:e,oldValue:M,newValue:C,storageArea:r}))))}}catch(C){d(C)}}function x(S){const C=S?S.newValue:r.getItem(e);if(C==null)return l&&p!==null&&r.setItem(e,g.write(p)),p;if(!S&&u){const M=g.read(C);return uR(u)?u(M,p):m==="object"&&!Array.isArray(M)?rb(rb({},p),M):M}else return typeof C!="string"?C:g.read(C)}function w(S){if(!(S&&S.storageArea!==r)){if(S&&S.key==null){v.value=p;return}if(!(S&&S.key!==e)){y();try{v.value=x(S)}catch(C){d(C)}finally{S?Nt(_):_()}}}}}function XT(e){return LR("(prefers-color-scheme: dark)",e)}var FR=Object.defineProperty,nb=Object.getOwnPropertySymbols,$R=Object.prototype.hasOwnProperty,HR=Object.prototype.propertyIsEnumerable,ib=(e,t,r)=>t in e?FR(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,zR=(e,t)=>{for(var r in t||(t={}))$R.call(t,r)&&ib(e,r,t[r]);if(nb)for(var r of nb(t))HR.call(t,r)&&ib(e,r,t[r]);return e};function VR(e={}){const{selector:t="html",attribute:r="class",initialValue:n="auto",window:i=fa,storage:a,storageKey:o="vueuse-color-scheme",listenToStorageChanges:s=!0,storageRef:l,emitAuto:u}=e,f=zR({auto:"",light:"light",dark:"dark"},e.modes||{}),c=XT({window:i}),h=k(()=>c.value?"dark":"light"),d=l||(o==null?$(n):BR(o,n,a,{window:i,listenToStorageChanges:s})),v=k({get(){return d.value==="auto"&&!u?h.value:d.value},set(y){d.value=y}}),p=KT("updateHTMLAttrs",(y,_,b)=>{const x=i==null?void 0:i.document.querySelector(y);if(x)if(_==="class"){const w=b.split(/\s/g);Object.values(f).flatMap(S=>(S||"").split(/\s/g)).filter(Boolean).forEach(S=>{w.includes(S)?x.classList.add(S):x.classList.remove(S)})}else x.setAttribute(_,b)});function m(y){var _;const b=y==="auto"?h.value:y;p(t,r,(_=f[b])!=null?_:b)}function g(y){e.onChanged?e.onChanged(y,m):m(y)}return be(v,g,{flush:"post",immediate:!0}),u&&be(h,()=>g(v.value),{flush:"post"}),UT(()=>g(v.value)),v}var WR=Object.defineProperty,GR=Object.defineProperties,UR=Object.getOwnPropertyDescriptors,ab=Object.getOwnPropertySymbols,YR=Object.prototype.hasOwnProperty,jR=Object.prototype.propertyIsEnumerable,ob=(e,t,r)=>t in e?WR(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,qR=(e,t)=>{for(var r in t||(t={}))YR.call(t,r)&&ob(e,r,t[r]);if(ab)for(var r of ab(t))jR.call(t,r)&&ob(e,r,t[r]);return e},KR=(e,t)=>GR(e,UR(t));function XR(e={}){const{valueDark:t="dark",valueLight:r="",window:n=fa}=e,i=VR(KR(qR({},e),{onChanged:(s,l)=>{var u;e.onChanged?(u=e.onChanged)==null||u.call(e,s==="dark"):l(s)},modes:{dark:t,light:r}})),a=XT({window:n});return k({get(){return i.value==="dark"},set(s){s===a.value?i.value="auto":i.value=s?"dark":"light"}})}var sb=Object.getOwnPropertySymbols,ZR=Object.prototype.hasOwnProperty,QR=Object.prototype.propertyIsEnumerable,JR=(e,t)=>{var r={};for(var n in e)ZR.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&sb)for(var n of sb(e))t.indexOf(n)<0&&QR.call(e,n)&&(r[n]=e[n]);return r};function ms(e,t,r={}){const n=r,{window:i=fa}=n,a=JR(n,["window"]);let o;const s=qT(()=>i&&"ResizeObserver"in i),l=()=>{o&&(o.disconnect(),o=void 0)},u=be(()=>Zi(e),c=>{l(),s.value&&i&&c&&(o=new ResizeObserver(t),o.observe(c,a))},{immediate:!0,flush:"post"}),f=()=>{l(),u()};return ju(f),{isSupported:s,stop:f}}var lb;(function(e){e.UP="UP",e.RIGHT="RIGHT",e.DOWN="DOWN",e.LEFT="LEFT",e.NONE="NONE"})(lb||(lb={}));var ek=Object.defineProperty,ub=Object.getOwnPropertySymbols,tk=Object.prototype.hasOwnProperty,rk=Object.prototype.propertyIsEnumerable,fb=(e,t,r)=>t in e?ek(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,nk=(e,t)=>{for(var r in t||(t={}))tk.call(t,r)&&fb(e,r,t[r]);if(ub)for(var r of ub(t))rk.call(t,r)&&fb(e,r,t[r]);return e};const ik={easeInSine:[.12,0,.39,0],easeOutSine:[.61,1,.88,1],easeInOutSine:[.37,0,.63,1],easeInQuad:[.11,0,.5,0],easeOutQuad:[.5,1,.89,1],easeInOutQuad:[.45,0,.55,1],easeInCubic:[.32,0,.67,0],easeOutCubic:[.33,1,.68,1],easeInOutCubic:[.65,0,.35,1],easeInQuart:[.5,0,.75,0],easeOutQuart:[.25,1,.5,1],easeInOutQuart:[.76,0,.24,1],easeInQuint:[.64,0,.78,0],easeOutQuint:[.22,1,.36,1],easeInOutQuint:[.83,0,.17,1],easeInExpo:[.7,0,.84,0],easeOutExpo:[.16,1,.3,1],easeInOutExpo:[.87,0,.13,1],easeInCirc:[.55,0,1,.45],easeOutCirc:[0,.55,.45,1],easeInOutCirc:[.85,0,.15,1],easeInBack:[.36,0,.66,-.56],easeOutBack:[.34,1.56,.64,1],easeInOutBack:[.68,-.6,.32,1.6]};nk({linear:hR},ik);var ZT=typeof global=="object"&&global&&global.Object===Object&&global,ak=typeof self=="object"&&self&&self.Object===Object&&self,Dn=ZT||ak||Function("return this")(),fn=Dn.Symbol,QT=Object.prototype,ok=QT.hasOwnProperty,sk=QT.toString,Qs=fn?fn.toStringTag:void 0;function lk(e){var t=ok.call(e,Qs),r=e[Qs];try{e[Qs]=void 0;var n=!0}catch{}var i=sk.call(e);return n&&(t?e[Qs]=r:delete e[Qs]),i}var uk=Object.prototype,fk=uk.toString;function ck(e){return fk.call(e)}var dk="[object Null]",hk="[object Undefined]",cb=fn?fn.toStringTag:void 0;function Mo(e){return e==null?e===void 0?hk:dk:cb&&cb in Object(e)?lk(e):ck(e)}function Xn(e){return e!=null&&typeof e=="object"}var vk="[object Symbol]";function ih(e){return typeof e=="symbol"||Xn(e)&&Mo(e)==vk}function JT(e,t){for(var r=-1,n=e==null?0:e.length,i=Array(n);++r0){if(++t>=Vk)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}function Yk(e){return function(){return e}}var fd=function(){try{var e=Po(Object,"defineProperty");return e({},"",{}),e}catch{}}(),jk=fd?function(e,t){return fd(e,"toString",{configurable:!0,enumerable:!1,value:Yk(t),writable:!0})}:hy;const qk=jk;var rM=Uk(qk);function Kk(e,t){for(var r=-1,n=e==null?0:e.length;++r-1&&e%1==0&&e-1&&e%1==0&&e<=tN}function Fs(e){return e!=null&&my(e.length)&&!vy(e)}function rN(e,t,r){if(!Dr(r))return!1;var n=typeof t;return(n=="number"?Fs(r)&&ah(t,r.length):n=="string"&&t in r)?qu(r[t],e):!1}function nN(e){return eN(function(t,r){var n=-1,i=r.length,a=i>1?r[i-1]:void 0,o=i>2?r[2]:void 0;for(a=e.length>3&&typeof a=="function"?(i--,a):void 0,o&&rN(r[0],r[1],o)&&(a=i<3?void 0:a,i=1),t=Object(t);++n-1}function hB(e,t){var r=this.__data__,n=oh(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this}function Pi(e){var t=-1,r=e==null?0:e.length;for(this.clear();++t0&&r(s)?t>1?Ty(s,t-1,r,n,i):Cy(i,s):n||(i[i.length]=s)}return i}function EB(e){var t=e==null?0:e.length;return t?Ty(e,1):[]}function LB(e){return rM(nM(e,void 0,EB),e+"")}var DB=lM(Object.getPrototypeOf,Object);const My=DB;var IB="[object Object]",OB=Function.prototype,RB=Object.prototype,uM=OB.toString,kB=RB.hasOwnProperty,NB=uM.call(Object);function BB(e){if(!Xn(e)||Mo(e)!=IB)return!1;var t=My(e);if(t===null)return!0;var r=kB.call(t,"constructor")&&t.constructor;return typeof r=="function"&&r instanceof r&&uM.call(r)==NB}function Jp(){if(!arguments.length)return[];var e=arguments[0];return gr(e)?e:[e]}function FB(){this.__data__=new Pi,this.size=0}function $B(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}function HB(e){return this.__data__.get(e)}function zB(e){return this.__data__.has(e)}var VB=200;function WB(e,t){var r=this.__data__;if(r instanceof Pi){var n=r.__data__;if(!mu||n.lengths))return!1;var u=a.get(e),f=a.get(t);if(u&&f)return u==t&&f==e;var c=-1,h=!0,d=r&y$?new dd:void 0;for(a.set(e,t),a.set(t,e);++c=t||S<0||c&&C>=a}function g(){var w=rv();if(m(w))return y(w);s=setTimeout(g,p(w))}function y(w){return s=void 0,h&&n?d(w):(n=i=void 0,o)}function _(){s!==void 0&&clearTimeout(s),u=0,n=l=i=s=void 0}function b(){return s===void 0?o:y(rv())}function x(){var w=rv(),S=m(w);if(n=arguments,i=this,l=w,S){if(s===void 0)return v(l);if(c)return clearTimeout(s),s=setTimeout(g,t),d(l)}return s===void 0&&(s=setTimeout(g,t)),o}return x.cancel=_,x.flush=b,x}function ig(e,t,r){(r!==void 0&&!qu(e[t],r)||r===void 0&&!(t in e))&&py(e,t,r)}function u3(e){return Xn(e)&&Fs(e)}function ag(e,t){if(!(t==="constructor"&&typeof e[t]=="function")&&t!="__proto__")return e[t]}function f3(e){return Ku(e,Zu(e))}function c3(e,t,r,n,i,a,o){var s=ag(e,r),l=ag(t,r),u=o.get(l);if(u){ig(e,r,u);return}var f=a?a(s,l,r+"",e,t,o):void 0,c=f===void 0;if(c){var h=gr(l),d=!h&&pu(l),v=!h&&!d&&by(l);f=l,h||d||v?gr(s)?f=s:u3(s)?f=tM(s):d?(c=!1,f=cM(l,!0)):v?(c=!1,f=pM(l,!0)):f=[]:BB(l)||vu(l)?(f=s,vu(s)?f=f3(s):(!Dr(s)||vy(s))&&(f=gM(l))):c=!1}c&&(o.set(l,f),i(f,l,n,a,o),o.delete(l)),ig(e,r,f)}function TM(e,t,r,n,i){e!==t&&CM(t,function(a,o){if(i||(i=new An),Dr(a))c3(e,t,o,r,TM,n,i);else{var s=n?n(ag(e,o),a,o+"",e,t,i):void 0;s===void 0&&(s=a),ig(e,o,s)}},Zu)}function d3(e,t){var r=-1,n=Fs(e)?Array(e.length):[];return a3(e,function(i,a,o){n[++r]=t(i,a,o)}),n}function h3(e,t){var r=gr(e)?JT:d3;return r(e,t3(t))}function v3(e,t){return Ty(h3(e,t),1)}function og(e){for(var t=-1,r=e==null?0:e.length,n={};++te===void 0,zr=e=>typeof e=="boolean",kt=e=>typeof e=="number",mo=e=>typeof Element>"u"?!1:e instanceof Element,S3=e=>ze(e)?!Number.isNaN(Number(e)):!1,Vb=e=>Object.keys(e),Ec=(e,t,r)=>({get value(){return yu(e,t,r)},set value(n){w3(e,t,n)}});class x3 extends Error{constructor(t){super(t),this.name="ElementPlusError"}}function bi(e,t){throw new x3(`[${e}] ${t}`)}const PM=(e="")=>e.split(" ").filter(t=>!!t.trim()),oo=(e,t)=>{if(!e||!t)return!1;if(t.includes(" "))throw new Error("className should not contain space.");return e.classList.contains(t)},Za=(e,t)=>{!e||!t.trim()||e.classList.add(...PM(t))},so=(e,t)=>{!e||!t.trim()||e.classList.remove(...PM(t))},C3=(e,t)=>{var r;if(!At||!e||!t)return"";let n=Pn(t);n==="float"&&(n="cssFloat");try{const i=e.style[n];if(i)return i;const a=(r=document.defaultView)==null?void 0:r.getComputedStyle(e,"");return a?a[n]:""}catch{return e.style[n]}};function Zn(e,t="px"){if(!e)return"";if(kt(e)||S3(e))return`${e}${t}`;if(ze(e))return e}let xf;const T3=e=>{var t;if(!At)return 0;if(xf!==void 0)return xf;const r=document.createElement("div");r.className=`${e}-scrollbar__wrap`,r.style.visibility="hidden",r.style.width="100px",r.style.position="absolute",r.style.top="-9999px",document.body.appendChild(r);const n=r.offsetWidth;r.style.overflow="scroll";const i=document.createElement("div");i.style.width="100%",r.appendChild(i);const a=i.offsetWidth;return(t=r.parentNode)==null||t.removeChild(r),xf=n-a,xf};/*! Element Plus Icons Vue v2.3.1 */var M3=ie({name:"ArrowDown",__name:"arrow-down",setup(e){return(t,r)=>(G(),ce("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[te("path",{fill:"currentColor",d:"M831.872 340.864 512 652.672 192.128 340.864a30.592 30.592 0 0 0-42.752 0 29.12 29.12 0 0 0 0 41.6L489.664 714.24a32 32 0 0 0 44.672 0l340.288-331.712a29.12 29.12 0 0 0 0-41.728 30.592 30.592 0 0 0-42.752 0z"})]))}}),EM=M3,A3=ie({name:"ArrowRight",__name:"arrow-right",setup(e){return(t,r)=>(G(),ce("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[te("path",{fill:"currentColor",d:"M340.864 149.312a30.592 30.592 0 0 0 0 42.752L652.736 512 340.864 831.872a30.592 30.592 0 0 0 0 42.752 29.12 29.12 0 0 0 41.728 0L714.24 534.336a32 32 0 0 0 0-44.672L382.592 149.376a29.12 29.12 0 0 0-41.728 0z"})]))}}),Ey=A3,P3=ie({name:"ArrowUp",__name:"arrow-up",setup(e){return(t,r)=>(G(),ce("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[te("path",{fill:"currentColor",d:"m488.832 344.32-339.84 356.672a32 32 0 0 0 0 44.16l.384.384a29.44 29.44 0 0 0 42.688 0l320-335.872 319.872 335.872a29.44 29.44 0 0 0 42.688 0l.384-.384a32 32 0 0 0 0-44.16L535.168 344.32a32 32 0 0 0-46.336 0"})]))}}),E3=P3,L3=ie({name:"Back",__name:"back",setup(e){return(t,r)=>(G(),ce("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[te("path",{fill:"currentColor",d:"M224 480h640a32 32 0 1 1 0 64H224a32 32 0 0 1 0-64"}),te("path",{fill:"currentColor",d:"m237.248 512 265.408 265.344a32 32 0 0 1-45.312 45.312l-288-288a32 32 0 0 1 0-45.312l288-288a32 32 0 1 1 45.312 45.312z"})]))}}),D3=L3,I3=ie({name:"CircleCloseFilled",__name:"circle-close-filled",setup(e){return(t,r)=>(G(),ce("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[te("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m0 393.664L407.936 353.6a38.4 38.4 0 1 0-54.336 54.336L457.664 512 353.6 616.064a38.4 38.4 0 1 0 54.336 54.336L512 566.336 616.064 670.4a38.4 38.4 0 1 0 54.336-54.336L566.336 512 670.4 407.936a38.4 38.4 0 1 0-54.336-54.336z"})]))}}),LM=I3,O3=ie({name:"Close",__name:"close",setup(e){return(t,r)=>(G(),ce("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[te("path",{fill:"currentColor",d:"M764.288 214.592 512 466.88 259.712 214.592a31.936 31.936 0 0 0-45.12 45.12L466.752 512 214.528 764.224a31.936 31.936 0 1 0 45.12 45.184L512 557.184l252.288 252.288a31.936 31.936 0 0 0 45.12-45.12L557.12 512.064l252.288-252.352a31.936 31.936 0 1 0-45.12-45.184z"})]))}}),vd=O3,R3=ie({name:"InfoFilled",__name:"info-filled",setup(e){return(t,r)=>(G(),ce("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[te("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896.064A448 448 0 0 1 512 64m67.2 275.072c33.28 0 60.288-23.104 60.288-57.344s-27.072-57.344-60.288-57.344c-33.28 0-60.16 23.104-60.16 57.344s26.88 57.344 60.16 57.344M590.912 699.2c0-6.848 2.368-24.64 1.024-34.752l-52.608 60.544c-10.88 11.456-24.512 19.392-30.912 17.28a12.992 12.992 0 0 1-8.256-14.72l87.68-276.992c7.168-35.136-12.544-67.2-54.336-71.296-44.096 0-108.992 44.736-148.48 101.504 0 6.784-1.28 23.68.064 33.792l52.544-60.608c10.88-11.328 23.552-19.328 29.952-17.152a12.8 12.8 0 0 1 7.808 16.128L388.48 728.576c-10.048 32.256 8.96 63.872 55.04 71.04 67.84 0 107.904-43.648 147.456-100.416z"})]))}}),DM=R3,k3=ie({name:"Loading",__name:"loading",setup(e){return(t,r)=>(G(),ce("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[te("path",{fill:"currentColor",d:"M512 64a32 32 0 0 1 32 32v192a32 32 0 0 1-64 0V96a32 32 0 0 1 32-32m0 640a32 32 0 0 1 32 32v192a32 32 0 1 1-64 0V736a32 32 0 0 1 32-32m448-192a32 32 0 0 1-32 32H736a32 32 0 1 1 0-64h192a32 32 0 0 1 32 32m-640 0a32 32 0 0 1-32 32H96a32 32 0 0 1 0-64h192a32 32 0 0 1 32 32M195.2 195.2a32 32 0 0 1 45.248 0L376.32 331.008a32 32 0 0 1-45.248 45.248L195.2 240.448a32 32 0 0 1 0-45.248zm452.544 452.544a32 32 0 0 1 45.248 0L828.8 783.552a32 32 0 0 1-45.248 45.248L647.744 692.992a32 32 0 0 1 0-45.248zM828.8 195.264a32 32 0 0 1 0 45.184L692.992 376.32a32 32 0 0 1-45.248-45.248l135.808-135.808a32 32 0 0 1 45.248 0m-452.544 452.48a32 32 0 0 1 0 45.248L240.448 828.8a32 32 0 0 1-45.248-45.248l135.808-135.808a32 32 0 0 1 45.248 0z"})]))}}),Ly=k3,N3=ie({name:"More",__name:"more",setup(e){return(t,r)=>(G(),ce("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[te("path",{fill:"currentColor",d:"M176 416a112 112 0 1 0 0 224 112 112 0 0 0 0-224m0 64a48 48 0 1 1 0 96 48 48 0 0 1 0-96m336-64a112 112 0 1 1 0 224 112 112 0 0 1 0-224m0 64a48 48 0 1 0 0 96 48 48 0 0 0 0-96m336-64a112 112 0 1 1 0 224 112 112 0 0 1 0-224m0 64a48 48 0 1 0 0 96 48 48 0 0 0 0-96"})]))}}),B3=N3,F3=ie({name:"QuestionFilled",__name:"question-filled",setup(e){return(t,r)=>(G(),ce("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[te("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m23.744 191.488c-52.096 0-92.928 14.784-123.2 44.352-30.976 29.568-45.76 70.4-45.76 122.496h80.256c0-29.568 5.632-52.8 17.6-68.992 13.376-19.712 35.2-28.864 66.176-28.864 23.936 0 42.944 6.336 56.32 19.712 12.672 13.376 19.712 31.68 19.712 54.912 0 17.6-6.336 34.496-19.008 49.984l-8.448 9.856c-45.76 40.832-73.216 70.4-82.368 89.408-9.856 19.008-14.08 42.24-14.08 68.992v9.856h80.96v-9.856c0-16.896 3.52-31.68 10.56-45.76 6.336-12.672 15.488-24.64 28.16-35.2 33.792-29.568 54.208-48.576 60.544-55.616 16.896-22.528 26.048-51.392 26.048-86.592 0-42.944-14.08-76.736-42.24-101.376-28.16-25.344-65.472-37.312-111.232-37.312zm-12.672 406.208a54.272 54.272 0 0 0-38.72 14.784 49.408 49.408 0 0 0-15.488 38.016c0 15.488 4.928 28.16 15.488 38.016A54.848 54.848 0 0 0 523.072 768c15.488 0 28.16-4.928 38.72-14.784a51.52 51.52 0 0 0 16.192-38.72 51.968 51.968 0 0 0-15.488-38.016 55.936 55.936 0 0 0-39.424-14.784z"})]))}}),$3=F3,H3=ie({name:"SuccessFilled",__name:"success-filled",setup(e){return(t,r)=>(G(),ce("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[te("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m-55.808 536.384-99.52-99.584a38.4 38.4 0 1 0-54.336 54.336l126.72 126.72a38.272 38.272 0 0 0 54.336 0l262.4-262.464a38.4 38.4 0 1 0-54.272-54.336z"})]))}}),IM=H3,z3=ie({name:"WarningFilled",__name:"warning-filled",setup(e){return(t,r)=>(G(),ce("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 1024 1024"},[te("path",{fill:"currentColor",d:"M512 64a448 448 0 1 1 0 896 448 448 0 0 1 0-896m0 192a58.432 58.432 0 0 0-58.24 63.744l23.36 256.384a35.072 35.072 0 0 0 69.76 0l23.296-256.384A58.432 58.432 0 0 0 512 256m0 512a51.2 51.2 0 1 0 0-102.4 51.2 51.2 0 0 0 0 102.4"})]))}}),OM=z3;const RM="__epPropKey",Be=e=>e,V3=e=>qe(e)&&!!e[RM],fh=(e,t)=>{if(!qe(e)||V3(e))return e;const{values:r,required:n,default:i,type:a,validator:o}=e,l={type:a,required:!!n,validator:r||o?u=>{let f=!1,c=[];if(r&&(c=Array.from(r),Ue(e,"default")&&c.push(i),f||(f=c.includes(u))),o&&(f||(f=o(u))),!f&&c.length>0){const h=[...new Set(c)].map(d=>JSON.stringify(d)).join(", ");MO(`Invalid prop: validation failed${t?` for prop "${t}"`:""}. Expected one of [${h}], got value ${JSON.stringify(u)}.`)}return f}:void 0,[RM]:!0};return Ue(e,"default")&&(l.default=i),l},Je=e=>og(Object.entries(e).map(([t,r])=>[t,fh(r,t)])),vr=Be([String,Object,Function]),W3={Close:vd},G3={Close:vd,SuccessFilled:IM,InfoFilled:DM,WarningFilled:OM,CircleCloseFilled:LM},Wb={success:IM,warning:OM,error:LM,info:DM},Yt=(e,t)=>{if(e.install=r=>{for(const n of[e,...Object.values(t??{})])r.component(n.name,n)},t)for(const[r,n]of Object.entries(t))e[r]=n;return e},U3=(e,t)=>(e.install=r=>{e._context=r._context,r.config.globalProperties[t]=e},e),pa=e=>(e.install=Ft,e),Y3=(...e)=>t=>{e.forEach(r=>{De(r)?r(t):r.value=t})},hr={tab:"Tab",enter:"Enter",space:"Space",left:"ArrowLeft",up:"ArrowUp",right:"ArrowRight",down:"ArrowDown",esc:"Escape",delete:"Delete",backspace:"Backspace",numpadEnter:"NumpadEnter",pageUp:"PageUp",pageDown:"PageDown",home:"Home",end:"End"},wi="update:modelValue",sg="change",lg="input",$s=["","default","small","large"],j3=e=>["",...$s].includes(e);var Lc=(e=>(e[e.TEXT=1]="TEXT",e[e.CLASS=2]="CLASS",e[e.STYLE=4]="STYLE",e[e.PROPS=8]="PROPS",e[e.FULL_PROPS=16]="FULL_PROPS",e[e.HYDRATE_EVENTS=32]="HYDRATE_EVENTS",e[e.STABLE_FRAGMENT=64]="STABLE_FRAGMENT",e[e.KEYED_FRAGMENT=128]="KEYED_FRAGMENT",e[e.UNKEYED_FRAGMENT=256]="UNKEYED_FRAGMENT",e[e.NEED_PATCH=512]="NEED_PATCH",e[e.DYNAMIC_SLOTS=1024]="DYNAMIC_SLOTS",e[e.HOISTED=-1]="HOISTED",e[e.BAIL=-2]="BAIL",e))(Lc||{});const Dc=e=>{const t=_e(e)?e:[e],r=[];return t.forEach(n=>{var i;_e(n)?r.push(...Dc(n)):la(n)&&_e(n.children)?r.push(...Dc(n.children)):(r.push(n),la(n)&&((i=n.component)!=null&&i.subTree)&&r.push(...Dc(n.component.subTree)))}),r},q3=e=>At?window.requestAnimationFrame(e):setTimeout(e,16),ja=e=>e,bu=({from:e,replacement:t,scope:r,version:n,ref:i,type:a="API"},o)=>{be(()=>T(o),s=>{},{immediate:!0})},K3=(e,t,r)=>{let n={offsetX:0,offsetY:0};const i=s=>{const l=s.clientX,u=s.clientY,{offsetX:f,offsetY:c}=n,h=e.value.getBoundingClientRect(),d=h.left,v=h.top,p=h.width,m=h.height,g=document.documentElement.clientWidth,y=document.documentElement.clientHeight,_=-d+f,b=-v+c,x=g-d-p+f,w=y-v-m+c,S=M=>{const A=Math.min(Math.max(f+M.clientX-l,_),x),P=Math.min(Math.max(c+M.clientY-u,b),w);n={offsetX:A,offsetY:P},e.value&&(e.value.style.transform=`translate(${Zn(A)}, ${Zn(P)})`)},C=()=>{document.removeEventListener("mousemove",S),document.removeEventListener("mouseup",C)};document.addEventListener("mousemove",S),document.addEventListener("mouseup",C)},a=()=>{t.value&&e.value&&t.value.addEventListener("mousedown",i)},o=()=>{t.value&&e.value&&t.value.removeEventListener("mousedown",i)};_t(()=>{na(()=>{r.value?a():o()})}),tr(()=>{o()})};var X3={name:"en",el:{colorpicker:{confirm:"OK",clear:"Clear",defaultLabel:"color picker",description:"current color is {color}. press enter to select a new color."},datepicker:{now:"Now",today:"Today",cancel:"Cancel",clear:"Clear",confirm:"OK",dateTablePrompt:"Use the arrow keys and enter to select the day of the month",monthTablePrompt:"Use the arrow keys and enter to select the month",yearTablePrompt:"Use the arrow keys and enter to select the year",selectedDate:"Selected date",selectDate:"Select date",selectTime:"Select time",startDate:"Start Date",startTime:"Start Time",endDate:"End Date",endTime:"End Time",prevYear:"Previous Year",nextYear:"Next Year",prevMonth:"Previous Month",nextMonth:"Next Month",year:"",month1:"January",month2:"February",month3:"March",month4:"April",month5:"May",month6:"June",month7:"July",month8:"August",month9:"September",month10:"October",month11:"November",month12:"December",week:"week",weeks:{sun:"Sun",mon:"Mon",tue:"Tue",wed:"Wed",thu:"Thu",fri:"Fri",sat:"Sat"},weeksFull:{sun:"Sunday",mon:"Monday",tue:"Tuesday",wed:"Wednesday",thu:"Thursday",fri:"Friday",sat:"Saturday"},months:{jan:"Jan",feb:"Feb",mar:"Mar",apr:"Apr",may:"May",jun:"Jun",jul:"Jul",aug:"Aug",sep:"Sep",oct:"Oct",nov:"Nov",dec:"Dec"}},inputNumber:{decrease:"decrease number",increase:"increase number"},select:{loading:"Loading",noMatch:"No matching data",noData:"No data",placeholder:"Select"},dropdown:{toggleDropdown:"Toggle Dropdown"},cascader:{noMatch:"No matching data",loading:"Loading",placeholder:"Select",noData:"No data"},pagination:{goto:"Go to",pagesize:"/page",total:"Total {total}",pageClassifier:"",page:"Page",prev:"Go to previous page",next:"Go to next page",currentPage:"page {pager}",prevPages:"Previous {pager} pages",nextPages:"Next {pager} pages",deprecationWarning:"Deprecated usages detected, please refer to the el-pagination documentation for more details"},dialog:{close:"Close this dialog"},drawer:{close:"Close this dialog"},messagebox:{title:"Message",confirm:"OK",cancel:"Cancel",error:"Illegal input",close:"Close this dialog"},upload:{deleteTip:"press delete to remove",delete:"Delete",preview:"Preview",continue:"Continue"},slider:{defaultLabel:"slider between {min} and {max}",defaultRangeStartLabel:"pick start value",defaultRangeEndLabel:"pick end value"},table:{emptyText:"No Data",confirmFilter:"Confirm",resetFilter:"Reset",clearFilter:"All",sumText:"Sum"},tour:{next:"Next",previous:"Previous",finish:"Finish"},tree:{emptyText:"No Data"},transfer:{noMatch:"No matching data",noData:"No data",titles:["List 1","List 2"],filterPlaceholder:"Enter keyword",noCheckedFormat:"{total} items",hasCheckedFormat:"{checked}/{total} checked"},image:{error:"FAILED"},pageHeader:{title:"Back"},popconfirm:{confirmButtonText:"Yes",cancelButtonText:"No"}}};const Z3=e=>(t,r)=>Q3(t,r,T(e)),Q3=(e,t,r)=>yu(r,e,e).replace(/\{(\w+)\}/g,(n,i)=>{var a;return`${(a=t==null?void 0:t[i])!=null?a:`{${i}}`}`}),J3=e=>{const t=k(()=>T(e).name),r=Pt(e)?e:$(e);return{lang:t,locale:r,t:Z3(e)}},kM=Symbol("localeContextKey"),Hs=e=>{const t=e||Le(kM,$());return J3(k(()=>t.value||X3))},Bl="el",e5="is-",ba=(e,t,r,n,i)=>{let a=`${e}-${t}`;return r&&(a+=`-${r}`),n&&(a+=`__${n}`),i&&(a+=`--${i}`),a},NM=Symbol("namespaceContextKey"),Dy=e=>{const t=e||(it()?Le(NM,$(Bl)):$(Bl));return k(()=>T(t)||Bl)},Oe=(e,t)=>{const r=Dy(t);return{namespace:r,b:(p="")=>ba(r.value,e,p,"",""),e:p=>p?ba(r.value,e,"",p,""):"",m:p=>p?ba(r.value,e,"","",p):"",be:(p,m)=>p&&m?ba(r.value,e,p,m,""):"",em:(p,m)=>p&&m?ba(r.value,e,"",p,m):"",bm:(p,m)=>p&&m?ba(r.value,e,p,"",m):"",bem:(p,m,g)=>p&&m&&g?ba(r.value,e,p,m,g):"",is:(p,...m)=>{const g=m.length>=1?m[0]:!0;return p&&g?`${e5}${p}`:""},cssVar:p=>{const m={};for(const g in p)p[g]&&(m[`--${r.value}-${g}`]=p[g]);return m},cssVarName:p=>`--${r.value}-${p}`,cssVarBlock:p=>{const m={};for(const g in p)p[g]&&(m[`--${r.value}-${e}-${g}`]=p[g]);return m},cssVarBlockName:p=>`--${r.value}-${e}-${p}`}},t5=(e,t={})=>{Pt(e)||bi("[useLockscreen]","You need to pass a ref param to this function");const r=t.ns||Oe("popup"),n=QC(()=>r.bm("parent","hidden"));if(!At||oo(document.body,n.value))return;let i=0,a=!1,o="0";const s=()=>{setTimeout(()=>{so(document==null?void 0:document.body,n.value),a&&document&&(document.body.style.width=o)},200)};be(e,l=>{if(!l){s();return}a=!oo(document.body,n.value),a&&(o=document.body.style.width),i=T3(r.namespace.value);const u=document.documentElement.clientHeight0&&(u||f==="scroll")&&a&&(document.body.style.width=`calc(100% - ${i}px)`),Za(document.body,n.value)}),NC(()=>s())},r5=fh({type:Be(Boolean),default:null}),n5=fh({type:Be(Function)}),BM=e=>{const t=`update:${e}`,r=`onUpdate:${e}`,n=[t],i={[e]:r5,[r]:n5};return{useModelToggle:({indicator:o,toggleReason:s,shouldHideWhenRouteChanges:l,shouldProceed:u,onShow:f,onHide:c})=>{const h=it(),{emit:d}=h,v=h.props,p=k(()=>De(v[r])),m=k(()=>v[e]===null),g=S=>{o.value!==!0&&(o.value=!0,s&&(s.value=S),De(f)&&f(S))},y=S=>{o.value!==!1&&(o.value=!1,s&&(s.value=S),De(c)&&c(S))},_=S=>{if(v.disabled===!0||De(u)&&!u())return;const C=p.value&&At;C&&d(t,!0),(m.value||!C)&&g(S)},b=S=>{if(v.disabled===!0||!At)return;const C=p.value&&At;C&&d(t,!1),(m.value||!C)&&y(S)},x=S=>{zr(S)&&(v.disabled&&S?p.value&&d(t,!1):o.value!==S&&(S?g():y()))},w=()=>{o.value?b():_()};return be(()=>v[e],x),l&&h.appContext.config.globalProperties.$route!==void 0&&be(()=>({...h.proxy.$route}),()=>{l.value&&o.value&&b()}),_t(()=>{x(v[e])}),{hide:b,show:_,toggle:w,hasUpdateHandler:p}},useModelToggleProps:i,useModelToggleEmits:n}};BM("modelValue");const FM=e=>{const t=it();return k(()=>{var r,n;return(n=(r=t==null?void 0:t.proxy)==null?void 0:r.$props)==null?void 0:n[e]})};var Ar="top",cn="bottom",dn="right",Pr="left",Iy="auto",Ju=[Ar,cn,dn,Pr],ws="start",wu="end",i5="clippingParents",$M="viewport",Js="popper",a5="reference",Gb=Ju.reduce(function(e,t){return e.concat([t+"-"+ws,t+"-"+wu])},[]),Oy=[].concat(Ju,[Iy]).reduce(function(e,t){return e.concat([t,t+"-"+ws,t+"-"+wu])},[]),o5="beforeRead",s5="read",l5="afterRead",u5="beforeMain",f5="main",c5="afterMain",d5="beforeWrite",h5="write",v5="afterWrite",p5=[o5,s5,l5,u5,f5,c5,d5,h5,v5];function Qn(e){return e?(e.nodeName||"").toLowerCase():null}function In(e){if(e==null)return window;if(e.toString()!=="[object Window]"){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function Ss(e){var t=In(e).Element;return e instanceof t||e instanceof Element}function ln(e){var t=In(e).HTMLElement;return e instanceof t||e instanceof HTMLElement}function Ry(e){if(typeof ShadowRoot>"u")return!1;var t=In(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot}function g5(e){var t=e.state;Object.keys(t.elements).forEach(function(r){var n=t.styles[r]||{},i=t.attributes[r]||{},a=t.elements[r];!ln(a)||!Qn(a)||(Object.assign(a.style,n),Object.keys(i).forEach(function(o){var s=i[o];s===!1?a.removeAttribute(o):a.setAttribute(o,s===!0?"":s)}))})}function m5(e){var t=e.state,r={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,r.popper),t.styles=r,t.elements.arrow&&Object.assign(t.elements.arrow.style,r.arrow),function(){Object.keys(t.elements).forEach(function(n){var i=t.elements[n],a=t.attributes[n]||{},o=Object.keys(t.styles.hasOwnProperty(n)?t.styles[n]:r[n]),s=o.reduce(function(l,u){return l[u]="",l},{});!ln(i)||!Qn(i)||(Object.assign(i.style,s),Object.keys(a).forEach(function(l){i.removeAttribute(l)}))})}}var HM={name:"applyStyles",enabled:!0,phase:"write",fn:g5,effect:m5,requires:["computeStyles"]};function jn(e){return e.split("-")[0]}var lo=Math.max,pd=Math.min,xs=Math.round;function Cs(e,t){t===void 0&&(t=!1);var r=e.getBoundingClientRect(),n=1,i=1;if(ln(e)&&t){var a=e.offsetHeight,o=e.offsetWidth;o>0&&(n=xs(r.width)/o||1),a>0&&(i=xs(r.height)/a||1)}return{width:r.width/n,height:r.height/i,top:r.top/i,right:r.right/n,bottom:r.bottom/i,left:r.left/n,x:r.left/n,y:r.top/i}}function ky(e){var t=Cs(e),r=e.offsetWidth,n=e.offsetHeight;return Math.abs(t.width-r)<=1&&(r=t.width),Math.abs(t.height-n)<=1&&(n=t.height),{x:e.offsetLeft,y:e.offsetTop,width:r,height:n}}function zM(e,t){var r=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(r&&Ry(r)){var n=t;do{if(n&&e.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function Si(e){return In(e).getComputedStyle(e)}function y5(e){return["table","td","th"].indexOf(Qn(e))>=0}function ga(e){return((Ss(e)?e.ownerDocument:e.document)||window.document).documentElement}function ch(e){return Qn(e)==="html"?e:e.assignedSlot||e.parentNode||(Ry(e)?e.host:null)||ga(e)}function Ub(e){return!ln(e)||Si(e).position==="fixed"?null:e.offsetParent}function _5(e){var t=navigator.userAgent.toLowerCase().indexOf("firefox")!==-1,r=navigator.userAgent.indexOf("Trident")!==-1;if(r&&ln(e)){var n=Si(e);if(n.position==="fixed")return null}var i=ch(e);for(Ry(i)&&(i=i.host);ln(i)&&["html","body"].indexOf(Qn(i))<0;){var a=Si(i);if(a.transform!=="none"||a.perspective!=="none"||a.contain==="paint"||["transform","perspective"].indexOf(a.willChange)!==-1||t&&a.willChange==="filter"||t&&a.filter&&a.filter!=="none")return i;i=i.parentNode}return null}function ef(e){for(var t=In(e),r=Ub(e);r&&y5(r)&&Si(r).position==="static";)r=Ub(r);return r&&(Qn(r)==="html"||Qn(r)==="body"&&Si(r).position==="static")?t:r||_5(e)||t}function Ny(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function Fl(e,t,r){return lo(e,pd(t,r))}function b5(e,t,r){var n=Fl(e,t,r);return n>r?r:n}function VM(){return{top:0,right:0,bottom:0,left:0}}function WM(e){return Object.assign({},VM(),e)}function GM(e,t){return t.reduce(function(r,n){return r[n]=e,r},{})}var w5=function(e,t){return e=typeof e=="function"?e(Object.assign({},t.rects,{placement:t.placement})):e,WM(typeof e!="number"?e:GM(e,Ju))};function S5(e){var t,r=e.state,n=e.name,i=e.options,a=r.elements.arrow,o=r.modifiersData.popperOffsets,s=jn(r.placement),l=Ny(s),u=[Pr,dn].indexOf(s)>=0,f=u?"height":"width";if(!(!a||!o)){var c=w5(i.padding,r),h=ky(a),d=l==="y"?Ar:Pr,v=l==="y"?cn:dn,p=r.rects.reference[f]+r.rects.reference[l]-o[l]-r.rects.popper[f],m=o[l]-r.rects.reference[l],g=ef(a),y=g?l==="y"?g.clientHeight||0:g.clientWidth||0:0,_=p/2-m/2,b=c[d],x=y-h[f]-c[v],w=y/2-h[f]/2+_,S=Fl(b,w,x),C=l;r.modifiersData[n]=(t={},t[C]=S,t.centerOffset=S-w,t)}}function x5(e){var t=e.state,r=e.options,n=r.element,i=n===void 0?"[data-popper-arrow]":n;i!=null&&(typeof i=="string"&&(i=t.elements.popper.querySelector(i),!i)||!zM(t.elements.popper,i)||(t.elements.arrow=i))}var C5={name:"arrow",enabled:!0,phase:"main",fn:S5,effect:x5,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Ts(e){return e.split("-")[1]}var T5={top:"auto",right:"auto",bottom:"auto",left:"auto"};function M5(e){var t=e.x,r=e.y,n=window,i=n.devicePixelRatio||1;return{x:xs(t*i)/i||0,y:xs(r*i)/i||0}}function Yb(e){var t,r=e.popper,n=e.popperRect,i=e.placement,a=e.variation,o=e.offsets,s=e.position,l=e.gpuAcceleration,u=e.adaptive,f=e.roundOffsets,c=e.isFixed,h=o.x,d=h===void 0?0:h,v=o.y,p=v===void 0?0:v,m=typeof f=="function"?f({x:d,y:p}):{x:d,y:p};d=m.x,p=m.y;var g=o.hasOwnProperty("x"),y=o.hasOwnProperty("y"),_=Pr,b=Ar,x=window;if(u){var w=ef(r),S="clientHeight",C="clientWidth";if(w===In(r)&&(w=ga(r),Si(w).position!=="static"&&s==="absolute"&&(S="scrollHeight",C="scrollWidth")),w=w,i===Ar||(i===Pr||i===dn)&&a===wu){b=cn;var M=c&&w===x&&x.visualViewport?x.visualViewport.height:w[S];p-=M-n.height,p*=l?1:-1}if(i===Pr||(i===Ar||i===cn)&&a===wu){_=dn;var A=c&&w===x&&x.visualViewport?x.visualViewport.width:w[C];d-=A-n.width,d*=l?1:-1}}var P=Object.assign({position:s},u&&T5),E=f===!0?M5({x:d,y:p}):{x:d,y:p};if(d=E.x,p=E.y,l){var L;return Object.assign({},P,(L={},L[b]=y?"0":"",L[_]=g?"0":"",L.transform=(x.devicePixelRatio||1)<=1?"translate("+d+"px, "+p+"px)":"translate3d("+d+"px, "+p+"px, 0)",L))}return Object.assign({},P,(t={},t[b]=y?p+"px":"",t[_]=g?d+"px":"",t.transform="",t))}function A5(e){var t=e.state,r=e.options,n=r.gpuAcceleration,i=n===void 0?!0:n,a=r.adaptive,o=a===void 0?!0:a,s=r.roundOffsets,l=s===void 0?!0:s,u={placement:jn(t.placement),variation:Ts(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:i,isFixed:t.options.strategy==="fixed"};t.modifiersData.popperOffsets!=null&&(t.styles.popper=Object.assign({},t.styles.popper,Yb(Object.assign({},u,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:o,roundOffsets:l})))),t.modifiersData.arrow!=null&&(t.styles.arrow=Object.assign({},t.styles.arrow,Yb(Object.assign({},u,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})}var UM={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:A5,data:{}},Cf={passive:!0};function P5(e){var t=e.state,r=e.instance,n=e.options,i=n.scroll,a=i===void 0?!0:i,o=n.resize,s=o===void 0?!0:o,l=In(t.elements.popper),u=[].concat(t.scrollParents.reference,t.scrollParents.popper);return a&&u.forEach(function(f){f.addEventListener("scroll",r.update,Cf)}),s&&l.addEventListener("resize",r.update,Cf),function(){a&&u.forEach(function(f){f.removeEventListener("scroll",r.update,Cf)}),s&&l.removeEventListener("resize",r.update,Cf)}}var YM={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:P5,data:{}},E5={left:"right",right:"left",bottom:"top",top:"bottom"};function Ic(e){return e.replace(/left|right|bottom|top/g,function(t){return E5[t]})}var L5={start:"end",end:"start"};function jb(e){return e.replace(/start|end/g,function(t){return L5[t]})}function By(e){var t=In(e),r=t.pageXOffset,n=t.pageYOffset;return{scrollLeft:r,scrollTop:n}}function Fy(e){return Cs(ga(e)).left+By(e).scrollLeft}function D5(e){var t=In(e),r=ga(e),n=t.visualViewport,i=r.clientWidth,a=r.clientHeight,o=0,s=0;return n&&(i=n.width,a=n.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(o=n.offsetLeft,s=n.offsetTop)),{width:i,height:a,x:o+Fy(e),y:s}}function I5(e){var t,r=ga(e),n=By(e),i=(t=e.ownerDocument)==null?void 0:t.body,a=lo(r.scrollWidth,r.clientWidth,i?i.scrollWidth:0,i?i.clientWidth:0),o=lo(r.scrollHeight,r.clientHeight,i?i.scrollHeight:0,i?i.clientHeight:0),s=-n.scrollLeft+Fy(e),l=-n.scrollTop;return Si(i||r).direction==="rtl"&&(s+=lo(r.clientWidth,i?i.clientWidth:0)-a),{width:a,height:o,x:s,y:l}}function $y(e){var t=Si(e),r=t.overflow,n=t.overflowX,i=t.overflowY;return/auto|scroll|overlay|hidden/.test(r+i+n)}function jM(e){return["html","body","#document"].indexOf(Qn(e))>=0?e.ownerDocument.body:ln(e)&&$y(e)?e:jM(ch(e))}function $l(e,t){var r;t===void 0&&(t=[]);var n=jM(e),i=n===((r=e.ownerDocument)==null?void 0:r.body),a=In(n),o=i?[a].concat(a.visualViewport||[],$y(n)?n:[]):n,s=t.concat(o);return i?s:s.concat($l(ch(o)))}function ug(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function O5(e){var t=Cs(e);return t.top=t.top+e.clientTop,t.left=t.left+e.clientLeft,t.bottom=t.top+e.clientHeight,t.right=t.left+e.clientWidth,t.width=e.clientWidth,t.height=e.clientHeight,t.x=t.left,t.y=t.top,t}function qb(e,t){return t===$M?ug(D5(e)):Ss(t)?O5(t):ug(I5(ga(e)))}function R5(e){var t=$l(ch(e)),r=["absolute","fixed"].indexOf(Si(e).position)>=0,n=r&&ln(e)?ef(e):e;return Ss(n)?t.filter(function(i){return Ss(i)&&zM(i,n)&&Qn(i)!=="body"}):[]}function k5(e,t,r){var n=t==="clippingParents"?R5(e):[].concat(t),i=[].concat(n,[r]),a=i[0],o=i.reduce(function(s,l){var u=qb(e,l);return s.top=lo(u.top,s.top),s.right=pd(u.right,s.right),s.bottom=pd(u.bottom,s.bottom),s.left=lo(u.left,s.left),s},qb(e,a));return o.width=o.right-o.left,o.height=o.bottom-o.top,o.x=o.left,o.y=o.top,o}function qM(e){var t=e.reference,r=e.element,n=e.placement,i=n?jn(n):null,a=n?Ts(n):null,o=t.x+t.width/2-r.width/2,s=t.y+t.height/2-r.height/2,l;switch(i){case Ar:l={x:o,y:t.y-r.height};break;case cn:l={x:o,y:t.y+t.height};break;case dn:l={x:t.x+t.width,y:s};break;case Pr:l={x:t.x-r.width,y:s};break;default:l={x:t.x,y:t.y}}var u=i?Ny(i):null;if(u!=null){var f=u==="y"?"height":"width";switch(a){case ws:l[u]=l[u]-(t[f]/2-r[f]/2);break;case wu:l[u]=l[u]+(t[f]/2-r[f]/2);break}}return l}function Su(e,t){t===void 0&&(t={});var r=t,n=r.placement,i=n===void 0?e.placement:n,a=r.boundary,o=a===void 0?i5:a,s=r.rootBoundary,l=s===void 0?$M:s,u=r.elementContext,f=u===void 0?Js:u,c=r.altBoundary,h=c===void 0?!1:c,d=r.padding,v=d===void 0?0:d,p=WM(typeof v!="number"?v:GM(v,Ju)),m=f===Js?a5:Js,g=e.rects.popper,y=e.elements[h?m:f],_=k5(Ss(y)?y:y.contextElement||ga(e.elements.popper),o,l),b=Cs(e.elements.reference),x=qM({reference:b,element:g,strategy:"absolute",placement:i}),w=ug(Object.assign({},g,x)),S=f===Js?w:b,C={top:_.top-S.top+p.top,bottom:S.bottom-_.bottom+p.bottom,left:_.left-S.left+p.left,right:S.right-_.right+p.right},M=e.modifiersData.offset;if(f===Js&&M){var A=M[i];Object.keys(C).forEach(function(P){var E=[dn,cn].indexOf(P)>=0?1:-1,L=[Ar,cn].indexOf(P)>=0?"y":"x";C[P]+=A[L]*E})}return C}function N5(e,t){t===void 0&&(t={});var r=t,n=r.placement,i=r.boundary,a=r.rootBoundary,o=r.padding,s=r.flipVariations,l=r.allowedAutoPlacements,u=l===void 0?Oy:l,f=Ts(n),c=f?s?Gb:Gb.filter(function(v){return Ts(v)===f}):Ju,h=c.filter(function(v){return u.indexOf(v)>=0});h.length===0&&(h=c);var d=h.reduce(function(v,p){return v[p]=Su(e,{placement:p,boundary:i,rootBoundary:a,padding:o})[jn(p)],v},{});return Object.keys(d).sort(function(v,p){return d[v]-d[p]})}function B5(e){if(jn(e)===Iy)return[];var t=Ic(e);return[jb(e),t,jb(t)]}function F5(e){var t=e.state,r=e.options,n=e.name;if(!t.modifiersData[n]._skip){for(var i=r.mainAxis,a=i===void 0?!0:i,o=r.altAxis,s=o===void 0?!0:o,l=r.fallbackPlacements,u=r.padding,f=r.boundary,c=r.rootBoundary,h=r.altBoundary,d=r.flipVariations,v=d===void 0?!0:d,p=r.allowedAutoPlacements,m=t.options.placement,g=jn(m),y=g===m,_=l||(y||!v?[Ic(m)]:B5(m)),b=[m].concat(_).reduce(function(we,$e){return we.concat(jn($e)===Iy?N5(t,{placement:$e,boundary:f,rootBoundary:c,padding:u,flipVariations:v,allowedAutoPlacements:p}):$e)},[]),x=t.rects.reference,w=t.rects.popper,S=new Map,C=!0,M=b[0],A=0;A=0,N=O?"width":"height",H=Su(t,{placement:P,boundary:f,rootBoundary:c,altBoundary:h,padding:u}),V=O?L?dn:Pr:L?cn:Ar;x[N]>w[N]&&(V=Ic(V));var U=Ic(V),F=[];if(a&&F.push(H[E]<=0),s&&F.push(H[V]<=0,H[U]<=0),F.every(function(we){return we})){M=P,C=!1;break}S.set(P,F)}if(C)for(var z=v?3:1,ee=function(we){var $e=b.find(function(Ie){var B=S.get(Ie);if(B)return B.slice(0,we).every(function(Y){return Y})});if($e)return M=$e,"break"},J=z;J>0;J--){var me=ee(J);if(me==="break")break}t.placement!==M&&(t.modifiersData[n]._skip=!0,t.placement=M,t.reset=!0)}}var $5={name:"flip",enabled:!0,phase:"main",fn:F5,requiresIfExists:["offset"],data:{_skip:!1}};function Kb(e,t,r){return r===void 0&&(r={x:0,y:0}),{top:e.top-t.height-r.y,right:e.right-t.width+r.x,bottom:e.bottom-t.height+r.y,left:e.left-t.width-r.x}}function Xb(e){return[Ar,dn,cn,Pr].some(function(t){return e[t]>=0})}function H5(e){var t=e.state,r=e.name,n=t.rects.reference,i=t.rects.popper,a=t.modifiersData.preventOverflow,o=Su(t,{elementContext:"reference"}),s=Su(t,{altBoundary:!0}),l=Kb(o,n),u=Kb(s,i,a),f=Xb(l),c=Xb(u);t.modifiersData[r]={referenceClippingOffsets:l,popperEscapeOffsets:u,isReferenceHidden:f,hasPopperEscaped:c},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":f,"data-popper-escaped":c})}var z5={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:H5};function V5(e,t,r){var n=jn(e),i=[Pr,Ar].indexOf(n)>=0?-1:1,a=typeof r=="function"?r(Object.assign({},t,{placement:e})):r,o=a[0],s=a[1];return o=o||0,s=(s||0)*i,[Pr,dn].indexOf(n)>=0?{x:s,y:o}:{x:o,y:s}}function W5(e){var t=e.state,r=e.options,n=e.name,i=r.offset,a=i===void 0?[0,0]:i,o=Oy.reduce(function(f,c){return f[c]=V5(c,t.rects,a),f},{}),s=o[t.placement],l=s.x,u=s.y;t.modifiersData.popperOffsets!=null&&(t.modifiersData.popperOffsets.x+=l,t.modifiersData.popperOffsets.y+=u),t.modifiersData[n]=o}var G5={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:W5};function U5(e){var t=e.state,r=e.name;t.modifiersData[r]=qM({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})}var KM={name:"popperOffsets",enabled:!0,phase:"read",fn:U5,data:{}};function Y5(e){return e==="x"?"y":"x"}function j5(e){var t=e.state,r=e.options,n=e.name,i=r.mainAxis,a=i===void 0?!0:i,o=r.altAxis,s=o===void 0?!1:o,l=r.boundary,u=r.rootBoundary,f=r.altBoundary,c=r.padding,h=r.tether,d=h===void 0?!0:h,v=r.tetherOffset,p=v===void 0?0:v,m=Su(t,{boundary:l,rootBoundary:u,padding:c,altBoundary:f}),g=jn(t.placement),y=Ts(t.placement),_=!y,b=Ny(g),x=Y5(b),w=t.modifiersData.popperOffsets,S=t.rects.reference,C=t.rects.popper,M=typeof p=="function"?p(Object.assign({},t.rects,{placement:t.placement})):p,A=typeof M=="number"?{mainAxis:M,altAxis:M}:Object.assign({mainAxis:0,altAxis:0},M),P=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,E={x:0,y:0};if(w){if(a){var L,O=b==="y"?Ar:Pr,N=b==="y"?cn:dn,H=b==="y"?"height":"width",V=w[b],U=V+m[O],F=V-m[N],z=d?-C[H]/2:0,ee=y===ws?S[H]:C[H],J=y===ws?-C[H]:-S[H],me=t.elements.arrow,we=d&&me?ky(me):{width:0,height:0},$e=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:VM(),Ie=$e[O],B=$e[N],Y=Fl(0,S[H],we[H]),K=_?S[H]/2-z-Y-Ie-A.mainAxis:ee-Y-Ie-A.mainAxis,Q=_?-S[H]/2+z+Y+B+A.mainAxis:J+Y+B+A.mainAxis,oe=t.elements.arrow&&ef(t.elements.arrow),pe=oe?b==="y"?oe.clientTop||0:oe.clientLeft||0:0,D=(L=P==null?void 0:P[b])!=null?L:0,I=V+K-D-pe,W=V+Q-D,X=Fl(d?pd(U,I):U,V,d?lo(F,W):F);w[b]=X,E[b]=X-V}if(s){var j,le=b==="x"?Ar:Pr,fe=b==="x"?cn:dn,ae=w[x],se=x==="y"?"height":"width",ne=ae+m[le],de=ae-m[fe],Me=[Ar,Pr].indexOf(g)!==-1,Se=(j=P==null?void 0:P[x])!=null?j:0,ke=Me?ne:ae-S[se]-C[se]-Se+A.altAxis,Ve=Me?ae+S[se]+C[se]-Se-A.altAxis:de,rt=d&&Me?b5(ke,ae,Ve):Fl(d?ke:ne,ae,d?Ve:de);w[x]=rt,E[x]=rt-ae}t.modifiersData[n]=E}}var q5={name:"preventOverflow",enabled:!0,phase:"main",fn:j5,requiresIfExists:["offset"]};function K5(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function X5(e){return e===In(e)||!ln(e)?By(e):K5(e)}function Z5(e){var t=e.getBoundingClientRect(),r=xs(t.width)/e.offsetWidth||1,n=xs(t.height)/e.offsetHeight||1;return r!==1||n!==1}function Q5(e,t,r){r===void 0&&(r=!1);var n=ln(t),i=ln(t)&&Z5(t),a=ga(t),o=Cs(e,i),s={scrollLeft:0,scrollTop:0},l={x:0,y:0};return(n||!n&&!r)&&((Qn(t)!=="body"||$y(a))&&(s=X5(t)),ln(t)?(l=Cs(t,!0),l.x+=t.clientLeft,l.y+=t.clientTop):a&&(l.x=Fy(a))),{x:o.left+s.scrollLeft-l.x,y:o.top+s.scrollTop-l.y,width:o.width,height:o.height}}function J5(e){var t=new Map,r=new Set,n=[];e.forEach(function(a){t.set(a.name,a)});function i(a){r.add(a.name);var o=[].concat(a.requires||[],a.requiresIfExists||[]);o.forEach(function(s){if(!r.has(s)){var l=t.get(s);l&&i(l)}}),n.push(a)}return e.forEach(function(a){r.has(a.name)||i(a)}),n}function e4(e){var t=J5(e);return p5.reduce(function(r,n){return r.concat(t.filter(function(i){return i.phase===n}))},[])}function t4(e){var t;return function(){return t||(t=new Promise(function(r){Promise.resolve().then(function(){t=void 0,r(e())})})),t}}function r4(e){var t=e.reduce(function(r,n){var i=r[n.name];return r[n.name]=i?Object.assign({},i,n,{options:Object.assign({},i.options,n.options),data:Object.assign({},i.data,n.data)}):n,r},{});return Object.keys(t).map(function(r){return t[r]})}var Zb={placement:"bottom",modifiers:[],strategy:"absolute"};function Qb(){for(var e=arguments.length,t=new Array(e),r=0;r{const n={name:"updateState",enabled:!0,phase:"write",fn:({state:l})=>{const u=s4(l);Object.assign(o.value,u)},requires:["computeStyles"]},i=k(()=>{const{onFirstUpdate:l,placement:u,strategy:f,modifiers:c}=T(r);return{onFirstUpdate:l,placement:u||"bottom",strategy:f||"absolute",modifiers:[...c||[],n,{name:"applyStyles",enabled:!1}]}}),a=ty(),o=$({styles:{popper:{position:T(i).strategy,left:"0",top:"0"},arrow:{position:"absolute"}},attributes:{}}),s=()=>{a.value&&(a.value.destroy(),a.value=void 0)};return be(i,l=>{const u=T(a);u&&u.setOptions(l)},{deep:!0}),be([e,t],([l,u])=>{s(),!(!l||!u)&&(a.value=a4(l,u,T(i)))}),tr(()=>{s()}),{state:k(()=>{var l;return{...((l=T(a))==null?void 0:l.state)||{}}}),styles:k(()=>T(o).styles),attributes:k(()=>T(o).attributes),update:()=>{var l;return(l=T(a))==null?void 0:l.update()},forceUpdate:()=>{var l;return(l=T(a))==null?void 0:l.forceUpdate()},instanceRef:k(()=>T(a))}};function s4(e){const t=Object.keys(e.elements),r=og(t.map(i=>[i,e.styles[i]||{}])),n=og(t.map(i=>[i,e.attributes[i]]));return{styles:r,attributes:n}}const XM=e=>{if(!e)return{onClick:Ft,onMousedown:Ft,onMouseup:Ft};let t=!1,r=!1;return{onClick:o=>{t&&r&&e(o),t=r=!1},onMousedown:o=>{t=o.target===o.currentTarget},onMouseup:o=>{r=o.target===o.currentTarget}}};function Jb(){let e;const t=(n,i)=>{r(),e=window.setTimeout(n,i)},r=()=>window.clearTimeout(e);return ju(()=>r()),{registerTimeout:t,cancelTimeout:r}}const e1={prefix:Math.floor(Math.random()*1e4),current:0},l4=Symbol("elIdInjection"),ZM=()=>it()?Le(l4,e1):e1,xu=e=>{const t=ZM(),r=Dy();return k(()=>T(e)||`${r.value}-id-${t.prefix}-${t.current++}`)};let Xo=[];const t1=e=>{const t=e;t.key===hr.esc&&Xo.forEach(r=>r(t))},u4=e=>{_t(()=>{Xo.length===0&&document.addEventListener("keydown",t1),At&&Xo.push(e)}),tr(()=>{Xo=Xo.filter(t=>t!==e),Xo.length===0&&At&&document.removeEventListener("keydown",t1)})};let r1;const QM=()=>{const e=Dy(),t=ZM(),r=k(()=>`${e.value}-popper-container-${t.prefix}`),n=k(()=>`#${r.value}`);return{id:r,selector:n}},f4=e=>{const t=document.createElement("div");return t.id=e,document.body.appendChild(t),t},c4=()=>{const{id:e,selector:t}=QM();return eh(()=>{At&&!r1&&!document.body.querySelector(t.value)&&(r1=f4(e.value))}),{id:e,selector:t}},d4=Je({showAfter:{type:Number,default:0},hideAfter:{type:Number,default:200},autoClose:{type:Number,default:0}}),h4=({showAfter:e,hideAfter:t,autoClose:r,open:n,close:i})=>{const{registerTimeout:a}=Jb(),{registerTimeout:o,cancelTimeout:s}=Jb();return{onOpen:f=>{a(()=>{n(f);const c=T(r);kt(c)&&c>0&&o(()=>{i(f)},c)},T(e))},onClose:f=>{s(),a(()=>{i(f)},T(t))}}},JM=Symbol("elForwardRef"),v4=e=>{Dt(JM,{setForwardRef:r=>{e.value=r}})},p4=e=>({mounted(t){e(t)},updated(t){e(t)},unmounted(){e(null)}}),n1=$(0),eA=2e3,tA=Symbol("zIndexContextKey"),zy=e=>{const t=e||(it()?Le(tA,void 0):void 0),r=k(()=>{const a=T(t);return kt(a)?a:eA}),n=k(()=>r.value+n1.value);return{initialZIndex:r,currentZIndex:n,nextZIndex:()=>(n1.value++,n.value)}},dh=fh({type:String,values:$s,required:!1}),rA=Symbol("size"),g4=()=>{const e=Le(rA,{});return k(()=>T(e.size)||"")},nA=Symbol(),gd=$();function hh(e,t=void 0){const r=it()?Le(nA,gd):gd;return e?k(()=>{var n,i;return(i=(n=r.value)==null?void 0:n[e])!=null?i:t}):r}function m4(e,t){const r=hh(),n=Oe(e,k(()=>{var s;return((s=r.value)==null?void 0:s.namespace)||Bl})),i=Hs(k(()=>{var s;return(s=r.value)==null?void 0:s.locale})),a=zy(k(()=>{var s;return((s=r.value)==null?void 0:s.zIndex)||eA})),o=k(()=>{var s;return T(t)||((s=r.value)==null?void 0:s.size)||""});return y4(k(()=>T(r)||{})),{ns:n,locale:i,zIndex:a,size:o}}const y4=(e,t,r=!1)=>{var n;const i=!!it(),a=i?hh():void 0,o=(n=t==null?void 0:t.provide)!=null?n:i?Dt:void 0;if(!o)return;const s=k(()=>{const l=T(e);return a!=null&&a.value?_4(a.value,l):l});return o(nA,s),o(kM,k(()=>s.value.locale)),o(NM,k(()=>s.value.namespace)),o(tA,k(()=>s.value.zIndex)),o(rA,{size:k(()=>s.value.size||"")}),(r||!gd.value)&&(gd.value=s.value),s},_4=(e,t)=>{var r;const n=[...new Set([...Vb(e),...Vb(t)])],i={};for(const a of n)i[a]=(r=t[a])!=null?r:e[a];return i},i1={};var Ke=(e,t)=>{const r=e.__vccOpts||e;for(const[n,i]of t)r[n]=i;return r};const b4=Je({size:{type:Be([Number,String])},color:{type:String}}),w4=ie({name:"ElIcon",inheritAttrs:!1}),S4=ie({...w4,props:b4,setup(e){const t=e,r=Oe("icon"),n=k(()=>{const{size:i,color:a}=t;return!i&&!a?{}:{fontSize:bs(i)?void 0:Zn(i),"--color":a}});return(i,a)=>(G(),ce("i",ei({class:T(r).b(),style:T(n)},i.$attrs),[Ce(i.$slots,"default")],16))}});var x4=Ke(S4,[["__file","icon.vue"]]);const Bt=Yt(x4),zs=Symbol("formContextKey"),yo=Symbol("formItemContextKey"),xi=(e,t={})=>{const r=$(void 0),n=t.prop?r:FM("size"),i=t.global?r:g4(),a=t.form?{size:void 0}:Le(zs,void 0),o=t.formItem?{size:void 0}:Le(yo,void 0);return k(()=>n.value||T(e)||(o==null?void 0:o.size)||(a==null?void 0:a.size)||i.value||"")},vh=e=>{const t=FM("disabled"),r=Le(zs,void 0);return k(()=>t.value||T(e)||(r==null?void 0:r.disabled)||!1)},tf=()=>{const e=Le(zs,void 0),t=Le(yo,void 0);return{form:e,formItem:t}},Vy=(e,{formItemContext:t,disableIdGeneration:r,disableIdManagement:n})=>{r||(r=$(!1)),n||(n=$(!1));const i=$();let a;const o=k(()=>{var s;return!!(!e.label&&t&&t.inputIds&&((s=t.inputIds)==null?void 0:s.length)<=1)});return _t(()=>{a=be([wn(e,"id"),r],([s,l])=>{const u=s??(l?void 0:xu().value);u!==i.value&&(t!=null&&t.removeInputId&&(i.value&&t.removeInputId(i.value),!(n!=null&&n.value)&&!l&&u&&t.addInputId(u)),i.value=u)},{immediate:!0})}),ks(()=>{a&&a(),t!=null&&t.removeInputId&&i.value&&t.removeInputId(i.value)}),{isLabeledByFormItem:o,inputId:i}},C4=Je({size:{type:String,values:$s},disabled:Boolean}),T4=Je({...C4,model:Object,rules:{type:Be(Object)},labelPosition:{type:String,values:["left","right","top"],default:"right"},requireAsteriskPosition:{type:String,values:["left","right"],default:"left"},labelWidth:{type:[String,Number],default:""},labelSuffix:{type:String,default:""},inline:Boolean,inlineMessage:Boolean,statusIcon:Boolean,showMessage:{type:Boolean,default:!0},validateOnRuleChange:{type:Boolean,default:!0},hideRequiredAsterisk:Boolean,scrollToError:Boolean,scrollIntoViewOptions:{type:[Object,Boolean]}}),M4={validate:(e,t,r)=>(_e(e)||ze(e))&&zr(t)&&ze(r)};function A4(){const e=$([]),t=k(()=>{if(!e.value.length)return"0";const a=Math.max(...e.value);return a?`${a}px`:""});function r(a){const o=e.value.indexOf(a);return o===-1&&t.value,o}function n(a,o){if(a&&o){const s=r(o);e.value.splice(s,1,a)}else a&&e.value.push(a)}function i(a){const o=r(a);o>-1&&e.value.splice(o,1)}return{autoLabelWidth:t,registerLabelWidth:n,deregisterLabelWidth:i}}const Tf=(e,t)=>{const r=Jp(t);return r.length>0?e.filter(n=>n.prop&&r.includes(n.prop)):e},P4="ElForm",E4=ie({name:P4}),L4=ie({...E4,props:T4,emits:M4,setup(e,{expose:t,emit:r}){const n=e,i=[],a=xi(),o=Oe("form"),s=k(()=>{const{labelPosition:_,inline:b}=n;return[o.b(),o.m(a.value||"default"),{[o.m(`label-${_}`)]:_,[o.m("inline")]:b}]}),l=_=>i.find(b=>b.prop===_),u=_=>{i.push(_)},f=_=>{_.prop&&i.splice(i.indexOf(_),1)},c=(_=[])=>{n.model&&Tf(i,_).forEach(b=>b.resetField())},h=(_=[])=>{Tf(i,_).forEach(b=>b.clearValidate())},d=k(()=>!!n.model),v=_=>{if(i.length===0)return[];const b=Tf(i,_);return b.length?b:[]},p=async _=>g(void 0,_),m=async(_=[])=>{if(!d.value)return!1;const b=v(_);if(b.length===0)return!0;let x={};for(const w of b)try{await w.validate("")}catch(S){x={...x,...S}}return Object.keys(x).length===0?!0:Promise.reject(x)},g=async(_=[],b)=>{const x=!De(b);try{const w=await m(_);return w===!0&&(b==null||b(w)),w}catch(w){if(w instanceof Error)throw w;const S=w;return n.scrollToError&&y(Object.keys(S)[0]),b==null||b(!1,S),x&&Promise.reject(S)}},y=_=>{var b;const x=Tf(i,_)[0];x&&((b=x.$el)==null||b.scrollIntoView(n.scrollIntoViewOptions))};return be(()=>n.rules,()=>{n.validateOnRuleChange&&p().catch(_=>void 0)},{deep:!0}),Dt(zs,Ln({...Kd(n),emit:r,resetFields:c,clearValidate:h,validateField:g,getField:l,addField:u,removeField:f,...A4()})),t({validate:p,validateField:g,resetFields:c,clearValidate:h,scrollToField:y}),(_,b)=>(G(),ce("form",{class:re(T(s))},[Ce(_.$slots,"default")],2))}});var D4=Ke(L4,[["__file","form.vue"]]);function Qa(){return Qa=Object.assign?Object.assign.bind():function(e){for(var t=1;t"u"||!Reflect.construct||Reflect.construct.sham)return!1;if(typeof Proxy=="function")return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch{return!1}}function Oc(e,t,r){return O4()?Oc=Reflect.construct.bind():Oc=function(i,a,o){var s=[null];s.push.apply(s,a);var l=Function.bind.apply(i,s),u=new l;return o&&Cu(u,o.prototype),u},Oc.apply(null,arguments)}function R4(e){return Function.toString.call(e).indexOf("[native code]")!==-1}function cg(e){var t=typeof Map=="function"?new Map:void 0;return cg=function(n){if(n===null||!R4(n))return n;if(typeof n!="function")throw new TypeError("Super expression must either be null or a function");if(typeof t<"u"){if(t.has(n))return t.get(n);t.set(n,i)}function i(){return Oc(n,arguments,fg(this).constructor)}return i.prototype=Object.create(n.prototype,{constructor:{value:i,enumerable:!1,writable:!0,configurable:!0}}),Cu(i,n)},cg(e)}var k4=/%[sdj%]/g,N4=function(){};function dg(e){if(!e||!e.length)return null;var t={};return e.forEach(function(r){var n=r.field;t[n]=t[n]||[],t[n].push(r)}),t}function Fr(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n=a)return s;switch(s){case"%s":return String(r[i++]);case"%d":return Number(r[i++]);case"%j":try{return JSON.stringify(r[i++])}catch{return"[Circular]"}break;default:return s}});return o}return e}function B4(e){return e==="string"||e==="url"||e==="hex"||e==="email"||e==="date"||e==="pattern"}function Ut(e,t){return!!(e==null||t==="array"&&Array.isArray(e)&&!e.length||B4(t)&&typeof e=="string"&&!e)}function F4(e,t,r){var n=[],i=0,a=e.length;function o(s){n.push.apply(n,s||[]),i++,i===a&&r(n)}e.forEach(function(s){t(s,o)})}function a1(e,t,r){var n=0,i=e.length;function a(o){if(o&&o.length){r(o);return}var s=n;n=n+1,st in e?DD(e,t,{enumerable:!0,config (?:`+n+":){1}(?:(?::"+n+"){0,4}:"+r+"|(?::"+n+`){1,6}|:)| // 1:: 1::3:4:5:6:7:8 1::8 1::3:4:5:6:7:1.2.3.4 (?::(?:(?::`+n+"){0,5}:"+r+"|(?::"+n+`){1,7}|:)) // ::2:3:4:5:6:7:8 ::2:3:4:5:6:7:8 ::8 ::1.2.3.4 )(?:%[0-9a-zA-Z]{1,})? // %eth0 %1 -`).replace(/\s*\/\/.*$/gm,"").replace(/\n/g,"").trim(),a=new RegExp("(?:^"+r+"$)|(?:^"+i+"$)"),o=new RegExp("^"+r+"$"),s=new RegExp("^"+i+"$"),l=function(b){return b&&b.exact?a:new RegExp("(?:"+t(b)+r+t(b)+")|(?:"+t(b)+i+t(b)+")","g")};l.v4=function(_){return _&&_.exact?o:new RegExp(""+t(_)+r+t(_),"g")},l.v6=function(_){return _&&_.exact?s:new RegExp(""+t(_)+i+t(_),"g")};var u="(?:(?:[a-z]+:)?//)",f="(?:\\S+(?::\\S*)?@)?",c=l.v4().source,h=l.v6().source,d="(?:(?:[a-z\\u00a1-\\uffff0-9][-_]*)*[a-z\\u00a1-\\uffff0-9]+)",v="(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*",p="(?:\\.(?:[a-z\\u00a1-\\uffff]{2,}))",m="(?::\\d{2,5})?",g='(?:[/?#][^\\s"]*)?',y="(?:"+u+"|www\\.)"+f+"(?:localhost|"+c+"|"+h+"|"+d+v+p+")"+m+g;return Mf=new RegExp("(?:^"+y+"$)","i"),Mf},u1={email:/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+\.)+[a-zA-Z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{2,}))$/,hex:/^#?([a-f0-9]{6}|[a-f0-9]{3})$/i},xl={integer:function(t){return xl.number(t)&&parseInt(t,10)===t},float:function(t){return xl.number(t)&&!xl.integer(t)},array:function(t){return Array.isArray(t)},regexp:function(t){if(t instanceof RegExp)return!0;try{return!!new RegExp(t)}catch{return!1}},date:function(t){return typeof t.getTime=="function"&&typeof t.getMonth=="function"&&typeof t.getYear=="function"&&!isNaN(t.getTime())},number:function(t){return isNaN(t)?!1:typeof t=="number"},object:function(t){return typeof t=="object"&&!xl.array(t)},method:function(t){return typeof t=="function"},email:function(t){return typeof t=="string"&&t.length<=320&&!!t.match(u1.email)},url:function(t){return typeof t=="string"&&t.length<=2048&&!!t.match(G4())},hex:function(t){return typeof t=="string"&&!!t.match(u1.hex)}},U4=function(t,r,n,i,a){if(t.required&&r===void 0){iA(t,r,n,i,a);return}var o=["integer","float","array","regexp","object","method","email","number","date","url","hex"],s=t.type;o.indexOf(s)>-1?xl[s](r)||i.push(Fr(a.messages.types[s],t.fullField,t.type)):s&&typeof r!==t.type&&i.push(Fr(a.messages.types[s],t.fullField,t.type))},Y4=function(t,r,n,i,a){var o=typeof t.len=="number",s=typeof t.min=="number",l=typeof t.max=="number",u=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,f=r,c=null,h=typeof r=="number",d=typeof r=="string",v=Array.isArray(r);if(h?c="number":d?c="string":v&&(c="array"),!c)return!1;v&&(f=r.length),d&&(f=r.replace(u,"_").length),o?f!==t.len&&i.push(Fr(a.messages[c].len,t.fullField,t.len)):s&&!l&&ft.max?i.push(Fr(a.messages[c].max,t.fullField,t.max)):s&&l&&(ft.max)&&i.push(Fr(a.messages[c].range,t.fullField,t.min,t.max))},Io="enum",j4=function(t,r,n,i,a){t[Io]=Array.isArray(t[Io])?t[Io]:[],t[Io].indexOf(r)===-1&&i.push(Fr(a.messages[Io],t.fullField,t[Io].join(", ")))},q4=function(t,r,n,i,a){if(t.pattern){if(t.pattern instanceof RegExp)t.pattern.lastIndex=0,t.pattern.test(r)||i.push(Fr(a.messages.pattern.mismatch,t.fullField,r,t.pattern));else if(typeof t.pattern=="string"){var o=new RegExp(t.pattern);o.test(r)||i.push(Fr(a.messages.pattern.mismatch,t.fullField,r,t.pattern))}}},Xe={required:iA,whitespace:W4,type:U4,range:Y4,enum:j4,pattern:q4},K4=function(t,r,n,i,a){var o=[],s=t.required||!t.required&&i.hasOwnProperty(t.field);if(s){if(Ut(r,"string")&&!t.required)return n();Xe.required(t,r,i,o,a,"string"),Ut(r,"string")||(Xe.type(t,r,i,o,a),Xe.range(t,r,i,o,a),Xe.pattern(t,r,i,o,a),t.whitespace===!0&&Xe.whitespace(t,r,i,o,a))}n(o)},X4=function(t,r,n,i,a){var o=[],s=t.required||!t.required&&i.hasOwnProperty(t.field);if(s){if(Ut(r)&&!t.required)return n();Xe.required(t,r,i,o,a),r!==void 0&&Xe.type(t,r,i,o,a)}n(o)},Z4=function(t,r,n,i,a){var o=[],s=t.required||!t.required&&i.hasOwnProperty(t.field);if(s){if(r===""&&(r=void 0),Ut(r)&&!t.required)return n();Xe.required(t,r,i,o,a),r!==void 0&&(Xe.type(t,r,i,o,a),Xe.range(t,r,i,o,a))}n(o)},Q4=function(t,r,n,i,a){var o=[],s=t.required||!t.required&&i.hasOwnProperty(t.field);if(s){if(Ut(r)&&!t.required)return n();Xe.required(t,r,i,o,a),r!==void 0&&Xe.type(t,r,i,o,a)}n(o)},J4=function(t,r,n,i,a){var o=[],s=t.required||!t.required&&i.hasOwnProperty(t.field);if(s){if(Ut(r)&&!t.required)return n();Xe.required(t,r,i,o,a),Ut(r)||Xe.type(t,r,i,o,a)}n(o)},eH=function(t,r,n,i,a){var o=[],s=t.required||!t.required&&i.hasOwnProperty(t.field);if(s){if(Ut(r)&&!t.required)return n();Xe.required(t,r,i,o,a),r!==void 0&&(Xe.type(t,r,i,o,a),Xe.range(t,r,i,o,a))}n(o)},tH=function(t,r,n,i,a){var o=[],s=t.required||!t.required&&i.hasOwnProperty(t.field);if(s){if(Ut(r)&&!t.required)return n();Xe.required(t,r,i,o,a),r!==void 0&&(Xe.type(t,r,i,o,a),Xe.range(t,r,i,o,a))}n(o)},rH=function(t,r,n,i,a){var o=[],s=t.required||!t.required&&i.hasOwnProperty(t.field);if(s){if(r==null&&!t.required)return n();Xe.required(t,r,i,o,a,"array"),r!=null&&(Xe.type(t,r,i,o,a),Xe.range(t,r,i,o,a))}n(o)},nH=function(t,r,n,i,a){var o=[],s=t.required||!t.required&&i.hasOwnProperty(t.field);if(s){if(Ut(r)&&!t.required)return n();Xe.required(t,r,i,o,a),r!==void 0&&Xe.type(t,r,i,o,a)}n(o)},iH="enum",aH=function(t,r,n,i,a){var o=[],s=t.required||!t.required&&i.hasOwnProperty(t.field);if(s){if(Ut(r)&&!t.required)return n();Xe.required(t,r,i,o,a),r!==void 0&&Xe[iH](t,r,i,o,a)}n(o)},oH=function(t,r,n,i,a){var o=[],s=t.required||!t.required&&i.hasOwnProperty(t.field);if(s){if(Ut(r,"string")&&!t.required)return n();Xe.required(t,r,i,o,a),Ut(r,"string")||Xe.pattern(t,r,i,o,a)}n(o)},sH=function(t,r,n,i,a){var o=[],s=t.required||!t.required&&i.hasOwnProperty(t.field);if(s){if(Ut(r,"date")&&!t.required)return n();if(Xe.required(t,r,i,o,a),!Ut(r,"date")){var l;r instanceof Date?l=r:l=new Date(r),Xe.type(t,l,i,o,a),l&&Xe.range(t,l.getTime(),i,o,a)}}n(o)},lH=function(t,r,n,i,a){var o=[],s=Array.isArray(r)?"array":typeof r;Xe.required(t,r,i,o,a,s),n(o)},nv=function(t,r,n,i,a){var o=t.type,s=[],l=t.required||!t.required&&i.hasOwnProperty(t.field);if(l){if(Ut(r,o)&&!t.required)return n();Xe.required(t,r,i,s,a,o),Ut(r,o)||Xe.type(t,r,i,s,a)}n(s)},uH=function(t,r,n,i,a){var o=[],s=t.required||!t.required&&i.hasOwnProperty(t.field);if(s){if(Ut(r)&&!t.required)return n();Xe.required(t,r,i,o,a)}n(o)},Hl={string:K4,method:X4,number:Z4,boolean:Q4,regexp:J4,integer:eH,float:tH,array:rH,object:nH,enum:aH,pattern:oH,date:sH,url:nv,hex:nv,email:nv,required:lH,any:uH};function hg(){return{default:"Validation error on field %s",required:"%s is required",enum:"%s must be one of %s",whitespace:"%s cannot be empty",date:{format:"%s date %s is invalid for format %s",parse:"%s date could not be parsed, %s is invalid ",invalid:"%s date %s is invalid"},types:{string:"%s is not a %s",method:"%s is not a %s (function)",array:"%s is not an %s",object:"%s is not an %s",number:"%s is not a %s",date:"%s is not a %s",boolean:"%s is not a %s",integer:"%s is not an %s",float:"%s is not a %s",regexp:"%s is not a valid %s",email:"%s is not a valid %s",url:"%s is not a valid %s",hex:"%s is not a valid %s"},string:{len:"%s must be exactly %s characters",min:"%s must be at least %s characters",max:"%s cannot be longer than %s characters",range:"%s must be between %s and %s characters"},number:{len:"%s must equal %s",min:"%s cannot be less than %s",max:"%s cannot be greater than %s",range:"%s must be between %s and %s"},array:{len:"%s must be exactly %s in length",min:"%s cannot be less than %s in length",max:"%s cannot be greater than %s in length",range:"%s must be between %s and %s in length"},pattern:{mismatch:"%s value %s does not match pattern %s"},clone:function(){var t=JSON.parse(JSON.stringify(this));return t.clone=this.clone,t}}}var vg=hg(),rf=function(){function e(r){this.rules=null,this._messages=vg,this.define(r)}var t=e.prototype;return t.define=function(n){var i=this;if(!n)throw new Error("Cannot configure a schema with no rules");if(typeof n!="object"||Array.isArray(n))throw new Error("Rules must be an object");this.rules={},Object.keys(n).forEach(function(a){var o=n[a];i.rules[a]=Array.isArray(o)?o:[o]})},t.messages=function(n){return n&&(this._messages=l1(hg(),n)),this._messages},t.validate=function(n,i,a){var o=this;i===void 0&&(i={}),a===void 0&&(a=function(){});var s=n,l=i,u=a;if(typeof l=="function"&&(u=l,l={}),!this.rules||Object.keys(this.rules).length===0)return u&&u(null,s),Promise.resolve(s);function f(p){var m=[],g={};function y(b){if(Array.isArray(b)){var x;m=(x=m).concat.apply(x,b)}else m.push(b)}for(var _=0;_");const i=Oe("form"),a=$(),o=$(0),s=()=>{var f;if((f=a.value)!=null&&f.firstElementChild){const c=window.getComputedStyle(a.value.firstElementChild).width;return Math.ceil(Number.parseFloat(c))}else return 0},l=(f="update")=>{kt(()=>{t.default&&e.isAutoWidth&&(f==="update"?o.value=s():f==="remove"&&(r==null||r.deregisterLabelWidth(o.value)))})},u=()=>l("update");return _t(()=>{u()}),tr(()=>{l("remove")}),Uu(()=>u()),we(o,(f,c)=>{e.updateAll&&(r==null||r.registerLabelWidth(f,c))}),ps(k(()=>{var f,c;return(c=(f=a.value)==null?void 0:f.firstElementChild)!=null?c:null}),u),()=>{var f,c;if(!t)return null;const{isAutoWidth:h}=e;if(h){const d=r==null?void 0:r.autoLabelWidth,v=n==null?void 0:n.hasLabel,p={};if(v&&d&&d!=="auto"){const m=Math.max(0,Number.parseInt(d,10)-o.value),g=r.labelPosition==="left"?"marginRight":"marginLeft";m&&(p[g]=`${m}px`)}return Z("div",{ref:a,class:[i.be("item","label-wrap")],style:p},[(f=t.default)==null?void 0:f.call(t)])}else return Z(ft,{ref:a},[(c=t.default)==null?void 0:c.call(t)])}}});const hH=["role","aria-labelledby"],vH=ie({name:"ElFormItem"}),pH=ie({...vH,props:cH,setup(e,{expose:t}){const r=e,n=Rs(),i=Le($s,void 0),a=Le(yo,void 0),o=xi(void 0,{formItem:!1}),s=Oe("form-item"),l=xu().value,u=$([]),f=$(""),c=pR(f,100),h=$(""),d=$();let v,p=!1;const m=k(()=>{if((i==null?void 0:i.labelPosition)==="top")return{};const B=Zn(r.labelWidth||(i==null?void 0:i.labelWidth)||"");return B?{width:B}:{}}),g=k(()=>{if((i==null?void 0:i.labelPosition)==="top"||i!=null&&i.inline)return{};if(!r.label&&!r.labelWidth&&M)return{};const B=Zn(r.labelWidth||(i==null?void 0:i.labelWidth)||"");return!r.label&&!n.label?{marginLeft:B}:{}}),y=k(()=>[s.b(),s.m(o.value),s.is("error",f.value==="error"),s.is("validating",f.value==="validating"),s.is("success",f.value==="success"),s.is("required",O.value||r.required),s.is("no-asterisk",i==null?void 0:i.hideRequiredAsterisk),(i==null?void 0:i.requireAsteriskPosition)==="right"?"asterisk-right":"asterisk-left",{[s.m("feedback")]:i==null?void 0:i.statusIcon}]),_=k(()=>zr(r.inlineMessage)?r.inlineMessage:(i==null?void 0:i.inlineMessage)||!1),b=k(()=>[s.e("error"),{[s.em("error","inline")]:_.value}]),x=k(()=>r.prop?ze(r.prop)?r.prop:r.prop.join("."):""),w=k(()=>!!(r.label||n.label)),S=k(()=>r.for||(u.value.length===1?u.value[0]:void 0)),C=k(()=>!S.value&&w.value),M=!!a,A=k(()=>{const B=i==null?void 0:i.model;if(!(!B||!r.prop))return Ec(B,r.prop).value}),P=k(()=>{const{required:B}=r,Y=[];r.rules&&Y.push(...Jp(r.rules));const K=i==null?void 0:i.rules;if(K&&r.prop){const Q=Ec(K,r.prop).value;Q&&Y.push(...Jp(Q))}if(B!==void 0){const Q=Y.map((oe,pe)=>[oe,pe]).filter(([oe])=>Object.keys(oe).includes("required"));if(Q.length>0)for(const[oe,pe]of Q)oe.required!==B&&(Y[pe]={...oe,required:B});else Y.push({required:B})}return Y}),E=k(()=>P.value.length>0),L=B=>P.value.filter(K=>!K.trigger||!B?!0:Array.isArray(K.trigger)?K.trigger.includes(B):K.trigger===B).map(({trigger:K,...Q})=>Q),O=k(()=>P.value.some(B=>B.required)),N=k(()=>{var B;return c.value==="error"&&r.showMessage&&((B=i==null?void 0:i.showMessage)!=null?B:!0)}),H=k(()=>`${r.label||""}${(i==null?void 0:i.labelSuffix)||""}`),V=B=>{f.value=B},U=B=>{var Y,K;const{errors:Q,fields:oe}=B;(!Q||!oe)&&console.error(B),V("error"),h.value=Q?(K=(Y=Q==null?void 0:Q[0])==null?void 0:Y.message)!=null?K:`${r.prop} is required`:"",i==null||i.emit("validate",r.prop,!1,h.value)},F=()=>{V("success"),i==null||i.emit("validate",r.prop,!0,"")},z=async B=>{const Y=x.value;return new rf({[Y]:B}).validate({[Y]:A.value},{firstFields:!0}).then(()=>(F(),!0)).catch(Q=>(U(Q),Promise.reject(Q)))},te=async(B,Y)=>{if(p||!r.prop)return!1;const K=De(Y);if(!E.value)return Y==null||Y(!1),!1;const Q=L(B);return Q.length===0?(Y==null||Y(!0),!0):(V("validating"),z(Q).then(()=>(Y==null||Y(!0),!0)).catch(oe=>{const{fields:pe}=oe;return Y==null||Y(!1,pe),K?!1:Promise.reject(pe)}))},J=()=>{V(""),h.value="",p=!1},me=async()=>{const B=i==null?void 0:i.model;if(!B||!r.prop)return;const Y=Ec(B,r.prop);p=!0,Y.value=Bb(v),await kt(),J(),p=!1},Se=B=>{u.value.includes(B)||u.value.push(B)},$e=B=>{u.value=u.value.filter(Y=>Y!==B)};we(()=>r.error,B=>{h.value=B||"",V(B?"error":"")},{immediate:!0}),we(()=>r.validateStatus,B=>V(B||""));const Ie=Ln({...Kd(r),$el:d,size:o,validateState:f,labelId:l,inputIds:u,isGroup:C,hasLabel:w,fieldValue:A,addInputId:Se,removeInputId:$e,resetField:me,clearValidate:J,validate:te});return Dt(yo,Ie),_t(()=>{r.prop&&(i==null||i.addField(Ie),v=Bb(A.value))}),tr(()=>{i==null||i.removeField(Ie)}),t({size:o,validateMessage:h,validateState:f,validate:te,clearValidate:J,resetField:me}),(B,Y)=>{var K;return G(),ce("div",{ref_key:"formItemRef",ref:d,class:re(T(y)),role:T(C)?"group":void 0,"aria-labelledby":T(C)?T(l):void 0},[Z(T(dH),{"is-auto-width":T(m).width==="auto","update-all":((K=T(i))==null?void 0:K.labelWidth)==="auto"},{default:j(()=>[T(w)?(G(),de(Vt(T(S)?"label":"div"),{key:0,id:T(l),for:T(S),class:re(T(s).e("label")),style:ct(T(m))},{default:j(()=>[Ce(B.$slots,"label",{label:T(H)},()=>[mt(be(T(H)),1)])]),_:3},8,["id","for","class","style"])):Ae("v-if",!0)]),_:3},8,["is-auto-width","update-all"]),ee("div",{class:re(T(s).e("content")),style:ct(T(g))},[Ce(B.$slots,"default"),Z(KO,{name:`${T(s).namespace.value}-zoom-in-top`},{default:j(()=>[T(N)?Ce(B.$slots,"error",{key:0,error:h.value},()=>[ee("div",{class:re(T(b))},be(h.value),3)]):Ae("v-if",!0)]),_:3},8,["name"])],6)],10,hH)}}});var aA=Ke(pH,[["__file","form-item.vue"]]);const oA=Yt(D4,{FormItem:aA}),sA=pa(aA),Qo=4,gH={vertical:{offset:"offsetHeight",scroll:"scrollTop",scrollSize:"scrollHeight",size:"height",key:"vertical",axis:"Y",client:"clientY",direction:"top"},horizontal:{offset:"offsetWidth",scroll:"scrollLeft",scrollSize:"scrollWidth",size:"width",key:"horizontal",axis:"X",client:"clientX",direction:"left"}},mH=({move:e,size:t,bar:r})=>({[r.size]:t,transform:`translate${r.axis}(${e}%)`}),lA=Symbol("scrollbarContextKey"),yH=Je({vertical:Boolean,size:String,move:Number,ratio:{type:Number,required:!0},always:Boolean}),_H="Thumb",bH=ie({__name:"thumb",props:yH,setup(e){const t=e,r=Le(lA),n=Oe("scrollbar");r||bi(_H,"can not inject scrollbar context");const i=$(),a=$(),o=$({}),s=$(!1);let l=!1,u=!1,f=At?document.onselectstart:null;const c=k(()=>gH[t.vertical?"vertical":"horizontal"]),h=k(()=>mH({size:t.size,move:t.move,bar:c.value})),d=k(()=>i.value[c.value.offset]**2/r.wrapElement[c.value.scrollSize]/t.ratio/a.value[c.value.offset]),v=w=>{var S;if(w.stopPropagation(),w.ctrlKey||[1,2].includes(w.button))return;(S=window.getSelection())==null||S.removeAllRanges(),m(w);const C=w.currentTarget;C&&(o.value[c.value.axis]=C[c.value.offset]-(w[c.value.client]-C.getBoundingClientRect()[c.value.direction]))},p=w=>{if(!a.value||!i.value||!r.wrapElement)return;const S=Math.abs(w.target.getBoundingClientRect()[c.value.direction]-w[c.value.client]),C=a.value[c.value.offset]/2,M=(S-C)*100*d.value/i.value[c.value.offset];r.wrapElement[c.value.scroll]=M*r.wrapElement[c.value.scrollSize]/100},m=w=>{w.stopImmediatePropagation(),l=!0,document.addEventListener("mousemove",g),document.addEventListener("mouseup",y),f=document.onselectstart,document.onselectstart=()=>!1},g=w=>{if(!i.value||!a.value||l===!1)return;const S=o.value[c.value.axis];if(!S)return;const C=(i.value.getBoundingClientRect()[c.value.direction]-w[c.value.client])*-1,M=a.value[c.value.offset]-S,A=(C-M)*100*d.value/i.value[c.value.offset];r.wrapElement[c.value.scroll]=A*r.wrapElement[c.value.scrollSize]/100},y=()=>{l=!1,o.value[c.value.axis]=0,document.removeEventListener("mousemove",g),document.removeEventListener("mouseup",y),x(),u&&(s.value=!1)},_=()=>{u=!1,s.value=!!t.size},b=()=>{u=!0,s.value=l};tr(()=>{x(),document.removeEventListener("mouseup",y)});const x=()=>{document.onselectstart!==f&&(document.onselectstart=f)};return xn(wn(r,"scrollbarElement"),"mousemove",_),xn(wn(r,"scrollbarElement"),"mouseleave",b),(w,S)=>(G(),de(ti,{name:T(n).b("fade"),persisted:""},{default:j(()=>[qt(ee("div",{ref_key:"instance",ref:i,class:re([T(n).e("bar"),T(n).is(T(c).key)]),onMousedown:p},[ee("div",{ref_key:"thumb",ref:a,class:re(T(n).e("thumb")),style:ct(T(h)),onMousedown:v},null,38)],34),[[Kn,w.always||s.value]])]),_:1},8,["name"]))}});var c1=Ke(bH,[["__file","thumb.vue"]]);const wH=Je({always:{type:Boolean,default:!0},width:String,height:String,ratioX:{type:Number,default:1},ratioY:{type:Number,default:1}}),SH=ie({__name:"bar",props:wH,setup(e,{expose:t}){const r=e,n=$(0),i=$(0);return t({handleScroll:o=>{if(o){const s=o.offsetHeight-Qo,l=o.offsetWidth-Qo;i.value=o.scrollTop*100/s*r.ratioY,n.value=o.scrollLeft*100/l*r.ratioX}}}),(o,s)=>(G(),ce(ft,null,[Z(c1,{move:n.value,ratio:o.ratioX,size:o.width,always:o.always},null,8,["move","ratio","size","always"]),Z(c1,{move:i.value,ratio:o.ratioY,size:o.height,vertical:"",always:o.always},null,8,["move","ratio","size","always"])],64))}});var xH=Ke(SH,[["__file","bar.vue"]]);const CH=Je({height:{type:[String,Number],default:""},maxHeight:{type:[String,Number],default:""},native:{type:Boolean,default:!1},wrapStyle:{type:Be([String,Object,Array]),default:""},wrapClass:{type:[String,Array],default:""},viewClass:{type:[String,Array],default:""},viewStyle:{type:[String,Array,Object],default:""},noresize:Boolean,tag:{type:String,default:"div"},always:Boolean,minSize:{type:Number,default:20},id:String,role:String,ariaLabel:String,ariaOrientation:{type:String,values:["horizontal","vertical"]}}),TH={scroll:({scrollTop:e,scrollLeft:t})=>[e,t].every(Rt)},MH="ElScrollbar",AH=ie({name:MH}),PH=ie({...AH,props:CH,emits:TH,setup(e,{expose:t,emit:r}){const n=e,i=Oe("scrollbar");let a,o;const s=$(),l=$(),u=$(),f=$("0"),c=$("0"),h=$(),d=$(1),v=$(1),p=k(()=>{const S={};return n.height&&(S.height=Zn(n.height)),n.maxHeight&&(S.maxHeight=Zn(n.maxHeight)),[n.wrapStyle,S]}),m=k(()=>[n.wrapClass,i.e("wrap"),{[i.em("wrap","hidden-default")]:!n.native}]),g=k(()=>[i.e("view"),n.viewClass]),y=()=>{var S;l.value&&((S=h.value)==null||S.handleScroll(l.value),r("scroll",{scrollTop:l.value.scrollTop,scrollLeft:l.value.scrollLeft}))};function _(S,C){qe(S)?l.value.scrollTo(S):Rt(S)&&Rt(C)&&l.value.scrollTo(S,C)}const b=S=>{Rt(S)&&(l.value.scrollTop=S)},x=S=>{Rt(S)&&(l.value.scrollLeft=S)},w=()=>{if(!l.value)return;const S=l.value.offsetHeight-Qo,C=l.value.offsetWidth-Qo,M=S**2/l.value.scrollHeight,A=C**2/l.value.scrollWidth,P=Math.max(M,n.minSize),E=Math.max(A,n.minSize);d.value=M/(S-M)/(P/(S-P)),v.value=A/(C-A)/(E/(C-E)),c.value=P+Qon.noresize,S=>{S?(a==null||a(),o==null||o()):({stop:a}=ps(u,w),o=xn("resize",w))},{immediate:!0}),we(()=>[n.maxHeight,n.height],()=>{n.native||kt(()=>{var S;w(),l.value&&((S=h.value)==null||S.handleScroll(l.value))})}),Dt(lA,Ln({scrollbarElement:s,wrapElement:l})),_t(()=>{n.native||kt(()=>{w()})}),Uu(()=>w()),t({wrapRef:l,update:w,scrollTo:_,setScrollTop:b,setScrollLeft:x,handleScroll:y}),(S,C)=>(G(),ce("div",{ref_key:"scrollbarRef",ref:s,class:re(T(i).b())},[ee("div",{ref_key:"wrapRef",ref:l,class:re(T(m)),style:ct(T(p)),onScroll:y},[(G(),de(Vt(S.tag),{id:S.id,ref_key:"resizeRef",ref:u,class:re(T(g)),style:ct(S.viewStyle),role:S.role,"aria-label":S.ariaLabel,"aria-orientation":S.ariaOrientation},{default:j(()=>[Ce(S.$slots,"default")]),_:3},8,["id","class","style","role","aria-label","aria-orientation"]))],38),S.native?Ae("v-if",!0):(G(),de(xH,{key:0,ref_key:"barRef",ref:h,height:c.value,width:f.value,always:S.always,"ratio-x":v.value,"ratio-y":d.value},null,8,["height","width","always","ratio-x","ratio-y"]))],2))}});var EH=Ke(PH,[["__file","scrollbar.vue"]]);const uA=Yt(EH),Wy=Symbol("popper"),fA=Symbol("popperContent"),LH=["dialog","grid","group","listbox","menu","navigation","tooltip","tree"],cA=Je({role:{type:String,values:LH,default:"tooltip"}}),DH=ie({name:"ElPopper",inheritAttrs:!1}),IH=ie({...DH,props:cA,setup(e,{expose:t}){const r=e,n=$(),i=$(),a=$(),o=$(),s=k(()=>r.role),l={triggerRef:n,popperInstanceRef:i,contentRef:a,referenceRef:o,role:s};return t(l),Dt(Wy,l),(u,f)=>Ce(u.$slots,"default")}});var OH=Ke(IH,[["__file","popper.vue"]]);const dA=Je({arrowOffset:{type:Number,default:5}}),RH=ie({name:"ElPopperArrow",inheritAttrs:!1}),kH=ie({...RH,props:dA,setup(e,{expose:t}){const r=e,n=Oe("popper"),{arrowOffset:i,arrowRef:a,arrowStyle:o}=Le(fA,void 0);return we(()=>r.arrowOffset,s=>{i.value=s}),tr(()=>{a.value=void 0}),t({arrowRef:a}),(s,l)=>(G(),ce("span",{ref_key:"arrowRef",ref:a,class:re(T(n).e("arrow")),style:ct(T(o)),"data-popper-arrow":""},null,6))}});var NH=Ke(kH,[["__file","arrow.vue"]]);const BH="ElOnlyChild",FH=ie({name:BH,setup(e,{slots:t,attrs:r}){var n;const i=Le(JM),a=p4((n=i==null?void 0:i.setForwardRef)!=null?n:Bt);return()=>{var o;const s=(o=t.default)==null?void 0:o.call(t,r);if(!s||s.length>1)return null;const l=hA(s);return l?qt(_i(l,r),[[a]]):null}}});function hA(e){if(!e)return null;const t=e;for(const r of t){if(qe(r))switch(r.type){case Mr:continue;case ks:case"svg":return d1(r);case ft:return hA(r.children);default:return r}return d1(r)}return null}function d1(e){const t=Oe("only-child");return Z("span",{class:t.e("content")},[e])}const vA=Je({virtualRef:{type:Be(Object)},virtualTriggering:Boolean,onMouseenter:{type:Be(Function)},onMouseleave:{type:Be(Function)},onClick:{type:Be(Function)},onKeydown:{type:Be(Function)},onFocus:{type:Be(Function)},onBlur:{type:Be(Function)},onContextmenu:{type:Be(Function)},id:String,open:Boolean}),$H=ie({name:"ElPopperTrigger",inheritAttrs:!1}),HH=ie({...$H,props:vA,setup(e,{expose:t}){const r=e,{role:n,triggerRef:i}=Le(Wy,void 0);v4(i);const a=k(()=>s.value?r.id:void 0),o=k(()=>{if(n&&n.value==="tooltip")return r.open&&r.id?r.id:void 0}),s=k(()=>{if(n&&n.value!=="tooltip")return n.value}),l=k(()=>s.value?`${r.open}`:void 0);let u;return _t(()=>{we(()=>r.virtualRef,f=>{f&&(i.value=Zi(f))},{immediate:!0}),we(i,(f,c)=>{u==null||u(),u=void 0,mo(f)&&(["onMouseenter","onMouseleave","onClick","onKeydown","onFocus","onBlur","onContextmenu"].forEach(h=>{var d;const v=r[h];v&&(f.addEventListener(h.slice(2).toLowerCase(),v),(d=c==null?void 0:c.removeEventListener)==null||d.call(c,h.slice(2).toLowerCase(),v))}),u=we([a,o,s,l],h=>{["aria-controls","aria-describedby","aria-haspopup","aria-expanded"].forEach((d,v)=>{ms(h[v])?f.removeAttribute(d):f.setAttribute(d,h[v])})},{immediate:!0})),mo(c)&&["aria-controls","aria-describedby","aria-haspopup","aria-expanded"].forEach(h=>c.removeAttribute(h))},{immediate:!0})}),tr(()=>{u==null||u(),u=void 0}),t({triggerRef:i}),(f,c)=>f.virtualTriggering?Ae("v-if",!0):(G(),de(T(FH),ei({key:0},f.$attrs,{"aria-controls":T(a),"aria-describedby":T(o),"aria-expanded":T(l),"aria-haspopup":T(s)}),{default:j(()=>[Ce(f.$slots,"default")]),_:3},16,["aria-controls","aria-describedby","aria-expanded","aria-haspopup"]))}});var zH=Ke(HH,[["__file","trigger.vue"]]);const iv="focus-trap.focus-after-trapped",av="focus-trap.focus-after-released",VH="focus-trap.focusout-prevented",h1={cancelable:!0,bubbles:!1},WH={cancelable:!0,bubbles:!1},v1="focusAfterTrapped",p1="focusAfterReleased",pA=Symbol("elFocusTrap"),Gy=$(),ph=$(0),Uy=$(0);let Af=0;const gA=e=>{const t=[],r=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:n=>{const i=n.tagName==="INPUT"&&n.type==="hidden";return n.disabled||n.hidden||i?NodeFilter.FILTER_SKIP:n.tabIndex>=0||n===document.activeElement?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;r.nextNode();)t.push(r.currentNode);return t},g1=(e,t)=>{for(const r of e)if(!GH(r,t))return r},GH=(e,t)=>{if(getComputedStyle(e).visibility==="hidden")return!0;for(;e;){if(t&&e===t)return!1;if(getComputedStyle(e).display==="none")return!0;e=e.parentElement}return!1},UH=e=>{const t=gA(e),r=g1(t,e),n=g1(t.reverse(),e);return[r,n]},YH=e=>e instanceof HTMLInputElement&&"select"in e,Vi=(e,t)=>{if(e&&e.focus){const r=document.activeElement;e.focus({preventScroll:!0}),Uy.value=window.performance.now(),e!==r&&YH(e)&&t&&e.select()}};function m1(e,t){const r=[...e],n=e.indexOf(t);return n!==-1&&r.splice(n,1),r}const jH=()=>{let e=[];return{push:n=>{const i=e[0];i&&n!==i&&i.pause(),e=m1(e,n),e.unshift(n)},remove:n=>{var i,a;e=m1(e,n),(a=(i=e[0])==null?void 0:i.resume)==null||a.call(i)}}},qH=(e,t=!1)=>{const r=document.activeElement;for(const n of e)if(Vi(n,t),document.activeElement!==r)return},y1=jH(),KH=()=>ph.value>Uy.value,Pf=()=>{Gy.value="pointer",ph.value=window.performance.now()},_1=()=>{Gy.value="keyboard",ph.value=window.performance.now()},XH=()=>(_t(()=>{Af===0&&(document.addEventListener("mousedown",Pf),document.addEventListener("touchstart",Pf),document.addEventListener("keydown",_1)),Af++}),tr(()=>{Af--,Af<=0&&(document.removeEventListener("mousedown",Pf),document.removeEventListener("touchstart",Pf),document.removeEventListener("keydown",_1))}),{focusReason:Gy,lastUserFocusTimestamp:ph,lastAutomatedFocusTimestamp:Uy}),Ef=e=>new CustomEvent(VH,{...WH,detail:e}),ZH=ie({name:"ElFocusTrap",inheritAttrs:!1,props:{loop:Boolean,trapped:Boolean,focusTrapEl:Object,focusStartEl:{type:[Object,String],default:"first"}},emits:[v1,p1,"focusin","focusout","focusout-prevented","release-requested"],setup(e,{emit:t}){const r=$();let n,i;const{focusReason:a}=XH();u4(v=>{e.trapped&&!o.paused&&t("release-requested",v)});const o={paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}},s=v=>{if(!e.loop&&!e.trapped||o.paused)return;const{key:p,altKey:m,ctrlKey:g,metaKey:y,currentTarget:_,shiftKey:b}=v,{loop:x}=e,w=p===hr.tab&&!m&&!g&&!y,S=document.activeElement;if(w&&S){const C=_,[M,A]=UH(C);if(M&&A){if(!b&&S===A){const E=Ef({focusReason:a.value});t("focusout-prevented",E),E.defaultPrevented||(v.preventDefault(),x&&Vi(M,!0))}else if(b&&[M,C].includes(S)){const E=Ef({focusReason:a.value});t("focusout-prevented",E),E.defaultPrevented||(v.preventDefault(),x&&Vi(A,!0))}}else if(S===C){const E=Ef({focusReason:a.value});t("focusout-prevented",E),E.defaultPrevented||v.preventDefault()}}};Dt(pA,{focusTrapRef:r,onKeydown:s}),we(()=>e.focusTrapEl,v=>{v&&(r.value=v)},{immediate:!0}),we([r],([v],[p])=>{v&&(v.addEventListener("keydown",s),v.addEventListener("focusin",f),v.addEventListener("focusout",c)),p&&(p.removeEventListener("keydown",s),p.removeEventListener("focusin",f),p.removeEventListener("focusout",c))});const l=v=>{t(v1,v)},u=v=>t(p1,v),f=v=>{const p=T(r);if(!p)return;const m=v.target,g=v.relatedTarget,y=m&&p.contains(m);e.trapped||g&&p.contains(g)||(n=g),y&&t("focusin",v),!o.paused&&e.trapped&&(y?i=m:Vi(i,!0))},c=v=>{const p=T(r);if(!(o.paused||!p))if(e.trapped){const m=v.relatedTarget;!ms(m)&&!p.contains(m)&&setTimeout(()=>{if(!o.paused&&e.trapped){const g=Ef({focusReason:a.value});t("focusout-prevented",g),g.defaultPrevented||Vi(i,!0)}},0)}else{const m=v.target;m&&p.contains(m)||t("focusout",v)}};async function h(){await kt();const v=T(r);if(v){y1.push(o);const p=v.contains(document.activeElement)?n:document.activeElement;if(n=p,!v.contains(p)){const g=new Event(iv,h1);v.addEventListener(iv,l),v.dispatchEvent(g),g.defaultPrevented||kt(()=>{let y=e.focusStartEl;ze(y)||(Vi(y),document.activeElement!==y&&(y="first")),y==="first"&&qH(gA(v),!0),(document.activeElement===p||y==="container")&&Vi(v)})}}}function d(){const v=T(r);if(v){v.removeEventListener(iv,l);const p=new CustomEvent(av,{...h1,detail:{focusReason:a.value}});v.addEventListener(av,u),v.dispatchEvent(p),!p.defaultPrevented&&(a.value=="keyboard"||!KH()||v.contains(document.activeElement))&&Vi(n??document.body),v.removeEventListener(av,u),y1.remove(o)}}return _t(()=>{e.trapped&&h(),we(()=>e.trapped,v=>{v?h():d()})}),tr(()=>{e.trapped&&d()}),{onKeydown:s}}});function QH(e,t,r,n,i,a){return Ce(e.$slots,"default",{handleKeydown:e.onKeydown})}var mA=Ke(ZH,[["render",QH],["__file","focus-trap.vue"]]);const JH=["fixed","absolute"],ez=Je({boundariesPadding:{type:Number,default:0},fallbackPlacements:{type:Be(Array),default:void 0},gpuAcceleration:{type:Boolean,default:!0},offset:{type:Number,default:12},placement:{type:String,values:Oy,default:"bottom"},popperOptions:{type:Be(Object),default:()=>({})},strategy:{type:String,values:JH,default:"absolute"}}),yA=Je({...ez,id:String,style:{type:Be([String,Array,Object])},className:{type:Be([String,Array,Object])},effect:{type:String,default:"dark"},visible:Boolean,enterable:{type:Boolean,default:!0},pure:Boolean,focusOnShow:{type:Boolean,default:!1},trapping:{type:Boolean,default:!1},popperClass:{type:Be([String,Array,Object])},popperStyle:{type:Be([String,Array,Object])},referenceEl:{type:Be(Object)},triggerTargetEl:{type:Be(Object)},stopPopperMouseEvent:{type:Boolean,default:!0},ariaLabel:{type:String,default:void 0},virtualTriggering:Boolean,zIndex:Number}),tz={mouseenter:e=>e instanceof MouseEvent,mouseleave:e=>e instanceof MouseEvent,focus:()=>!0,blur:()=>!0,close:()=>!0},rz=(e,t=[])=>{const{placement:r,strategy:n,popperOptions:i}=e,a={placement:r,strategy:n,...i,modifiers:[...iz(e),...t]};return az(a,i==null?void 0:i.modifiers),a},nz=e=>{if(At)return Zi(e)};function iz(e){const{offset:t,gpuAcceleration:r,fallbackPlacements:n}=e;return[{name:"offset",options:{offset:[0,t??12]}},{name:"preventOverflow",options:{padding:{top:2,bottom:2,left:5,right:5}}},{name:"flip",options:{padding:5,fallbackPlacements:n}},{name:"computeStyles",options:{gpuAcceleration:r}}]}function az(e,t){t&&(e.modifiers=[...e.modifiers,...t??[]])}const oz=0,sz=e=>{const{popperInstanceRef:t,contentRef:r,triggerRef:n,role:i}=Le(Wy,void 0),a=$(),o=$(),s=k(()=>({name:"eventListeners",enabled:!!e.visible})),l=k(()=>{var g;const y=T(a),_=(g=T(o))!=null?g:oz;return{name:"arrow",enabled:!MM(y),options:{element:y,padding:_}}}),u=k(()=>({onFirstUpdate:()=>{v()},...rz(e,[T(l),T(s)])})),f=k(()=>nz(e.referenceEl)||T(n)),{attributes:c,state:h,styles:d,update:v,forceUpdate:p,instanceRef:m}=o4(f,r,u);return we(m,g=>t.value=g),_t(()=>{we(()=>{var g;return(g=T(f))==null?void 0:g.getBoundingClientRect()},()=>{v()})}),{attributes:c,arrowRef:a,contentRef:r,instanceRef:m,state:h,styles:d,role:i,forceUpdate:p,update:v}},lz=(e,{attributes:t,styles:r,role:n})=>{const{nextZIndex:i}=zy(),a=Oe("popper"),o=k(()=>T(t).popper),s=$(Rt(e.zIndex)?e.zIndex:i()),l=k(()=>[a.b(),a.is("pure",e.pure),a.is(e.effect),e.popperClass]),u=k(()=>[{zIndex:T(s)},T(r).popper,e.popperStyle||{}]),f=k(()=>n.value==="dialog"?"false":void 0),c=k(()=>T(r).arrow||{});return{ariaModal:f,arrowStyle:c,contentAttrs:o,contentClass:l,contentStyle:u,contentZIndex:s,updateZIndex:()=>{s.value=Rt(e.zIndex)?e.zIndex:i()}}},uz=(e,t)=>{const r=$(!1),n=$();return{focusStartRef:n,trapped:r,onFocusAfterReleased:u=>{var f;((f=u.detail)==null?void 0:f.focusReason)!=="pointer"&&(n.value="first",t("blur"))},onFocusAfterTrapped:()=>{t("focus")},onFocusInTrap:u=>{e.visible&&!r.value&&(u.target&&(n.value=u.target),r.value=!0)},onFocusoutPrevented:u=>{e.trapping||(u.detail.focusReason==="pointer"&&u.preventDefault(),r.value=!1)},onReleaseRequested:()=>{r.value=!1,t("close")}}},fz=ie({name:"ElPopperContent"}),cz=ie({...fz,props:yA,emits:tz,setup(e,{expose:t,emit:r}){const n=e,{focusStartRef:i,trapped:a,onFocusAfterReleased:o,onFocusAfterTrapped:s,onFocusInTrap:l,onFocusoutPrevented:u,onReleaseRequested:f}=uz(n,r),{attributes:c,arrowRef:h,contentRef:d,styles:v,instanceRef:p,role:m,update:g}=sz(n),{ariaModal:y,arrowStyle:_,contentAttrs:b,contentClass:x,contentStyle:w,updateZIndex:S}=lz(n,{styles:v,attributes:c,role:m}),C=Le(yo,void 0),M=$();Dt(fA,{arrowStyle:_,arrowRef:h,arrowOffset:M}),C&&(C.addInputId||C.removeInputId)&&Dt(yo,{...C,addInputId:Bt,removeInputId:Bt});let A;const P=(L=!0)=>{g(),L&&S()},E=()=>{P(!1),n.visible&&n.focusOnShow?a.value=!0:n.visible===!1&&(a.value=!1)};return _t(()=>{we(()=>n.triggerTargetEl,(L,O)=>{A==null||A(),A=void 0;const N=T(L||d.value),H=T(O||d.value);mo(N)&&(A=we([m,()=>n.ariaLabel,y,()=>n.id],V=>{["role","aria-label","aria-modal","id"].forEach((U,F)=>{ms(V[F])?N.removeAttribute(U):N.setAttribute(U,V[F])})},{immediate:!0})),H!==N&&mo(H)&&["role","aria-label","aria-modal","id"].forEach(V=>{H.removeAttribute(V)})},{immediate:!0}),we(()=>n.visible,E,{immediate:!0})}),tr(()=>{A==null||A(),A=void 0}),t({popperContentRef:d,popperInstanceRef:p,updatePopper:P,contentStyle:w}),(L,O)=>(G(),ce("div",ei({ref_key:"contentRef",ref:d},T(b),{style:T(w),class:T(x),tabindex:"-1",onMouseenter:O[0]||(O[0]=N=>L.$emit("mouseenter",N)),onMouseleave:O[1]||(O[1]=N=>L.$emit("mouseleave",N))}),[Z(T(mA),{trapped:T(a),"trap-on-focus-in":!0,"focus-trap-el":T(d),"focus-start-el":T(i),onFocusAfterTrapped:T(s),onFocusAfterReleased:T(o),onFocusin:T(l),onFocusoutPrevented:T(u),onReleaseRequested:T(f)},{default:j(()=>[Ce(L.$slots,"default")]),_:3},8,["trapped","focus-trap-el","focus-start-el","onFocusAfterTrapped","onFocusAfterReleased","onFocusin","onFocusoutPrevented","onReleaseRequested"])],16))}});var dz=Ke(cz,[["__file","content.vue"]]);const hz=Yt(OH),Yy=Symbol("elTooltip"),md=Je({...d4,...yA,appendTo:{type:Be([String,Object])},content:{type:String,default:""},rawContent:{type:Boolean,default:!1},persistent:Boolean,ariaLabel:String,visible:{type:Be(Boolean),default:null},transition:String,teleported:{type:Boolean,default:!0},disabled:Boolean}),_A=Je({...vA,disabled:Boolean,trigger:{type:Be([String,Array]),default:"hover"},triggerKeys:{type:Be(Array),default:()=>[hr.enter,hr.space]}}),{useModelToggleProps:vz,useModelToggleEmits:pz,useModelToggle:gz}=BM("visible"),mz=Je({...cA,...vz,...md,..._A,...dA,showArrow:{type:Boolean,default:!0}}),yz=[...pz,"before-show","before-hide","show","hide","open","close"],_z=(e,t)=>_e(e)?e.includes(t):e===t,Oo=(e,t,r)=>n=>{_z(T(e),t)&&r(n)},bz=ie({name:"ElTooltipTrigger"}),wz=ie({...bz,props:_A,setup(e,{expose:t}){const r=e,n=Oe("tooltip"),{controlled:i,id:a,open:o,onOpen:s,onClose:l,onToggle:u}=Le(Yy,void 0),f=$(null),c=()=>{if(T(i)||r.disabled)return!0},h=wn(r,"trigger"),d=di(c,Oo(h,"hover",s)),v=di(c,Oo(h,"hover",l)),p=di(c,Oo(h,"click",b=>{b.button===0&&u(b)})),m=di(c,Oo(h,"focus",s)),g=di(c,Oo(h,"focus",l)),y=di(c,Oo(h,"contextmenu",b=>{b.preventDefault(),u(b)})),_=di(c,b=>{const{code:x}=b;r.triggerKeys.includes(x)&&(b.preventDefault(),u(b))});return t({triggerRef:f}),(b,x)=>(G(),de(T(zH),{id:T(a),"virtual-ref":b.virtualRef,open:T(o),"virtual-triggering":b.virtualTriggering,class:re(T(n).e("trigger")),onBlur:T(g),onClick:T(p),onContextmenu:T(y),onFocus:T(m),onMouseenter:T(d),onMouseleave:T(v),onKeydown:T(_)},{default:j(()=>[Ce(b.$slots,"default")]),_:3},8,["id","virtual-ref","open","virtual-triggering","class","onBlur","onClick","onContextmenu","onFocus","onMouseenter","onMouseleave","onKeydown"]))}});var Sz=Ke(wz,[["__file","trigger.vue"]]);const xz=ie({name:"ElTooltipContent",inheritAttrs:!1}),Cz=ie({...xz,props:md,setup(e,{expose:t}){const r=e,{selector:n}=QM(),i=Oe("tooltip"),a=$(null),o=$(!1),{controlled:s,id:l,open:u,trigger:f,onClose:c,onOpen:h,onShow:d,onHide:v,onBeforeShow:p,onBeforeHide:m}=Le(Yy,void 0),g=k(()=>r.transition||`${i.namespace.value}-fade-in-linear`),y=k(()=>r.persistent);tr(()=>{o.value=!0});const _=k(()=>T(y)?!0:T(u)),b=k(()=>r.disabled?!1:T(u)),x=k(()=>r.appendTo||n.value),w=k(()=>{var V;return(V=r.style)!=null?V:{}}),S=k(()=>!T(u)),C=()=>{v()},M=()=>{if(T(s))return!0},A=di(M,()=>{r.enterable&&T(f)==="hover"&&h()}),P=di(M,()=>{T(f)==="hover"&&c()}),E=()=>{var V,U;(U=(V=a.value)==null?void 0:V.updatePopper)==null||U.call(V),p==null||p()},L=()=>{m==null||m()},O=()=>{d(),H=ER(k(()=>{var V;return(V=a.value)==null?void 0:V.popperContentRef}),()=>{if(T(s))return;T(f)!=="hover"&&c()})},N=()=>{r.virtualTriggering||c()};let H;return we(()=>T(u),V=>{V||H==null||H()},{flush:"post"}),we(()=>r.content,()=>{var V,U;(U=(V=a.value)==null?void 0:V.updatePopper)==null||U.call(V)}),t({contentRef:a}),(V,U)=>(G(),de(MT,{disabled:!V.teleported,to:T(x)},[Z(ti,{name:T(g),onAfterLeave:C,onBeforeEnter:E,onAfterEnter:O,onBeforeLeave:L},{default:j(()=>[T(_)?qt((G(),de(T(dz),ei({key:0,id:T(l),ref_key:"contentRef",ref:a},V.$attrs,{"aria-label":V.ariaLabel,"aria-hidden":T(S),"boundaries-padding":V.boundariesPadding,"fallback-placements":V.fallbackPlacements,"gpu-acceleration":V.gpuAcceleration,offset:V.offset,placement:V.placement,"popper-options":V.popperOptions,strategy:V.strategy,effect:V.effect,enterable:V.enterable,pure:V.pure,"popper-class":V.popperClass,"popper-style":[V.popperStyle,T(w)],"reference-el":V.referenceEl,"trigger-target-el":V.triggerTargetEl,visible:T(b),"z-index":V.zIndex,onMouseenter:T(A),onMouseleave:T(P),onBlur:N,onClose:T(c)}),{default:j(()=>[o.value?Ae("v-if",!0):Ce(V.$slots,"default",{key:0})]),_:3},16,["id","aria-label","aria-hidden","boundaries-padding","fallback-placements","gpu-acceleration","offset","placement","popper-options","strategy","effect","enterable","pure","popper-class","popper-style","reference-el","trigger-target-el","visible","z-index","onMouseenter","onMouseleave","onClose"])),[[Kn,T(b)]]):Ae("v-if",!0)]),_:3},8,["name"])],8,["disabled","to"]))}});var Tz=Ke(Cz,[["__file","content.vue"]]);const Mz=["innerHTML"],Az={key:1},Pz=ie({name:"ElTooltip"}),Ez=ie({...Pz,props:mz,emits:yz,setup(e,{expose:t,emit:r}){const n=e;c4();const i=xu(),a=$(),o=$(),s=()=>{var g;const y=T(a);y&&((g=y.popperInstanceRef)==null||g.update())},l=$(!1),u=$(),{show:f,hide:c,hasUpdateHandler:h}=gz({indicator:l,toggleReason:u}),{onOpen:d,onClose:v}=h4({showAfter:wn(n,"showAfter"),hideAfter:wn(n,"hideAfter"),autoClose:wn(n,"autoClose"),open:f,close:c}),p=k(()=>zr(n.visible)&&!h.value);Dt(Yy,{controlled:p,id:i,open:Gu(l),trigger:wn(n,"trigger"),onOpen:g=>{d(g)},onClose:g=>{v(g)},onToggle:g=>{T(l)?v(g):d(g)},onShow:()=>{r("show",u.value)},onHide:()=>{r("hide",u.value)},onBeforeShow:()=>{r("before-show",u.value)},onBeforeHide:()=>{r("before-hide",u.value)},updatePopper:s}),we(()=>n.disabled,g=>{g&&l.value&&(l.value=!1)});const m=g=>{var y,_;const b=(_=(y=o.value)==null?void 0:y.contentRef)==null?void 0:_.popperContentRef,x=(g==null?void 0:g.relatedTarget)||document.activeElement;return b&&b.contains(x)};return pT(()=>l.value&&c()),t({popperRef:a,contentRef:o,isFocusInsideContent:m,updatePopper:s,onOpen:d,onClose:v,hide:c}),(g,y)=>(G(),de(T(hz),{ref_key:"popperRef",ref:a,role:g.role},{default:j(()=>[Z(Sz,{disabled:g.disabled,trigger:g.trigger,"trigger-keys":g.triggerKeys,"virtual-ref":g.virtualRef,"virtual-triggering":g.virtualTriggering},{default:j(()=>[g.$slots.default?Ce(g.$slots,"default",{key:0}):Ae("v-if",!0)]),_:3},8,["disabled","trigger","trigger-keys","virtual-ref","virtual-triggering"]),Z(Tz,{ref_key:"contentRef",ref:o,"aria-label":g.ariaLabel,"boundaries-padding":g.boundariesPadding,content:g.content,disabled:g.disabled,effect:g.effect,enterable:g.enterable,"fallback-placements":g.fallbackPlacements,"hide-after":g.hideAfter,"gpu-acceleration":g.gpuAcceleration,offset:g.offset,persistent:g.persistent,"popper-class":g.popperClass,"popper-style":g.popperStyle,placement:g.placement,"popper-options":g.popperOptions,pure:g.pure,"raw-content":g.rawContent,"reference-el":g.referenceEl,"trigger-target-el":g.triggerTargetEl,"show-after":g.showAfter,strategy:g.strategy,teleported:g.teleported,transition:g.transition,"virtual-triggering":g.virtualTriggering,"z-index":g.zIndex,"append-to":g.appendTo},{default:j(()=>[Ce(g.$slots,"content",{},()=>[g.rawContent?(G(),ce("span",{key:0,innerHTML:g.content},null,8,Mz)):(G(),ce("span",Az,be(g.content),1))]),g.showArrow?(G(),de(T(NH),{key:0,"arrow-offset":g.arrowOffset},null,8,["arrow-offset"])):Ae("v-if",!0)]),_:3},8,["aria-label","boundaries-padding","content","disabled","effect","enterable","fallback-placements","hide-after","gpu-acceleration","offset","persistent","popper-class","popper-style","placement","popper-options","pure","raw-content","reference-el","trigger-target-el","show-after","strategy","teleported","transition","virtual-triggering","z-index","append-to"])]),_:3},8,["role"]))}});var Lz=Ke(Ez,[["__file","tooltip.vue"]]);const Hs=Yt(Lz),Dz=Je({value:{type:[String,Number],default:""},max:{type:Number,default:99},isDot:Boolean,hidden:Boolean,type:{type:String,values:["primary","success","warning","info","danger"],default:"danger"}}),Iz=["textContent"],Oz=ie({name:"ElBadge"}),Rz=ie({...Oz,props:Dz,setup(e,{expose:t}){const r=e,n=Oe("badge"),i=k(()=>r.isDot?"":Rt(r.value)&&Rt(r.max)?r.max(G(),ce("div",{class:re(T(n).b())},[Ce(a.$slots,"default"),Z(ti,{name:`${T(n).namespace.value}-zoom-in-center`,persisted:""},{default:j(()=>[qt(ee("sup",{class:re([T(n).e("content"),T(n).em("content",a.type),T(n).is("fixed",!!a.$slots.default),T(n).is("dot",a.isDot)]),textContent:be(T(i))},null,10,Iz),[[Kn,!a.hidden&&(T(i)||a.isDot)]])]),_:1},8,["name"])],2))}});var kz=Ke(Rz,[["__file","badge.vue"]]);const Nz=Yt(kz),bA=Symbol("buttonGroupContextKey"),Bz=(e,t)=>{bu({from:"type.text",replacement:"link",version:"3.0.0",scope:"props",ref:"https://element-plus.org/en-US/component/button.html#button-attributes"},k(()=>e.type==="text"));const r=Le(bA,void 0),n=hh("button"),{form:i}=tf(),a=xi(k(()=>r==null?void 0:r.size)),o=vh(),s=$(),l=Rs(),u=k(()=>e.type||(r==null?void 0:r.type)||""),f=k(()=>{var v,p,m;return(m=(p=e.autoInsertSpace)!=null?p:(v=n.value)==null?void 0:v.autoInsertSpace)!=null?m:!1}),c=k(()=>e.tag==="button"?{ariaDisabled:o.value||e.loading,disabled:o.value||e.loading,autofocus:e.autofocus,type:e.nativeType}:{}),h=k(()=>{var v;const p=(v=l.default)==null?void 0:v.call(l);if(f.value&&(p==null?void 0:p.length)===1){const m=p[0];if((m==null?void 0:m.type)===ks){const g=m.children;return new RegExp("^\\p{Unified_Ideograph}{2}$","u").test(g.trim())}}return!1});return{_disabled:o,_size:a,_type:u,_ref:s,_props:c,shouldAddSpace:h,handleClick:v=>{e.nativeType==="reset"&&(i==null||i.resetFields()),t("click",v)}}},pg=["default","primary","success","warning","info","danger","text",""],Fz=["button","submit","reset"],gg=Je({size:dh,disabled:Boolean,type:{type:String,values:pg,default:""},icon:{type:vr},nativeType:{type:String,values:Fz,default:"button"},loading:Boolean,loadingIcon:{type:vr,default:()=>Ly},plain:Boolean,text:Boolean,link:Boolean,bg:Boolean,autofocus:Boolean,round:Boolean,circle:Boolean,color:String,dark:Boolean,autoInsertSpace:{type:Boolean,default:void 0},tag:{type:Be([String,Object]),default:"button"}}),$z={click:e=>e instanceof MouseEvent};function er(e,t){Hz(e)&&(e="100%");var r=zz(e);return e=t===360?e:Math.min(t,Math.max(0,parseFloat(e))),r&&(e=parseInt(String(e*t),10)/100),Math.abs(e-t)<1e-6?1:(t===360?e=(e<0?e%t+t:e%t)/parseFloat(String(t)):e=e%t/parseFloat(String(t)),e)}function Lf(e){return Math.min(1,Math.max(0,e))}function Hz(e){return typeof e=="string"&&e.indexOf(".")!==-1&&parseFloat(e)===1}function zz(e){return typeof e=="string"&&e.indexOf("%")!==-1}function wA(e){return e=parseFloat(e),(isNaN(e)||e<0||e>1)&&(e=1),e}function Df(e){return e<=1?"".concat(Number(e)*100,"%"):e}function Ja(e){return e.length===1?"0"+e:String(e)}function Vz(e,t,r){return{r:er(e,255)*255,g:er(t,255)*255,b:er(r,255)*255}}function b1(e,t,r){e=er(e,255),t=er(t,255),r=er(r,255);var n=Math.max(e,t,r),i=Math.min(e,t,r),a=0,o=0,s=(n+i)/2;if(n===i)o=0,a=0;else{var l=n-i;switch(o=s>.5?l/(2-n-i):l/(n+i),n){case e:a=(t-r)/l+(t1&&(r-=1),r<1/6?e+(t-e)*(6*r):r<1/2?t:r<2/3?e+(t-e)*(2/3-r)*6:e}function Wz(e,t,r){var n,i,a;if(e=er(e,360),t=er(t,100),r=er(r,100),t===0)i=r,a=r,n=r;else{var o=r<.5?r*(1+t):r+t-r*t,s=2*r-o;n=ov(s,o,e+1/3),i=ov(s,o,e),a=ov(s,o,e-1/3)}return{r:n*255,g:i*255,b:a*255}}function w1(e,t,r){e=er(e,255),t=er(t,255),r=er(r,255);var n=Math.max(e,t,r),i=Math.min(e,t,r),a=0,o=n,s=n-i,l=n===0?0:s/n;if(n===i)a=0;else{switch(n){case e:a=(t-r)/s+(t>16,g:(e&65280)>>8,b:e&255}}var mg={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",goldenrod:"#daa520",gold:"#ffd700",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavenderblush:"#fff0f5",lavender:"#e6e6fa",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};function qz(e){var t={r:0,g:0,b:0},r=1,n=null,i=null,a=null,o=!1,s=!1;return typeof e=="string"&&(e=Zz(e)),typeof e=="object"&&(si(e.r)&&si(e.g)&&si(e.b)?(t=Vz(e.r,e.g,e.b),o=!0,s=String(e.r).substr(-1)==="%"?"prgb":"rgb"):si(e.h)&&si(e.s)&&si(e.v)?(n=Df(e.s),i=Df(e.v),t=Gz(e.h,n,i),o=!0,s="hsv"):si(e.h)&&si(e.s)&&si(e.l)&&(n=Df(e.s),a=Df(e.l),t=Wz(e.h,n,a),o=!0,s="hsl"),Object.prototype.hasOwnProperty.call(e,"a")&&(r=e.a)),r=wA(r),{ok:o,format:e.format||s,r:Math.min(255,Math.max(t.r,0)),g:Math.min(255,Math.max(t.g,0)),b:Math.min(255,Math.max(t.b,0)),a:r}}var Kz="[-\\+]?\\d+%?",Xz="[-\\+]?\\d*\\.\\d+%?",Qi="(?:".concat(Xz,")|(?:").concat(Kz,")"),sv="[\\s|\\(]+(".concat(Qi,")[,|\\s]+(").concat(Qi,")[,|\\s]+(").concat(Qi,")\\s*\\)?"),lv="[\\s|\\(]+(".concat(Qi,")[,|\\s]+(").concat(Qi,")[,|\\s]+(").concat(Qi,")[,|\\s]+(").concat(Qi,")\\s*\\)?"),gn={CSS_UNIT:new RegExp(Qi),rgb:new RegExp("rgb"+sv),rgba:new RegExp("rgba"+lv),hsl:new RegExp("hsl"+sv),hsla:new RegExp("hsla"+lv),hsv:new RegExp("hsv"+sv),hsva:new RegExp("hsva"+lv),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/};function Zz(e){if(e=e.trim().toLowerCase(),e.length===0)return!1;var t=!1;if(mg[e])e=mg[e],t=!0;else if(e==="transparent")return{r:0,g:0,b:0,a:0,format:"name"};var r=gn.rgb.exec(e);return r?{r:r[1],g:r[2],b:r[3]}:(r=gn.rgba.exec(e),r?{r:r[1],g:r[2],b:r[3],a:r[4]}:(r=gn.hsl.exec(e),r?{h:r[1],s:r[2],l:r[3]}:(r=gn.hsla.exec(e),r?{h:r[1],s:r[2],l:r[3],a:r[4]}:(r=gn.hsv.exec(e),r?{h:r[1],s:r[2],v:r[3]}:(r=gn.hsva.exec(e),r?{h:r[1],s:r[2],v:r[3],a:r[4]}:(r=gn.hex8.exec(e),r?{r:kr(r[1]),g:kr(r[2]),b:kr(r[3]),a:x1(r[4]),format:t?"name":"hex8"}:(r=gn.hex6.exec(e),r?{r:kr(r[1]),g:kr(r[2]),b:kr(r[3]),format:t?"name":"hex"}:(r=gn.hex4.exec(e),r?{r:kr(r[1]+r[1]),g:kr(r[2]+r[2]),b:kr(r[3]+r[3]),a:x1(r[4]+r[4]),format:t?"name":"hex8"}:(r=gn.hex3.exec(e),r?{r:kr(r[1]+r[1]),g:kr(r[2]+r[2]),b:kr(r[3]+r[3]),format:t?"name":"hex"}:!1)))))))))}function si(e){return!!gn.CSS_UNIT.exec(String(e))}var SA=function(){function e(t,r){t===void 0&&(t=""),r===void 0&&(r={});var n;if(t instanceof e)return t;typeof t=="number"&&(t=jz(t)),this.originalInput=t;var i=qz(t);this.originalInput=t,this.r=i.r,this.g=i.g,this.b=i.b,this.a=i.a,this.roundA=Math.round(100*this.a)/100,this.format=(n=r.format)!==null&&n!==void 0?n:i.format,this.gradientType=r.gradientType,this.r<1&&(this.r=Math.round(this.r)),this.g<1&&(this.g=Math.round(this.g)),this.b<1&&(this.b=Math.round(this.b)),this.isValid=i.ok}return e.prototype.isDark=function(){return this.getBrightness()<128},e.prototype.isLight=function(){return!this.isDark()},e.prototype.getBrightness=function(){var t=this.toRgb();return(t.r*299+t.g*587+t.b*114)/1e3},e.prototype.getLuminance=function(){var t=this.toRgb(),r,n,i,a=t.r/255,o=t.g/255,s=t.b/255;return a<=.03928?r=a/12.92:r=Math.pow((a+.055)/1.055,2.4),o<=.03928?n=o/12.92:n=Math.pow((o+.055)/1.055,2.4),s<=.03928?i=s/12.92:i=Math.pow((s+.055)/1.055,2.4),.2126*r+.7152*n+.0722*i},e.prototype.getAlpha=function(){return this.a},e.prototype.setAlpha=function(t){return this.a=wA(t),this.roundA=Math.round(100*this.a)/100,this},e.prototype.isMonochrome=function(){var t=this.toHsl().s;return t===0},e.prototype.toHsv=function(){var t=w1(this.r,this.g,this.b);return{h:t.h*360,s:t.s,v:t.v,a:this.a}},e.prototype.toHsvString=function(){var t=w1(this.r,this.g,this.b),r=Math.round(t.h*360),n=Math.round(t.s*100),i=Math.round(t.v*100);return this.a===1?"hsv(".concat(r,", ").concat(n,"%, ").concat(i,"%)"):"hsva(".concat(r,", ").concat(n,"%, ").concat(i,"%, ").concat(this.roundA,")")},e.prototype.toHsl=function(){var t=b1(this.r,this.g,this.b);return{h:t.h*360,s:t.s,l:t.l,a:this.a}},e.prototype.toHslString=function(){var t=b1(this.r,this.g,this.b),r=Math.round(t.h*360),n=Math.round(t.s*100),i=Math.round(t.l*100);return this.a===1?"hsl(".concat(r,", ").concat(n,"%, ").concat(i,"%)"):"hsla(".concat(r,", ").concat(n,"%, ").concat(i,"%, ").concat(this.roundA,")")},e.prototype.toHex=function(t){return t===void 0&&(t=!1),S1(this.r,this.g,this.b,t)},e.prototype.toHexString=function(t){return t===void 0&&(t=!1),"#"+this.toHex(t)},e.prototype.toHex8=function(t){return t===void 0&&(t=!1),Uz(this.r,this.g,this.b,this.a,t)},e.prototype.toHex8String=function(t){return t===void 0&&(t=!1),"#"+this.toHex8(t)},e.prototype.toRgb=function(){return{r:Math.round(this.r),g:Math.round(this.g),b:Math.round(this.b),a:this.a}},e.prototype.toRgbString=function(){var t=Math.round(this.r),r=Math.round(this.g),n=Math.round(this.b);return this.a===1?"rgb(".concat(t,", ").concat(r,", ").concat(n,")"):"rgba(".concat(t,", ").concat(r,", ").concat(n,", ").concat(this.roundA,")")},e.prototype.toPercentageRgb=function(){var t=function(r){return"".concat(Math.round(er(r,255)*100),"%")};return{r:t(this.r),g:t(this.g),b:t(this.b),a:this.a}},e.prototype.toPercentageRgbString=function(){var t=function(r){return Math.round(er(r,255)*100)};return this.a===1?"rgb(".concat(t(this.r),"%, ").concat(t(this.g),"%, ").concat(t(this.b),"%)"):"rgba(".concat(t(this.r),"%, ").concat(t(this.g),"%, ").concat(t(this.b),"%, ").concat(this.roundA,")")},e.prototype.toName=function(){if(this.a===0)return"transparent";if(this.a<1)return!1;for(var t="#"+S1(this.r,this.g,this.b,!1),r=0,n=Object.entries(mg);r=0,a=!r&&i&&(t.startsWith("hex")||t==="name");return a?t==="name"&&this.a===0?this.toName():this.toRgbString():(t==="rgb"&&(n=this.toRgbString()),t==="prgb"&&(n=this.toPercentageRgbString()),(t==="hex"||t==="hex6")&&(n=this.toHexString()),t==="hex3"&&(n=this.toHexString(!0)),t==="hex4"&&(n=this.toHex8String(!0)),t==="hex8"&&(n=this.toHex8String()),t==="name"&&(n=this.toName()),t==="hsl"&&(n=this.toHslString()),t==="hsv"&&(n=this.toHsvString()),n||this.toHexString())},e.prototype.toNumber=function(){return(Math.round(this.r)<<16)+(Math.round(this.g)<<8)+Math.round(this.b)},e.prototype.clone=function(){return new e(this.toString())},e.prototype.lighten=function(t){t===void 0&&(t=10);var r=this.toHsl();return r.l+=t/100,r.l=Lf(r.l),new e(r)},e.prototype.brighten=function(t){t===void 0&&(t=10);var r=this.toRgb();return r.r=Math.max(0,Math.min(255,r.r-Math.round(255*-(t/100)))),r.g=Math.max(0,Math.min(255,r.g-Math.round(255*-(t/100)))),r.b=Math.max(0,Math.min(255,r.b-Math.round(255*-(t/100)))),new e(r)},e.prototype.darken=function(t){t===void 0&&(t=10);var r=this.toHsl();return r.l-=t/100,r.l=Lf(r.l),new e(r)},e.prototype.tint=function(t){return t===void 0&&(t=10),this.mix("white",t)},e.prototype.shade=function(t){return t===void 0&&(t=10),this.mix("black",t)},e.prototype.desaturate=function(t){t===void 0&&(t=10);var r=this.toHsl();return r.s-=t/100,r.s=Lf(r.s),new e(r)},e.prototype.saturate=function(t){t===void 0&&(t=10);var r=this.toHsl();return r.s+=t/100,r.s=Lf(r.s),new e(r)},e.prototype.greyscale=function(){return this.desaturate(100)},e.prototype.spin=function(t){var r=this.toHsl(),n=(r.h+t)%360;return r.h=n<0?360+n:n,new e(r)},e.prototype.mix=function(t,r){r===void 0&&(r=50);var n=this.toRgb(),i=new e(t).toRgb(),a=r/100,o={r:(i.r-n.r)*a+n.r,g:(i.g-n.g)*a+n.g,b:(i.b-n.b)*a+n.b,a:(i.a-n.a)*a+n.a};return new e(o)},e.prototype.analogous=function(t,r){t===void 0&&(t=6),r===void 0&&(r=30);var n=this.toHsl(),i=360/r,a=[this];for(n.h=(n.h-(i*t>>1)+720)%360;--t;)n.h=(n.h+i)%360,a.push(new e(n));return a},e.prototype.complement=function(){var t=this.toHsl();return t.h=(t.h+180)%360,new e(t)},e.prototype.monochromatic=function(t){t===void 0&&(t=6);for(var r=this.toHsv(),n=r.h,i=r.s,a=r.v,o=[],s=1/t;t--;)o.push(new e({h:n,s:i,v:a})),a=(a+s)%1;return o},e.prototype.splitcomplement=function(){var t=this.toHsl(),r=t.h;return[this,new e({h:(r+72)%360,s:t.s,l:t.l}),new e({h:(r+216)%360,s:t.s,l:t.l})]},e.prototype.onBackground=function(t){var r=this.toRgb(),n=new e(t).toRgb();return new e({r:n.r+(r.r-n.r)*r.a,g:n.g+(r.g-n.g)*r.a,b:n.b+(r.b-n.b)*r.a})},e.prototype.triad=function(){return this.polyad(3)},e.prototype.tetrad=function(){return this.polyad(4)},e.prototype.polyad=function(t){for(var r=this.toHsl(),n=r.h,i=[this],a=360/t,o=1;o{let n={};const i=e.color;if(i){const a=new SA(i),o=e.dark?a.tint(20).toString():Oi(a,20);if(e.plain)n=r.cssVarBlock({"bg-color":e.dark?Oi(a,90):a.tint(90).toString(),"text-color":i,"border-color":e.dark?Oi(a,50):a.tint(50).toString(),"hover-text-color":`var(${r.cssVarName("color-white")})`,"hover-bg-color":i,"hover-border-color":i,"active-bg-color":o,"active-text-color":`var(${r.cssVarName("color-white")})`,"active-border-color":o}),t.value&&(n[r.cssVarBlockName("disabled-bg-color")]=e.dark?Oi(a,90):a.tint(90).toString(),n[r.cssVarBlockName("disabled-text-color")]=e.dark?Oi(a,50):a.tint(50).toString(),n[r.cssVarBlockName("disabled-border-color")]=e.dark?Oi(a,80):a.tint(80).toString());else{const s=e.dark?Oi(a,30):a.tint(30).toString(),l=a.isDark()?`var(${r.cssVarName("color-white")})`:`var(${r.cssVarName("color-black")})`;if(n=r.cssVarBlock({"bg-color":i,"text-color":l,"border-color":i,"hover-bg-color":s,"hover-text-color":l,"hover-border-color":s,"active-bg-color":o,"active-border-color":o}),t.value){const u=e.dark?Oi(a,50):a.tint(50).toString();n[r.cssVarBlockName("disabled-bg-color")]=u,n[r.cssVarBlockName("disabled-text-color")]=e.dark?"rgba(255, 255, 255, 0.5)":`var(${r.cssVarName("color-white")})`,n[r.cssVarBlockName("disabled-border-color")]=u}}}return n})}const Jz=ie({name:"ElButton"}),e8=ie({...Jz,props:gg,emits:$z,setup(e,{expose:t,emit:r}){const n=e,i=Qz(n),a=Oe("button"),{_ref:o,_size:s,_type:l,_disabled:u,_props:f,shouldAddSpace:c,handleClick:h}=Bz(n,r);return t({ref:o,size:s,type:l,disabled:u,shouldAddSpace:c}),(d,v)=>(G(),de(Vt(d.tag),ei({ref_key:"_ref",ref:o},T(f),{class:[T(a).b(),T(a).m(T(l)),T(a).m(T(s)),T(a).is("disabled",T(u)),T(a).is("loading",d.loading),T(a).is("plain",d.plain),T(a).is("round",d.round),T(a).is("circle",d.circle),T(a).is("text",d.text),T(a).is("link",d.link),T(a).is("has-bg",d.bg)],style:T(i),onClick:T(h)}),{default:j(()=>[d.loading?(G(),ce(ft,{key:0},[d.$slots.loading?Ce(d.$slots,"loading",{key:0}):(G(),de(T(Nt),{key:1,class:re(T(a).is("loading"))},{default:j(()=>[(G(),de(Vt(d.loadingIcon)))]),_:1},8,["class"]))],64)):d.icon||d.$slots.icon?(G(),de(T(Nt),{key:1},{default:j(()=>[d.icon?(G(),de(Vt(d.icon),{key:0})):Ce(d.$slots,"icon",{key:1})]),_:3})):Ae("v-if",!0),d.$slots.default?(G(),ce("span",{key:2,class:re({[T(a).em("text","expand")]:T(c)})},[Ce(d.$slots,"default")],2)):Ae("v-if",!0)]),_:3},16,["class","style","onClick"]))}});var t8=Ke(e8,[["__file","button.vue"]]);const r8={size:gg.size,type:gg.type},n8=ie({name:"ElButtonGroup"}),i8=ie({...n8,props:r8,setup(e){const t=e;Dt(bA,Ln({size:wn(t,"size"),type:wn(t,"type")}));const r=Oe("button");return(n,i)=>(G(),ce("div",{class:re(`${T(r).b("group")}`)},[Ce(n.$slots,"default")],2))}});var xA=Ke(i8,[["__file","button-group.vue"]]);const yg=Yt(t8,{ButtonGroup:xA});pa(xA);var a8=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};const Wi=new Map;let C1;At&&(document.addEventListener("mousedown",e=>C1=e),document.addEventListener("mouseup",e=>{for(const t of Wi.values())for(const{documentHandler:r}of t)r(e,C1)}));function T1(e,t){let r=[];return Array.isArray(t.arg)?r=t.arg:mo(t.arg)&&r.push(t.arg),function(n,i){const a=t.instance.popperRef,o=n.target,s=i==null?void 0:i.target,l=!t||!t.instance,u=!o||!s,f=e.contains(o)||e.contains(s),c=e===o,h=r.length&&r.some(v=>v==null?void 0:v.contains(o))||r.length&&r.includes(s),d=a&&(a.contains(o)||a.contains(s));l||u||f||c||h||d||t.value(n,i)}}const CA={beforeMount(e,t){Wi.has(e)||Wi.set(e,[]),Wi.get(e).push({documentHandler:T1(e,t),bindingFn:t.value})},updated(e,t){Wi.has(e)||Wi.set(e,[]);const r=Wi.get(e),n=r.findIndex(a=>a.bindingFn===t.oldValue),i={documentHandler:T1(e,t),bindingFn:t.value};n>=0?r.splice(n,1,i):r.push(i)},unmounted(e){Wi.delete(e)}};var M1=!1,qa,_g,bg,Rc,kc,TA,Nc,wg,Sg,xg,MA,Cg,Tg,AA,PA;function yr(){if(!M1){M1=!0;var e=navigator.userAgent,t=/(?:MSIE.(\d+\.\d+))|(?:(?:Firefox|GranParadiso|Iceweasel).(\d+\.\d+))|(?:Opera(?:.+Version.|.)(\d+\.\d+))|(?:AppleWebKit.(\d+(?:\.\d+)?))|(?:Trident\/\d+\.\d+.*rv:(\d+\.\d+))/.exec(e),r=/(Mac OS X)|(Windows)|(Linux)/.exec(e);if(Cg=/\b(iPhone|iP[ao]d)/.exec(e),Tg=/\b(iP[ao]d)/.exec(e),xg=/Android/i.exec(e),AA=/FBAN\/\w+;/i.exec(e),PA=/Mobile/i.exec(e),MA=!!/Win64/.exec(e),t){qa=t[1]?parseFloat(t[1]):t[5]?parseFloat(t[5]):NaN,qa&&document&&document.documentMode&&(qa=document.documentMode);var n=/(?:Trident\/(\d+.\d+))/.exec(e);TA=n?parseFloat(n[1])+4:qa,_g=t[2]?parseFloat(t[2]):NaN,bg=t[3]?parseFloat(t[3]):NaN,Rc=t[4]?parseFloat(t[4]):NaN,Rc?(t=/(?:Chrome\/(\d+\.\d+))/.exec(e),kc=t&&t[1]?parseFloat(t[1]):NaN):kc=NaN}else qa=_g=bg=kc=Rc=NaN;if(r){if(r[1]){var i=/(?:Mac OS X (\d+(?:[._]\d+)?))/.exec(e);Nc=i?parseFloat(i[1].replace("_",".")):!0}else Nc=!1;wg=!!r[2],Sg=!!r[3]}else Nc=wg=Sg=!1}}var Mg={ie:function(){return yr()||qa},ieCompatibilityMode:function(){return yr()||TA>qa},ie64:function(){return Mg.ie()&&MA},firefox:function(){return yr()||_g},opera:function(){return yr()||bg},webkit:function(){return yr()||Rc},safari:function(){return Mg.webkit()},chrome:function(){return yr()||kc},windows:function(){return yr()||wg},osx:function(){return yr()||Nc},linux:function(){return yr()||Sg},iphone:function(){return yr()||Cg},mobile:function(){return yr()||Cg||Tg||xg||PA},nativeApp:function(){return yr()||AA},android:function(){return yr()||xg},ipad:function(){return yr()||Tg}},o8=Mg,If=!!(typeof window<"u"&&window.document&&window.document.createElement),s8={canUseDOM:If,canUseWorkers:typeof Worker<"u",canUseEventListeners:If&&!!(window.addEventListener||window.attachEvent),canUseViewport:If&&!!window.screen,isInWorker:!If},EA=s8,LA;EA.canUseDOM&&(LA=document.implementation&&document.implementation.hasFeature&&document.implementation.hasFeature("","")!==!0);function l8(e,t){if(!EA.canUseDOM||t&&!("addEventListener"in document))return!1;var r="on"+e,n=r in document;if(!n){var i=document.createElement("div");i.setAttribute(r,"return;"),n=typeof i[r]=="function"}return!n&&LA&&e==="wheel"&&(n=document.implementation.hasFeature("Events.wheel","3.0")),n}var u8=l8,A1=10,P1=40,E1=800;function DA(e){var t=0,r=0,n=0,i=0;return"detail"in e&&(r=e.detail),"wheelDelta"in e&&(r=-e.wheelDelta/120),"wheelDeltaY"in e&&(r=-e.wheelDeltaY/120),"wheelDeltaX"in e&&(t=-e.wheelDeltaX/120),"axis"in e&&e.axis===e.HORIZONTAL_AXIS&&(t=r,r=0),n=t*A1,i=r*A1,"deltaY"in e&&(i=e.deltaY),"deltaX"in e&&(n=e.deltaX),(n||i)&&e.deltaMode&&(e.deltaMode==1?(n*=P1,i*=P1):(n*=E1,i*=E1)),n&&!t&&(t=n<1?-1:1),i&&!r&&(r=i<1?-1:1),{spinX:t,spinY:r,pixelX:n,pixelY:i}}DA.getEventType=function(){return o8.firefox()?"DOMMouseScroll":u8("wheel")?"wheel":"mousewheel"};var f8=DA;/** +`).replace(/\s*\/\/.*$/gm,"").replace(/\n/g,"").trim(),a=new RegExp("(?:^"+r+"$)|(?:^"+i+"$)"),o=new RegExp("^"+r+"$"),s=new RegExp("^"+i+"$"),l=function(b){return b&&b.exact?a:new RegExp("(?:"+t(b)+r+t(b)+")|(?:"+t(b)+i+t(b)+")","g")};l.v4=function(_){return _&&_.exact?o:new RegExp(""+t(_)+r+t(_),"g")},l.v6=function(_){return _&&_.exact?s:new RegExp(""+t(_)+i+t(_),"g")};var u="(?:(?:[a-z]+:)?//)",f="(?:\\S+(?::\\S*)?@)?",c=l.v4().source,h=l.v6().source,d="(?:(?:[a-z\\u00a1-\\uffff0-9][-_]*)*[a-z\\u00a1-\\uffff0-9]+)",v="(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*",p="(?:\\.(?:[a-z\\u00a1-\\uffff]{2,}))",m="(?::\\d{2,5})?",g='(?:[/?#][^\\s"]*)?',y="(?:"+u+"|www\\.)"+f+"(?:localhost|"+c+"|"+h+"|"+d+v+p+")"+m+g;return Mf=new RegExp("(?:^"+y+"$)","i"),Mf},u1={email:/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+\.)+[a-zA-Z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{2,}))$/,hex:/^#?([a-f0-9]{6}|[a-f0-9]{3})$/i},xl={integer:function(t){return xl.number(t)&&parseInt(t,10)===t},float:function(t){return xl.number(t)&&!xl.integer(t)},array:function(t){return Array.isArray(t)},regexp:function(t){if(t instanceof RegExp)return!0;try{return!!new RegExp(t)}catch{return!1}},date:function(t){return typeof t.getTime=="function"&&typeof t.getMonth=="function"&&typeof t.getYear=="function"&&!isNaN(t.getTime())},number:function(t){return isNaN(t)?!1:typeof t=="number"},object:function(t){return typeof t=="object"&&!xl.array(t)},method:function(t){return typeof t=="function"},email:function(t){return typeof t=="string"&&t.length<=320&&!!t.match(u1.email)},url:function(t){return typeof t=="string"&&t.length<=2048&&!!t.match(G4())},hex:function(t){return typeof t=="string"&&!!t.match(u1.hex)}},U4=function(t,r,n,i,a){if(t.required&&r===void 0){iA(t,r,n,i,a);return}var o=["integer","float","array","regexp","object","method","email","number","date","url","hex"],s=t.type;o.indexOf(s)>-1?xl[s](r)||i.push(Fr(a.messages.types[s],t.fullField,t.type)):s&&typeof r!==t.type&&i.push(Fr(a.messages.types[s],t.fullField,t.type))},Y4=function(t,r,n,i,a){var o=typeof t.len=="number",s=typeof t.min=="number",l=typeof t.max=="number",u=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,f=r,c=null,h=typeof r=="number",d=typeof r=="string",v=Array.isArray(r);if(h?c="number":d?c="string":v&&(c="array"),!c)return!1;v&&(f=r.length),d&&(f=r.replace(u,"_").length),o?f!==t.len&&i.push(Fr(a.messages[c].len,t.fullField,t.len)):s&&!l&&ft.max?i.push(Fr(a.messages[c].max,t.fullField,t.max)):s&&l&&(ft.max)&&i.push(Fr(a.messages[c].range,t.fullField,t.min,t.max))},Ro="enum",j4=function(t,r,n,i,a){t[Ro]=Array.isArray(t[Ro])?t[Ro]:[],t[Ro].indexOf(r)===-1&&i.push(Fr(a.messages[Ro],t.fullField,t[Ro].join(", ")))},q4=function(t,r,n,i,a){if(t.pattern){if(t.pattern instanceof RegExp)t.pattern.lastIndex=0,t.pattern.test(r)||i.push(Fr(a.messages.pattern.mismatch,t.fullField,r,t.pattern));else if(typeof t.pattern=="string"){var o=new RegExp(t.pattern);o.test(r)||i.push(Fr(a.messages.pattern.mismatch,t.fullField,r,t.pattern))}}},Xe={required:iA,whitespace:W4,type:U4,range:Y4,enum:j4,pattern:q4},K4=function(t,r,n,i,a){var o=[],s=t.required||!t.required&&i.hasOwnProperty(t.field);if(s){if(Ut(r,"string")&&!t.required)return n();Xe.required(t,r,i,o,a,"string"),Ut(r,"string")||(Xe.type(t,r,i,o,a),Xe.range(t,r,i,o,a),Xe.pattern(t,r,i,o,a),t.whitespace===!0&&Xe.whitespace(t,r,i,o,a))}n(o)},X4=function(t,r,n,i,a){var o=[],s=t.required||!t.required&&i.hasOwnProperty(t.field);if(s){if(Ut(r)&&!t.required)return n();Xe.required(t,r,i,o,a),r!==void 0&&Xe.type(t,r,i,o,a)}n(o)},Z4=function(t,r,n,i,a){var o=[],s=t.required||!t.required&&i.hasOwnProperty(t.field);if(s){if(r===""&&(r=void 0),Ut(r)&&!t.required)return n();Xe.required(t,r,i,o,a),r!==void 0&&(Xe.type(t,r,i,o,a),Xe.range(t,r,i,o,a))}n(o)},Q4=function(t,r,n,i,a){var o=[],s=t.required||!t.required&&i.hasOwnProperty(t.field);if(s){if(Ut(r)&&!t.required)return n();Xe.required(t,r,i,o,a),r!==void 0&&Xe.type(t,r,i,o,a)}n(o)},J4=function(t,r,n,i,a){var o=[],s=t.required||!t.required&&i.hasOwnProperty(t.field);if(s){if(Ut(r)&&!t.required)return n();Xe.required(t,r,i,o,a),Ut(r)||Xe.type(t,r,i,o,a)}n(o)},eH=function(t,r,n,i,a){var o=[],s=t.required||!t.required&&i.hasOwnProperty(t.field);if(s){if(Ut(r)&&!t.required)return n();Xe.required(t,r,i,o,a),r!==void 0&&(Xe.type(t,r,i,o,a),Xe.range(t,r,i,o,a))}n(o)},tH=function(t,r,n,i,a){var o=[],s=t.required||!t.required&&i.hasOwnProperty(t.field);if(s){if(Ut(r)&&!t.required)return n();Xe.required(t,r,i,o,a),r!==void 0&&(Xe.type(t,r,i,o,a),Xe.range(t,r,i,o,a))}n(o)},rH=function(t,r,n,i,a){var o=[],s=t.required||!t.required&&i.hasOwnProperty(t.field);if(s){if(r==null&&!t.required)return n();Xe.required(t,r,i,o,a,"array"),r!=null&&(Xe.type(t,r,i,o,a),Xe.range(t,r,i,o,a))}n(o)},nH=function(t,r,n,i,a){var o=[],s=t.required||!t.required&&i.hasOwnProperty(t.field);if(s){if(Ut(r)&&!t.required)return n();Xe.required(t,r,i,o,a),r!==void 0&&Xe.type(t,r,i,o,a)}n(o)},iH="enum",aH=function(t,r,n,i,a){var o=[],s=t.required||!t.required&&i.hasOwnProperty(t.field);if(s){if(Ut(r)&&!t.required)return n();Xe.required(t,r,i,o,a),r!==void 0&&Xe[iH](t,r,i,o,a)}n(o)},oH=function(t,r,n,i,a){var o=[],s=t.required||!t.required&&i.hasOwnProperty(t.field);if(s){if(Ut(r,"string")&&!t.required)return n();Xe.required(t,r,i,o,a),Ut(r,"string")||Xe.pattern(t,r,i,o,a)}n(o)},sH=function(t,r,n,i,a){var o=[],s=t.required||!t.required&&i.hasOwnProperty(t.field);if(s){if(Ut(r,"date")&&!t.required)return n();if(Xe.required(t,r,i,o,a),!Ut(r,"date")){var l;r instanceof Date?l=r:l=new Date(r),Xe.type(t,l,i,o,a),l&&Xe.range(t,l.getTime(),i,o,a)}}n(o)},lH=function(t,r,n,i,a){var o=[],s=Array.isArray(r)?"array":typeof r;Xe.required(t,r,i,o,a,s),n(o)},nv=function(t,r,n,i,a){var o=t.type,s=[],l=t.required||!t.required&&i.hasOwnProperty(t.field);if(l){if(Ut(r,o)&&!t.required)return n();Xe.required(t,r,i,s,a,o),Ut(r,o)||Xe.type(t,r,i,s,a)}n(s)},uH=function(t,r,n,i,a){var o=[],s=t.required||!t.required&&i.hasOwnProperty(t.field);if(s){if(Ut(r)&&!t.required)return n();Xe.required(t,r,i,o,a)}n(o)},Hl={string:K4,method:X4,number:Z4,boolean:Q4,regexp:J4,integer:eH,float:tH,array:rH,object:nH,enum:aH,pattern:oH,date:sH,url:nv,hex:nv,email:nv,required:lH,any:uH};function hg(){return{default:"Validation error on field %s",required:"%s is required",enum:"%s must be one of %s",whitespace:"%s cannot be empty",date:{format:"%s date %s is invalid for format %s",parse:"%s date could not be parsed, %s is invalid ",invalid:"%s date %s is invalid"},types:{string:"%s is not a %s",method:"%s is not a %s (function)",array:"%s is not an %s",object:"%s is not an %s",number:"%s is not a %s",date:"%s is not a %s",boolean:"%s is not a %s",integer:"%s is not an %s",float:"%s is not a %s",regexp:"%s is not a valid %s",email:"%s is not a valid %s",url:"%s is not a valid %s",hex:"%s is not a valid %s"},string:{len:"%s must be exactly %s characters",min:"%s must be at least %s characters",max:"%s cannot be longer than %s characters",range:"%s must be between %s and %s characters"},number:{len:"%s must equal %s",min:"%s cannot be less than %s",max:"%s cannot be greater than %s",range:"%s must be between %s and %s"},array:{len:"%s must be exactly %s in length",min:"%s cannot be less than %s in length",max:"%s cannot be greater than %s in length",range:"%s must be between %s and %s in length"},pattern:{mismatch:"%s value %s does not match pattern %s"},clone:function(){var t=JSON.parse(JSON.stringify(this));return t.clone=this.clone,t}}}var vg=hg(),rf=function(){function e(r){this.rules=null,this._messages=vg,this.define(r)}var t=e.prototype;return t.define=function(n){var i=this;if(!n)throw new Error("Cannot configure a schema with no rules");if(typeof n!="object"||Array.isArray(n))throw new Error("Rules must be an object");this.rules={},Object.keys(n).forEach(function(a){var o=n[a];i.rules[a]=Array.isArray(o)?o:[o]})},t.messages=function(n){return n&&(this._messages=l1(hg(),n)),this._messages},t.validate=function(n,i,a){var o=this;i===void 0&&(i={}),a===void 0&&(a=function(){});var s=n,l=i,u=a;if(typeof l=="function"&&(u=l,l={}),!this.rules||Object.keys(this.rules).length===0)return u&&u(null,s),Promise.resolve(s);function f(p){var m=[],g={};function y(b){if(Array.isArray(b)){var x;m=(x=m).concat.apply(x,b)}else m.push(b)}for(var _=0;_");const i=Oe("form"),a=$(),o=$(0),s=()=>{var f;if((f=a.value)!=null&&f.firstElementChild){const c=window.getComputedStyle(a.value.firstElementChild).width;return Math.ceil(Number.parseFloat(c))}else return 0},l=(f="update")=>{Nt(()=>{t.default&&e.isAutoWidth&&(f==="update"?o.value=s():f==="remove"&&(r==null||r.deregisterLabelWidth(o.value)))})},u=()=>l("update");return _t(()=>{u()}),tr(()=>{l("remove")}),Uu(()=>u()),be(o,(f,c)=>{e.updateAll&&(r==null||r.registerLabelWidth(f,c))}),ms(k(()=>{var f,c;return(c=(f=a.value)==null?void 0:f.firstElementChild)!=null?c:null}),u),()=>{var f,c;if(!t)return null;const{isAutoWidth:h}=e;if(h){const d=r==null?void 0:r.autoLabelWidth,v=n==null?void 0:n.hasLabel,p={};if(v&&d&&d!=="auto"){const m=Math.max(0,Number.parseInt(d,10)-o.value),g=r.labelPosition==="left"?"marginRight":"marginLeft";m&&(p[g]=`${m}px`)}return Z("div",{ref:a,class:[i.be("item","label-wrap")],style:p},[(f=t.default)==null?void 0:f.call(t)])}else return Z(ft,{ref:a},[(c=t.default)==null?void 0:c.call(t)])}}});const hH=["role","aria-labelledby"],vH=ie({name:"ElFormItem"}),pH=ie({...vH,props:cH,setup(e,{expose:t}){const r=e,n=Ns(),i=Le(zs,void 0),a=Le(yo,void 0),o=xi(void 0,{formItem:!1}),s=Oe("form-item"),l=xu().value,u=$([]),f=$(""),c=pR(f,100),h=$(""),d=$();let v,p=!1;const m=k(()=>{if((i==null?void 0:i.labelPosition)==="top")return{};const B=Zn(r.labelWidth||(i==null?void 0:i.labelWidth)||"");return B?{width:B}:{}}),g=k(()=>{if((i==null?void 0:i.labelPosition)==="top"||i!=null&&i.inline)return{};if(!r.label&&!r.labelWidth&&M)return{};const B=Zn(r.labelWidth||(i==null?void 0:i.labelWidth)||"");return!r.label&&!n.label?{marginLeft:B}:{}}),y=k(()=>[s.b(),s.m(o.value),s.is("error",f.value==="error"),s.is("validating",f.value==="validating"),s.is("success",f.value==="success"),s.is("required",O.value||r.required),s.is("no-asterisk",i==null?void 0:i.hideRequiredAsterisk),(i==null?void 0:i.requireAsteriskPosition)==="right"?"asterisk-right":"asterisk-left",{[s.m("feedback")]:i==null?void 0:i.statusIcon}]),_=k(()=>zr(r.inlineMessage)?r.inlineMessage:(i==null?void 0:i.inlineMessage)||!1),b=k(()=>[s.e("error"),{[s.em("error","inline")]:_.value}]),x=k(()=>r.prop?ze(r.prop)?r.prop:r.prop.join("."):""),w=k(()=>!!(r.label||n.label)),S=k(()=>r.for||(u.value.length===1?u.value[0]:void 0)),C=k(()=>!S.value&&w.value),M=!!a,A=k(()=>{const B=i==null?void 0:i.model;if(!(!B||!r.prop))return Ec(B,r.prop).value}),P=k(()=>{const{required:B}=r,Y=[];r.rules&&Y.push(...Jp(r.rules));const K=i==null?void 0:i.rules;if(K&&r.prop){const Q=Ec(K,r.prop).value;Q&&Y.push(...Jp(Q))}if(B!==void 0){const Q=Y.map((oe,pe)=>[oe,pe]).filter(([oe])=>Object.keys(oe).includes("required"));if(Q.length>0)for(const[oe,pe]of Q)oe.required!==B&&(Y[pe]={...oe,required:B});else Y.push({required:B})}return Y}),E=k(()=>P.value.length>0),L=B=>P.value.filter(K=>!K.trigger||!B?!0:Array.isArray(K.trigger)?K.trigger.includes(B):K.trigger===B).map(({trigger:K,...Q})=>Q),O=k(()=>P.value.some(B=>B.required)),N=k(()=>{var B;return c.value==="error"&&r.showMessage&&((B=i==null?void 0:i.showMessage)!=null?B:!0)}),H=k(()=>`${r.label||""}${(i==null?void 0:i.labelSuffix)||""}`),V=B=>{f.value=B},U=B=>{var Y,K;const{errors:Q,fields:oe}=B;(!Q||!oe)&&console.error(B),V("error"),h.value=Q?(K=(Y=Q==null?void 0:Q[0])==null?void 0:Y.message)!=null?K:`${r.prop} is required`:"",i==null||i.emit("validate",r.prop,!1,h.value)},F=()=>{V("success"),i==null||i.emit("validate",r.prop,!0,"")},z=async B=>{const Y=x.value;return new rf({[Y]:B}).validate({[Y]:A.value},{firstFields:!0}).then(()=>(F(),!0)).catch(Q=>(U(Q),Promise.reject(Q)))},ee=async(B,Y)=>{if(p||!r.prop)return!1;const K=De(Y);if(!E.value)return Y==null||Y(!1),!1;const Q=L(B);return Q.length===0?(Y==null||Y(!0),!0):(V("validating"),z(Q).then(()=>(Y==null||Y(!0),!0)).catch(oe=>{const{fields:pe}=oe;return Y==null||Y(!1,pe),K?!1:Promise.reject(pe)}))},J=()=>{V(""),h.value="",p=!1},me=async()=>{const B=i==null?void 0:i.model;if(!B||!r.prop)return;const Y=Ec(B,r.prop);p=!0,Y.value=Bb(v),await Nt(),J(),p=!1},we=B=>{u.value.includes(B)||u.value.push(B)},$e=B=>{u.value=u.value.filter(Y=>Y!==B)};be(()=>r.error,B=>{h.value=B||"",V(B?"error":"")},{immediate:!0}),be(()=>r.validateStatus,B=>V(B||""));const Ie=Ln({...Kd(r),$el:d,size:o,validateState:f,labelId:l,inputIds:u,isGroup:C,hasLabel:w,fieldValue:A,addInputId:we,removeInputId:$e,resetField:me,clearValidate:J,validate:ee});return Dt(yo,Ie),_t(()=>{r.prop&&(i==null||i.addField(Ie),v=Bb(A.value))}),tr(()=>{i==null||i.removeField(Ie)}),t({size:o,validateMessage:h,validateState:f,validate:ee,clearValidate:J,resetField:me}),(B,Y)=>{var K;return G(),ce("div",{ref_key:"formItemRef",ref:d,class:re(T(y)),role:T(C)?"group":void 0,"aria-labelledby":T(C)?T(l):void 0},[Z(T(dH),{"is-auto-width":T(m).width==="auto","update-all":((K=T(i))==null?void 0:K.labelWidth)==="auto"},{default:q(()=>[T(w)?(G(),ve(Vt(T(S)?"label":"div"),{key:0,id:T(l),for:T(S),class:re(T(s).e("label")),style:ct(T(m))},{default:q(()=>[Ce(B.$slots,"label",{label:T(H)},()=>[pt(xe(T(H)),1)])]),_:3},8,["id","for","class","style"])):Ae("v-if",!0)]),_:3},8,["is-auto-width","update-all"]),te("div",{class:re(T(s).e("content")),style:ct(T(g))},[Ce(B.$slots,"default"),Z(KO,{name:`${T(s).namespace.value}-zoom-in-top`},{default:q(()=>[T(N)?Ce(B.$slots,"error",{key:0,error:h.value},()=>[te("div",{class:re(T(b))},xe(h.value),3)]):Ae("v-if",!0)]),_:3},8,["name"])],6)],10,hH)}}});var aA=Ke(pH,[["__file","form-item.vue"]]);const oA=Yt(D4,{FormItem:aA}),sA=pa(aA),es=4,gH={vertical:{offset:"offsetHeight",scroll:"scrollTop",scrollSize:"scrollHeight",size:"height",key:"vertical",axis:"Y",client:"clientY",direction:"top"},horizontal:{offset:"offsetWidth",scroll:"scrollLeft",scrollSize:"scrollWidth",size:"width",key:"horizontal",axis:"X",client:"clientX",direction:"left"}},mH=({move:e,size:t,bar:r})=>({[r.size]:t,transform:`translate${r.axis}(${e}%)`}),lA=Symbol("scrollbarContextKey"),yH=Je({vertical:Boolean,size:String,move:Number,ratio:{type:Number,required:!0},always:Boolean}),_H="Thumb",bH=ie({__name:"thumb",props:yH,setup(e){const t=e,r=Le(lA),n=Oe("scrollbar");r||bi(_H,"can not inject scrollbar context");const i=$(),a=$(),o=$({}),s=$(!1);let l=!1,u=!1,f=At?document.onselectstart:null;const c=k(()=>gH[t.vertical?"vertical":"horizontal"]),h=k(()=>mH({size:t.size,move:t.move,bar:c.value})),d=k(()=>i.value[c.value.offset]**2/r.wrapElement[c.value.scrollSize]/t.ratio/a.value[c.value.offset]),v=w=>{var S;if(w.stopPropagation(),w.ctrlKey||[1,2].includes(w.button))return;(S=window.getSelection())==null||S.removeAllRanges(),m(w);const C=w.currentTarget;C&&(o.value[c.value.axis]=C[c.value.offset]-(w[c.value.client]-C.getBoundingClientRect()[c.value.direction]))},p=w=>{if(!a.value||!i.value||!r.wrapElement)return;const S=Math.abs(w.target.getBoundingClientRect()[c.value.direction]-w[c.value.client]),C=a.value[c.value.offset]/2,M=(S-C)*100*d.value/i.value[c.value.offset];r.wrapElement[c.value.scroll]=M*r.wrapElement[c.value.scrollSize]/100},m=w=>{w.stopImmediatePropagation(),l=!0,document.addEventListener("mousemove",g),document.addEventListener("mouseup",y),f=document.onselectstart,document.onselectstart=()=>!1},g=w=>{if(!i.value||!a.value||l===!1)return;const S=o.value[c.value.axis];if(!S)return;const C=(i.value.getBoundingClientRect()[c.value.direction]-w[c.value.client])*-1,M=a.value[c.value.offset]-S,A=(C-M)*100*d.value/i.value[c.value.offset];r.wrapElement[c.value.scroll]=A*r.wrapElement[c.value.scrollSize]/100},y=()=>{l=!1,o.value[c.value.axis]=0,document.removeEventListener("mousemove",g),document.removeEventListener("mouseup",y),x(),u&&(s.value=!1)},_=()=>{u=!1,s.value=!!t.size},b=()=>{u=!0,s.value=l};tr(()=>{x(),document.removeEventListener("mouseup",y)});const x=()=>{document.onselectstart!==f&&(document.onselectstart=f)};return xn(wn(r,"scrollbarElement"),"mousemove",_),xn(wn(r,"scrollbarElement"),"mouseleave",b),(w,S)=>(G(),ve(ti,{name:T(n).b("fade"),persisted:""},{default:q(()=>[qt(te("div",{ref_key:"instance",ref:i,class:re([T(n).e("bar"),T(n).is(T(c).key)]),onMousedown:p},[te("div",{ref_key:"thumb",ref:a,class:re(T(n).e("thumb")),style:ct(T(h)),onMousedown:v},null,38)],34),[[Kn,w.always||s.value]])]),_:1},8,["name"]))}});var c1=Ke(bH,[["__file","thumb.vue"]]);const wH=Je({always:{type:Boolean,default:!0},width:String,height:String,ratioX:{type:Number,default:1},ratioY:{type:Number,default:1}}),SH=ie({__name:"bar",props:wH,setup(e,{expose:t}){const r=e,n=$(0),i=$(0);return t({handleScroll:o=>{if(o){const s=o.offsetHeight-es,l=o.offsetWidth-es;i.value=o.scrollTop*100/s*r.ratioY,n.value=o.scrollLeft*100/l*r.ratioX}}}),(o,s)=>(G(),ce(ft,null,[Z(c1,{move:n.value,ratio:o.ratioX,size:o.width,always:o.always},null,8,["move","ratio","size","always"]),Z(c1,{move:i.value,ratio:o.ratioY,size:o.height,vertical:"",always:o.always},null,8,["move","ratio","size","always"])],64))}});var xH=Ke(SH,[["__file","bar.vue"]]);const CH=Je({height:{type:[String,Number],default:""},maxHeight:{type:[String,Number],default:""},native:{type:Boolean,default:!1},wrapStyle:{type:Be([String,Object,Array]),default:""},wrapClass:{type:[String,Array],default:""},viewClass:{type:[String,Array],default:""},viewStyle:{type:[String,Array,Object],default:""},noresize:Boolean,tag:{type:String,default:"div"},always:Boolean,minSize:{type:Number,default:20},id:String,role:String,ariaLabel:String,ariaOrientation:{type:String,values:["horizontal","vertical"]}}),TH={scroll:({scrollTop:e,scrollLeft:t})=>[e,t].every(kt)},MH="ElScrollbar",AH=ie({name:MH}),PH=ie({...AH,props:CH,emits:TH,setup(e,{expose:t,emit:r}){const n=e,i=Oe("scrollbar");let a,o;const s=$(),l=$(),u=$(),f=$("0"),c=$("0"),h=$(),d=$(1),v=$(1),p=k(()=>{const S={};return n.height&&(S.height=Zn(n.height)),n.maxHeight&&(S.maxHeight=Zn(n.maxHeight)),[n.wrapStyle,S]}),m=k(()=>[n.wrapClass,i.e("wrap"),{[i.em("wrap","hidden-default")]:!n.native}]),g=k(()=>[i.e("view"),n.viewClass]),y=()=>{var S;l.value&&((S=h.value)==null||S.handleScroll(l.value),r("scroll",{scrollTop:l.value.scrollTop,scrollLeft:l.value.scrollLeft}))};function _(S,C){qe(S)?l.value.scrollTo(S):kt(S)&&kt(C)&&l.value.scrollTo(S,C)}const b=S=>{kt(S)&&(l.value.scrollTop=S)},x=S=>{kt(S)&&(l.value.scrollLeft=S)},w=()=>{if(!l.value)return;const S=l.value.offsetHeight-es,C=l.value.offsetWidth-es,M=S**2/l.value.scrollHeight,A=C**2/l.value.scrollWidth,P=Math.max(M,n.minSize),E=Math.max(A,n.minSize);d.value=M/(S-M)/(P/(S-P)),v.value=A/(C-A)/(E/(C-E)),c.value=P+esn.noresize,S=>{S?(a==null||a(),o==null||o()):({stop:a}=ms(u,w),o=xn("resize",w))},{immediate:!0}),be(()=>[n.maxHeight,n.height],()=>{n.native||Nt(()=>{var S;w(),l.value&&((S=h.value)==null||S.handleScroll(l.value))})}),Dt(lA,Ln({scrollbarElement:s,wrapElement:l})),_t(()=>{n.native||Nt(()=>{w()})}),Uu(()=>w()),t({wrapRef:l,update:w,scrollTo:_,setScrollTop:b,setScrollLeft:x,handleScroll:y}),(S,C)=>(G(),ce("div",{ref_key:"scrollbarRef",ref:s,class:re(T(i).b())},[te("div",{ref_key:"wrapRef",ref:l,class:re(T(m)),style:ct(T(p)),onScroll:y},[(G(),ve(Vt(S.tag),{id:S.id,ref_key:"resizeRef",ref:u,class:re(T(g)),style:ct(S.viewStyle),role:S.role,"aria-label":S.ariaLabel,"aria-orientation":S.ariaOrientation},{default:q(()=>[Ce(S.$slots,"default")]),_:3},8,["id","class","style","role","aria-label","aria-orientation"]))],38),S.native?Ae("v-if",!0):(G(),ve(xH,{key:0,ref_key:"barRef",ref:h,height:c.value,width:f.value,always:S.always,"ratio-x":v.value,"ratio-y":d.value},null,8,["height","width","always","ratio-x","ratio-y"]))],2))}});var EH=Ke(PH,[["__file","scrollbar.vue"]]);const uA=Yt(EH),Wy=Symbol("popper"),fA=Symbol("popperContent"),LH=["dialog","grid","group","listbox","menu","navigation","tooltip","tree"],cA=Je({role:{type:String,values:LH,default:"tooltip"}}),DH=ie({name:"ElPopper",inheritAttrs:!1}),IH=ie({...DH,props:cA,setup(e,{expose:t}){const r=e,n=$(),i=$(),a=$(),o=$(),s=k(()=>r.role),l={triggerRef:n,popperInstanceRef:i,contentRef:a,referenceRef:o,role:s};return t(l),Dt(Wy,l),(u,f)=>Ce(u.$slots,"default")}});var OH=Ke(IH,[["__file","popper.vue"]]);const dA=Je({arrowOffset:{type:Number,default:5}}),RH=ie({name:"ElPopperArrow",inheritAttrs:!1}),kH=ie({...RH,props:dA,setup(e,{expose:t}){const r=e,n=Oe("popper"),{arrowOffset:i,arrowRef:a,arrowStyle:o}=Le(fA,void 0);return be(()=>r.arrowOffset,s=>{i.value=s}),tr(()=>{a.value=void 0}),t({arrowRef:a}),(s,l)=>(G(),ce("span",{ref_key:"arrowRef",ref:a,class:re(T(n).e("arrow")),style:ct(T(o)),"data-popper-arrow":""},null,6))}});var NH=Ke(kH,[["__file","arrow.vue"]]);const BH="ElOnlyChild",FH=ie({name:BH,setup(e,{slots:t,attrs:r}){var n;const i=Le(JM),a=p4((n=i==null?void 0:i.setForwardRef)!=null?n:Ft);return()=>{var o;const s=(o=t.default)==null?void 0:o.call(t,r);if(!s||s.length>1)return null;const l=hA(s);return l?qt(_i(l,r),[[a]]):null}}});function hA(e){if(!e)return null;const t=e;for(const r of t){if(qe(r))switch(r.type){case Mr:continue;case Bs:case"svg":return d1(r);case ft:return hA(r.children);default:return r}return d1(r)}return null}function d1(e){const t=Oe("only-child");return Z("span",{class:t.e("content")},[e])}const vA=Je({virtualRef:{type:Be(Object)},virtualTriggering:Boolean,onMouseenter:{type:Be(Function)},onMouseleave:{type:Be(Function)},onClick:{type:Be(Function)},onKeydown:{type:Be(Function)},onFocus:{type:Be(Function)},onBlur:{type:Be(Function)},onContextmenu:{type:Be(Function)},id:String,open:Boolean}),$H=ie({name:"ElPopperTrigger",inheritAttrs:!1}),HH=ie({...$H,props:vA,setup(e,{expose:t}){const r=e,{role:n,triggerRef:i}=Le(Wy,void 0);v4(i);const a=k(()=>s.value?r.id:void 0),o=k(()=>{if(n&&n.value==="tooltip")return r.open&&r.id?r.id:void 0}),s=k(()=>{if(n&&n.value!=="tooltip")return n.value}),l=k(()=>s.value?`${r.open}`:void 0);let u;return _t(()=>{be(()=>r.virtualRef,f=>{f&&(i.value=Zi(f))},{immediate:!0}),be(i,(f,c)=>{u==null||u(),u=void 0,mo(f)&&(["onMouseenter","onMouseleave","onClick","onKeydown","onFocus","onBlur","onContextmenu"].forEach(h=>{var d;const v=r[h];v&&(f.addEventListener(h.slice(2).toLowerCase(),v),(d=c==null?void 0:c.removeEventListener)==null||d.call(c,h.slice(2).toLowerCase(),v))}),u=be([a,o,s,l],h=>{["aria-controls","aria-describedby","aria-haspopup","aria-expanded"].forEach((d,v)=>{_s(h[v])?f.removeAttribute(d):f.setAttribute(d,h[v])})},{immediate:!0})),mo(c)&&["aria-controls","aria-describedby","aria-haspopup","aria-expanded"].forEach(h=>c.removeAttribute(h))},{immediate:!0})}),tr(()=>{u==null||u(),u=void 0}),t({triggerRef:i}),(f,c)=>f.virtualTriggering?Ae("v-if",!0):(G(),ve(T(FH),ei({key:0},f.$attrs,{"aria-controls":T(a),"aria-describedby":T(o),"aria-expanded":T(l),"aria-haspopup":T(s)}),{default:q(()=>[Ce(f.$slots,"default")]),_:3},16,["aria-controls","aria-describedby","aria-expanded","aria-haspopup"]))}});var zH=Ke(HH,[["__file","trigger.vue"]]);const iv="focus-trap.focus-after-trapped",av="focus-trap.focus-after-released",VH="focus-trap.focusout-prevented",h1={cancelable:!0,bubbles:!1},WH={cancelable:!0,bubbles:!1},v1="focusAfterTrapped",p1="focusAfterReleased",pA=Symbol("elFocusTrap"),Gy=$(),ph=$(0),Uy=$(0);let Af=0;const gA=e=>{const t=[],r=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:n=>{const i=n.tagName==="INPUT"&&n.type==="hidden";return n.disabled||n.hidden||i?NodeFilter.FILTER_SKIP:n.tabIndex>=0||n===document.activeElement?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;r.nextNode();)t.push(r.currentNode);return t},g1=(e,t)=>{for(const r of e)if(!GH(r,t))return r},GH=(e,t)=>{if(getComputedStyle(e).visibility==="hidden")return!0;for(;e;){if(t&&e===t)return!1;if(getComputedStyle(e).display==="none")return!0;e=e.parentElement}return!1},UH=e=>{const t=gA(e),r=g1(t,e),n=g1(t.reverse(),e);return[r,n]},YH=e=>e instanceof HTMLInputElement&&"select"in e,Vi=(e,t)=>{if(e&&e.focus){const r=document.activeElement;e.focus({preventScroll:!0}),Uy.value=window.performance.now(),e!==r&&YH(e)&&t&&e.select()}};function m1(e,t){const r=[...e],n=e.indexOf(t);return n!==-1&&r.splice(n,1),r}const jH=()=>{let e=[];return{push:n=>{const i=e[0];i&&n!==i&&i.pause(),e=m1(e,n),e.unshift(n)},remove:n=>{var i,a;e=m1(e,n),(a=(i=e[0])==null?void 0:i.resume)==null||a.call(i)}}},qH=(e,t=!1)=>{const r=document.activeElement;for(const n of e)if(Vi(n,t),document.activeElement!==r)return},y1=jH(),KH=()=>ph.value>Uy.value,Pf=()=>{Gy.value="pointer",ph.value=window.performance.now()},_1=()=>{Gy.value="keyboard",ph.value=window.performance.now()},XH=()=>(_t(()=>{Af===0&&(document.addEventListener("mousedown",Pf),document.addEventListener("touchstart",Pf),document.addEventListener("keydown",_1)),Af++}),tr(()=>{Af--,Af<=0&&(document.removeEventListener("mousedown",Pf),document.removeEventListener("touchstart",Pf),document.removeEventListener("keydown",_1))}),{focusReason:Gy,lastUserFocusTimestamp:ph,lastAutomatedFocusTimestamp:Uy}),Ef=e=>new CustomEvent(VH,{...WH,detail:e}),ZH=ie({name:"ElFocusTrap",inheritAttrs:!1,props:{loop:Boolean,trapped:Boolean,focusTrapEl:Object,focusStartEl:{type:[Object,String],default:"first"}},emits:[v1,p1,"focusin","focusout","focusout-prevented","release-requested"],setup(e,{emit:t}){const r=$();let n,i;const{focusReason:a}=XH();u4(v=>{e.trapped&&!o.paused&&t("release-requested",v)});const o={paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}},s=v=>{if(!e.loop&&!e.trapped||o.paused)return;const{key:p,altKey:m,ctrlKey:g,metaKey:y,currentTarget:_,shiftKey:b}=v,{loop:x}=e,w=p===hr.tab&&!m&&!g&&!y,S=document.activeElement;if(w&&S){const C=_,[M,A]=UH(C);if(M&&A){if(!b&&S===A){const E=Ef({focusReason:a.value});t("focusout-prevented",E),E.defaultPrevented||(v.preventDefault(),x&&Vi(M,!0))}else if(b&&[M,C].includes(S)){const E=Ef({focusReason:a.value});t("focusout-prevented",E),E.defaultPrevented||(v.preventDefault(),x&&Vi(A,!0))}}else if(S===C){const E=Ef({focusReason:a.value});t("focusout-prevented",E),E.defaultPrevented||v.preventDefault()}}};Dt(pA,{focusTrapRef:r,onKeydown:s}),be(()=>e.focusTrapEl,v=>{v&&(r.value=v)},{immediate:!0}),be([r],([v],[p])=>{v&&(v.addEventListener("keydown",s),v.addEventListener("focusin",f),v.addEventListener("focusout",c)),p&&(p.removeEventListener("keydown",s),p.removeEventListener("focusin",f),p.removeEventListener("focusout",c))});const l=v=>{t(v1,v)},u=v=>t(p1,v),f=v=>{const p=T(r);if(!p)return;const m=v.target,g=v.relatedTarget,y=m&&p.contains(m);e.trapped||g&&p.contains(g)||(n=g),y&&t("focusin",v),!o.paused&&e.trapped&&(y?i=m:Vi(i,!0))},c=v=>{const p=T(r);if(!(o.paused||!p))if(e.trapped){const m=v.relatedTarget;!_s(m)&&!p.contains(m)&&setTimeout(()=>{if(!o.paused&&e.trapped){const g=Ef({focusReason:a.value});t("focusout-prevented",g),g.defaultPrevented||Vi(i,!0)}},0)}else{const m=v.target;m&&p.contains(m)||t("focusout",v)}};async function h(){await Nt();const v=T(r);if(v){y1.push(o);const p=v.contains(document.activeElement)?n:document.activeElement;if(n=p,!v.contains(p)){const g=new Event(iv,h1);v.addEventListener(iv,l),v.dispatchEvent(g),g.defaultPrevented||Nt(()=>{let y=e.focusStartEl;ze(y)||(Vi(y),document.activeElement!==y&&(y="first")),y==="first"&&qH(gA(v),!0),(document.activeElement===p||y==="container")&&Vi(v)})}}}function d(){const v=T(r);if(v){v.removeEventListener(iv,l);const p=new CustomEvent(av,{...h1,detail:{focusReason:a.value}});v.addEventListener(av,u),v.dispatchEvent(p),!p.defaultPrevented&&(a.value=="keyboard"||!KH()||v.contains(document.activeElement))&&Vi(n??document.body),v.removeEventListener(av,u),y1.remove(o)}}return _t(()=>{e.trapped&&h(),be(()=>e.trapped,v=>{v?h():d()})}),tr(()=>{e.trapped&&d()}),{onKeydown:s}}});function QH(e,t,r,n,i,a){return Ce(e.$slots,"default",{handleKeydown:e.onKeydown})}var mA=Ke(ZH,[["render",QH],["__file","focus-trap.vue"]]);const JH=["fixed","absolute"],ez=Je({boundariesPadding:{type:Number,default:0},fallbackPlacements:{type:Be(Array),default:void 0},gpuAcceleration:{type:Boolean,default:!0},offset:{type:Number,default:12},placement:{type:String,values:Oy,default:"bottom"},popperOptions:{type:Be(Object),default:()=>({})},strategy:{type:String,values:JH,default:"absolute"}}),yA=Je({...ez,id:String,style:{type:Be([String,Array,Object])},className:{type:Be([String,Array,Object])},effect:{type:String,default:"dark"},visible:Boolean,enterable:{type:Boolean,default:!0},pure:Boolean,focusOnShow:{type:Boolean,default:!1},trapping:{type:Boolean,default:!1},popperClass:{type:Be([String,Array,Object])},popperStyle:{type:Be([String,Array,Object])},referenceEl:{type:Be(Object)},triggerTargetEl:{type:Be(Object)},stopPopperMouseEvent:{type:Boolean,default:!0},ariaLabel:{type:String,default:void 0},virtualTriggering:Boolean,zIndex:Number}),tz={mouseenter:e=>e instanceof MouseEvent,mouseleave:e=>e instanceof MouseEvent,focus:()=>!0,blur:()=>!0,close:()=>!0},rz=(e,t=[])=>{const{placement:r,strategy:n,popperOptions:i}=e,a={placement:r,strategy:n,...i,modifiers:[...iz(e),...t]};return az(a,i==null?void 0:i.modifiers),a},nz=e=>{if(At)return Zi(e)};function iz(e){const{offset:t,gpuAcceleration:r,fallbackPlacements:n}=e;return[{name:"offset",options:{offset:[0,t??12]}},{name:"preventOverflow",options:{padding:{top:2,bottom:2,left:5,right:5}}},{name:"flip",options:{padding:5,fallbackPlacements:n}},{name:"computeStyles",options:{gpuAcceleration:r}}]}function az(e,t){t&&(e.modifiers=[...e.modifiers,...t??[]])}const oz=0,sz=e=>{const{popperInstanceRef:t,contentRef:r,triggerRef:n,role:i}=Le(Wy,void 0),a=$(),o=$(),s=k(()=>({name:"eventListeners",enabled:!!e.visible})),l=k(()=>{var g;const y=T(a),_=(g=T(o))!=null?g:oz;return{name:"arrow",enabled:!MM(y),options:{element:y,padding:_}}}),u=k(()=>({onFirstUpdate:()=>{v()},...rz(e,[T(l),T(s)])})),f=k(()=>nz(e.referenceEl)||T(n)),{attributes:c,state:h,styles:d,update:v,forceUpdate:p,instanceRef:m}=o4(f,r,u);return be(m,g=>t.value=g),_t(()=>{be(()=>{var g;return(g=T(f))==null?void 0:g.getBoundingClientRect()},()=>{v()})}),{attributes:c,arrowRef:a,contentRef:r,instanceRef:m,state:h,styles:d,role:i,forceUpdate:p,update:v}},lz=(e,{attributes:t,styles:r,role:n})=>{const{nextZIndex:i}=zy(),a=Oe("popper"),o=k(()=>T(t).popper),s=$(kt(e.zIndex)?e.zIndex:i()),l=k(()=>[a.b(),a.is("pure",e.pure),a.is(e.effect),e.popperClass]),u=k(()=>[{zIndex:T(s)},T(r).popper,e.popperStyle||{}]),f=k(()=>n.value==="dialog"?"false":void 0),c=k(()=>T(r).arrow||{});return{ariaModal:f,arrowStyle:c,contentAttrs:o,contentClass:l,contentStyle:u,contentZIndex:s,updateZIndex:()=>{s.value=kt(e.zIndex)?e.zIndex:i()}}},uz=(e,t)=>{const r=$(!1),n=$();return{focusStartRef:n,trapped:r,onFocusAfterReleased:u=>{var f;((f=u.detail)==null?void 0:f.focusReason)!=="pointer"&&(n.value="first",t("blur"))},onFocusAfterTrapped:()=>{t("focus")},onFocusInTrap:u=>{e.visible&&!r.value&&(u.target&&(n.value=u.target),r.value=!0)},onFocusoutPrevented:u=>{e.trapping||(u.detail.focusReason==="pointer"&&u.preventDefault(),r.value=!1)},onReleaseRequested:()=>{r.value=!1,t("close")}}},fz=ie({name:"ElPopperContent"}),cz=ie({...fz,props:yA,emits:tz,setup(e,{expose:t,emit:r}){const n=e,{focusStartRef:i,trapped:a,onFocusAfterReleased:o,onFocusAfterTrapped:s,onFocusInTrap:l,onFocusoutPrevented:u,onReleaseRequested:f}=uz(n,r),{attributes:c,arrowRef:h,contentRef:d,styles:v,instanceRef:p,role:m,update:g}=sz(n),{ariaModal:y,arrowStyle:_,contentAttrs:b,contentClass:x,contentStyle:w,updateZIndex:S}=lz(n,{styles:v,attributes:c,role:m}),C=Le(yo,void 0),M=$();Dt(fA,{arrowStyle:_,arrowRef:h,arrowOffset:M}),C&&(C.addInputId||C.removeInputId)&&Dt(yo,{...C,addInputId:Ft,removeInputId:Ft});let A;const P=(L=!0)=>{g(),L&&S()},E=()=>{P(!1),n.visible&&n.focusOnShow?a.value=!0:n.visible===!1&&(a.value=!1)};return _t(()=>{be(()=>n.triggerTargetEl,(L,O)=>{A==null||A(),A=void 0;const N=T(L||d.value),H=T(O||d.value);mo(N)&&(A=be([m,()=>n.ariaLabel,y,()=>n.id],V=>{["role","aria-label","aria-modal","id"].forEach((U,F)=>{_s(V[F])?N.removeAttribute(U):N.setAttribute(U,V[F])})},{immediate:!0})),H!==N&&mo(H)&&["role","aria-label","aria-modal","id"].forEach(V=>{H.removeAttribute(V)})},{immediate:!0}),be(()=>n.visible,E,{immediate:!0})}),tr(()=>{A==null||A(),A=void 0}),t({popperContentRef:d,popperInstanceRef:p,updatePopper:P,contentStyle:w}),(L,O)=>(G(),ce("div",ei({ref_key:"contentRef",ref:d},T(b),{style:T(w),class:T(x),tabindex:"-1",onMouseenter:O[0]||(O[0]=N=>L.$emit("mouseenter",N)),onMouseleave:O[1]||(O[1]=N=>L.$emit("mouseleave",N))}),[Z(T(mA),{trapped:T(a),"trap-on-focus-in":!0,"focus-trap-el":T(d),"focus-start-el":T(i),onFocusAfterTrapped:T(s),onFocusAfterReleased:T(o),onFocusin:T(l),onFocusoutPrevented:T(u),onReleaseRequested:T(f)},{default:q(()=>[Ce(L.$slots,"default")]),_:3},8,["trapped","focus-trap-el","focus-start-el","onFocusAfterTrapped","onFocusAfterReleased","onFocusin","onFocusoutPrevented","onReleaseRequested"])],16))}});var dz=Ke(cz,[["__file","content.vue"]]);const hz=Yt(OH),Yy=Symbol("elTooltip"),md=Je({...d4,...yA,appendTo:{type:Be([String,Object])},content:{type:String,default:""},rawContent:{type:Boolean,default:!1},persistent:Boolean,ariaLabel:String,visible:{type:Be(Boolean),default:null},transition:String,teleported:{type:Boolean,default:!0},disabled:Boolean}),_A=Je({...vA,disabled:Boolean,trigger:{type:Be([String,Array]),default:"hover"},triggerKeys:{type:Be(Array),default:()=>[hr.enter,hr.space]}}),{useModelToggleProps:vz,useModelToggleEmits:pz,useModelToggle:gz}=BM("visible"),mz=Je({...cA,...vz,...md,..._A,...dA,showArrow:{type:Boolean,default:!0}}),yz=[...pz,"before-show","before-hide","show","hide","open","close"],_z=(e,t)=>_e(e)?e.includes(t):e===t,ko=(e,t,r)=>n=>{_z(T(e),t)&&r(n)},bz=ie({name:"ElTooltipTrigger"}),wz=ie({...bz,props:_A,setup(e,{expose:t}){const r=e,n=Oe("tooltip"),{controlled:i,id:a,open:o,onOpen:s,onClose:l,onToggle:u}=Le(Yy,void 0),f=$(null),c=()=>{if(T(i)||r.disabled)return!0},h=wn(r,"trigger"),d=di(c,ko(h,"hover",s)),v=di(c,ko(h,"hover",l)),p=di(c,ko(h,"click",b=>{b.button===0&&u(b)})),m=di(c,ko(h,"focus",s)),g=di(c,ko(h,"focus",l)),y=di(c,ko(h,"contextmenu",b=>{b.preventDefault(),u(b)})),_=di(c,b=>{const{code:x}=b;r.triggerKeys.includes(x)&&(b.preventDefault(),u(b))});return t({triggerRef:f}),(b,x)=>(G(),ve(T(zH),{id:T(a),"virtual-ref":b.virtualRef,open:T(o),"virtual-triggering":b.virtualTriggering,class:re(T(n).e("trigger")),onBlur:T(g),onClick:T(p),onContextmenu:T(y),onFocus:T(m),onMouseenter:T(d),onMouseleave:T(v),onKeydown:T(_)},{default:q(()=>[Ce(b.$slots,"default")]),_:3},8,["id","virtual-ref","open","virtual-triggering","class","onBlur","onClick","onContextmenu","onFocus","onMouseenter","onMouseleave","onKeydown"]))}});var Sz=Ke(wz,[["__file","trigger.vue"]]);const xz=ie({name:"ElTooltipContent",inheritAttrs:!1}),Cz=ie({...xz,props:md,setup(e,{expose:t}){const r=e,{selector:n}=QM(),i=Oe("tooltip"),a=$(null),o=$(!1),{controlled:s,id:l,open:u,trigger:f,onClose:c,onOpen:h,onShow:d,onHide:v,onBeforeShow:p,onBeforeHide:m}=Le(Yy,void 0),g=k(()=>r.transition||`${i.namespace.value}-fade-in-linear`),y=k(()=>r.persistent);tr(()=>{o.value=!0});const _=k(()=>T(y)?!0:T(u)),b=k(()=>r.disabled?!1:T(u)),x=k(()=>r.appendTo||n.value),w=k(()=>{var V;return(V=r.style)!=null?V:{}}),S=k(()=>!T(u)),C=()=>{v()},M=()=>{if(T(s))return!0},A=di(M,()=>{r.enterable&&T(f)==="hover"&&h()}),P=di(M,()=>{T(f)==="hover"&&c()}),E=()=>{var V,U;(U=(V=a.value)==null?void 0:V.updatePopper)==null||U.call(V),p==null||p()},L=()=>{m==null||m()},O=()=>{d(),H=ER(k(()=>{var V;return(V=a.value)==null?void 0:V.popperContentRef}),()=>{if(T(s))return;T(f)!=="hover"&&c()})},N=()=>{r.virtualTriggering||c()};let H;return be(()=>T(u),V=>{V||H==null||H()},{flush:"post"}),be(()=>r.content,()=>{var V,U;(U=(V=a.value)==null?void 0:V.updatePopper)==null||U.call(V)}),t({contentRef:a}),(V,U)=>(G(),ve(MT,{disabled:!V.teleported,to:T(x)},[Z(ti,{name:T(g),onAfterLeave:C,onBeforeEnter:E,onAfterEnter:O,onBeforeLeave:L},{default:q(()=>[T(_)?qt((G(),ve(T(dz),ei({key:0,id:T(l),ref_key:"contentRef",ref:a},V.$attrs,{"aria-label":V.ariaLabel,"aria-hidden":T(S),"boundaries-padding":V.boundariesPadding,"fallback-placements":V.fallbackPlacements,"gpu-acceleration":V.gpuAcceleration,offset:V.offset,placement:V.placement,"popper-options":V.popperOptions,strategy:V.strategy,effect:V.effect,enterable:V.enterable,pure:V.pure,"popper-class":V.popperClass,"popper-style":[V.popperStyle,T(w)],"reference-el":V.referenceEl,"trigger-target-el":V.triggerTargetEl,visible:T(b),"z-index":V.zIndex,onMouseenter:T(A),onMouseleave:T(P),onBlur:N,onClose:T(c)}),{default:q(()=>[o.value?Ae("v-if",!0):Ce(V.$slots,"default",{key:0})]),_:3},16,["id","aria-label","aria-hidden","boundaries-padding","fallback-placements","gpu-acceleration","offset","placement","popper-options","strategy","effect","enterable","pure","popper-class","popper-style","reference-el","trigger-target-el","visible","z-index","onMouseenter","onMouseleave","onClose"])),[[Kn,T(b)]]):Ae("v-if",!0)]),_:3},8,["name"])],8,["disabled","to"]))}});var Tz=Ke(Cz,[["__file","content.vue"]]);const Mz=["innerHTML"],Az={key:1},Pz=ie({name:"ElTooltip"}),Ez=ie({...Pz,props:mz,emits:yz,setup(e,{expose:t,emit:r}){const n=e;c4();const i=xu(),a=$(),o=$(),s=()=>{var g;const y=T(a);y&&((g=y.popperInstanceRef)==null||g.update())},l=$(!1),u=$(),{show:f,hide:c,hasUpdateHandler:h}=gz({indicator:l,toggleReason:u}),{onOpen:d,onClose:v}=h4({showAfter:wn(n,"showAfter"),hideAfter:wn(n,"hideAfter"),autoClose:wn(n,"autoClose"),open:f,close:c}),p=k(()=>zr(n.visible)&&!h.value);Dt(Yy,{controlled:p,id:i,open:Gu(l),trigger:wn(n,"trigger"),onOpen:g=>{d(g)},onClose:g=>{v(g)},onToggle:g=>{T(l)?v(g):d(g)},onShow:()=>{r("show",u.value)},onHide:()=>{r("hide",u.value)},onBeforeShow:()=>{r("before-show",u.value)},onBeforeHide:()=>{r("before-hide",u.value)},updatePopper:s}),be(()=>n.disabled,g=>{g&&l.value&&(l.value=!1)});const m=g=>{var y,_;const b=(_=(y=o.value)==null?void 0:y.contentRef)==null?void 0:_.popperContentRef,x=(g==null?void 0:g.relatedTarget)||document.activeElement;return b&&b.contains(x)};return pT(()=>l.value&&c()),t({popperRef:a,contentRef:o,isFocusInsideContent:m,updatePopper:s,onOpen:d,onClose:v,hide:c}),(g,y)=>(G(),ve(T(hz),{ref_key:"popperRef",ref:a,role:g.role},{default:q(()=>[Z(Sz,{disabled:g.disabled,trigger:g.trigger,"trigger-keys":g.triggerKeys,"virtual-ref":g.virtualRef,"virtual-triggering":g.virtualTriggering},{default:q(()=>[g.$slots.default?Ce(g.$slots,"default",{key:0}):Ae("v-if",!0)]),_:3},8,["disabled","trigger","trigger-keys","virtual-ref","virtual-triggering"]),Z(Tz,{ref_key:"contentRef",ref:o,"aria-label":g.ariaLabel,"boundaries-padding":g.boundariesPadding,content:g.content,disabled:g.disabled,effect:g.effect,enterable:g.enterable,"fallback-placements":g.fallbackPlacements,"hide-after":g.hideAfter,"gpu-acceleration":g.gpuAcceleration,offset:g.offset,persistent:g.persistent,"popper-class":g.popperClass,"popper-style":g.popperStyle,placement:g.placement,"popper-options":g.popperOptions,pure:g.pure,"raw-content":g.rawContent,"reference-el":g.referenceEl,"trigger-target-el":g.triggerTargetEl,"show-after":g.showAfter,strategy:g.strategy,teleported:g.teleported,transition:g.transition,"virtual-triggering":g.virtualTriggering,"z-index":g.zIndex,"append-to":g.appendTo},{default:q(()=>[Ce(g.$slots,"content",{},()=>[g.rawContent?(G(),ce("span",{key:0,innerHTML:g.content},null,8,Mz)):(G(),ce("span",Az,xe(g.content),1))]),g.showArrow?(G(),ve(T(NH),{key:0,"arrow-offset":g.arrowOffset},null,8,["arrow-offset"])):Ae("v-if",!0)]),_:3},8,["aria-label","boundaries-padding","content","disabled","effect","enterable","fallback-placements","hide-after","gpu-acceleration","offset","persistent","popper-class","popper-style","placement","popper-options","pure","raw-content","reference-el","trigger-target-el","show-after","strategy","teleported","transition","virtual-triggering","z-index","append-to"])]),_:3},8,["role"]))}});var Lz=Ke(Ez,[["__file","tooltip.vue"]]);const Vs=Yt(Lz),Dz=Je({value:{type:[String,Number],default:""},max:{type:Number,default:99},isDot:Boolean,hidden:Boolean,type:{type:String,values:["primary","success","warning","info","danger"],default:"danger"}}),Iz=["textContent"],Oz=ie({name:"ElBadge"}),Rz=ie({...Oz,props:Dz,setup(e,{expose:t}){const r=e,n=Oe("badge"),i=k(()=>r.isDot?"":kt(r.value)&&kt(r.max)?r.max(G(),ce("div",{class:re(T(n).b())},[Ce(a.$slots,"default"),Z(ti,{name:`${T(n).namespace.value}-zoom-in-center`,persisted:""},{default:q(()=>[qt(te("sup",{class:re([T(n).e("content"),T(n).em("content",a.type),T(n).is("fixed",!!a.$slots.default),T(n).is("dot",a.isDot)]),textContent:xe(T(i))},null,10,Iz),[[Kn,!a.hidden&&(T(i)||a.isDot)]])]),_:1},8,["name"])],2))}});var kz=Ke(Rz,[["__file","badge.vue"]]);const Nz=Yt(kz),bA=Symbol("buttonGroupContextKey"),Bz=(e,t)=>{bu({from:"type.text",replacement:"link",version:"3.0.0",scope:"props",ref:"https://element-plus.org/en-US/component/button.html#button-attributes"},k(()=>e.type==="text"));const r=Le(bA,void 0),n=hh("button"),{form:i}=tf(),a=xi(k(()=>r==null?void 0:r.size)),o=vh(),s=$(),l=Ns(),u=k(()=>e.type||(r==null?void 0:r.type)||""),f=k(()=>{var v,p,m;return(m=(p=e.autoInsertSpace)!=null?p:(v=n.value)==null?void 0:v.autoInsertSpace)!=null?m:!1}),c=k(()=>e.tag==="button"?{ariaDisabled:o.value||e.loading,disabled:o.value||e.loading,autofocus:e.autofocus,type:e.nativeType}:{}),h=k(()=>{var v;const p=(v=l.default)==null?void 0:v.call(l);if(f.value&&(p==null?void 0:p.length)===1){const m=p[0];if((m==null?void 0:m.type)===Bs){const g=m.children;return new RegExp("^\\p{Unified_Ideograph}{2}$","u").test(g.trim())}}return!1});return{_disabled:o,_size:a,_type:u,_ref:s,_props:c,shouldAddSpace:h,handleClick:v=>{e.nativeType==="reset"&&(i==null||i.resetFields()),t("click",v)}}},pg=["default","primary","success","warning","info","danger","text",""],Fz=["button","submit","reset"],gg=Je({size:dh,disabled:Boolean,type:{type:String,values:pg,default:""},icon:{type:vr},nativeType:{type:String,values:Fz,default:"button"},loading:Boolean,loadingIcon:{type:vr,default:()=>Ly},plain:Boolean,text:Boolean,link:Boolean,bg:Boolean,autofocus:Boolean,round:Boolean,circle:Boolean,color:String,dark:Boolean,autoInsertSpace:{type:Boolean,default:void 0},tag:{type:Be([String,Object]),default:"button"}}),$z={click:e=>e instanceof MouseEvent};function er(e,t){Hz(e)&&(e="100%");var r=zz(e);return e=t===360?e:Math.min(t,Math.max(0,parseFloat(e))),r&&(e=parseInt(String(e*t),10)/100),Math.abs(e-t)<1e-6?1:(t===360?e=(e<0?e%t+t:e%t)/parseFloat(String(t)):e=e%t/parseFloat(String(t)),e)}function Lf(e){return Math.min(1,Math.max(0,e))}function Hz(e){return typeof e=="string"&&e.indexOf(".")!==-1&&parseFloat(e)===1}function zz(e){return typeof e=="string"&&e.indexOf("%")!==-1}function wA(e){return e=parseFloat(e),(isNaN(e)||e<0||e>1)&&(e=1),e}function Df(e){return e<=1?"".concat(Number(e)*100,"%"):e}function Ja(e){return e.length===1?"0"+e:String(e)}function Vz(e,t,r){return{r:er(e,255)*255,g:er(t,255)*255,b:er(r,255)*255}}function b1(e,t,r){e=er(e,255),t=er(t,255),r=er(r,255);var n=Math.max(e,t,r),i=Math.min(e,t,r),a=0,o=0,s=(n+i)/2;if(n===i)o=0,a=0;else{var l=n-i;switch(o=s>.5?l/(2-n-i):l/(n+i),n){case e:a=(t-r)/l+(t1&&(r-=1),r<1/6?e+(t-e)*(6*r):r<1/2?t:r<2/3?e+(t-e)*(2/3-r)*6:e}function Wz(e,t,r){var n,i,a;if(e=er(e,360),t=er(t,100),r=er(r,100),t===0)i=r,a=r,n=r;else{var o=r<.5?r*(1+t):r+t-r*t,s=2*r-o;n=ov(s,o,e+1/3),i=ov(s,o,e),a=ov(s,o,e-1/3)}return{r:n*255,g:i*255,b:a*255}}function w1(e,t,r){e=er(e,255),t=er(t,255),r=er(r,255);var n=Math.max(e,t,r),i=Math.min(e,t,r),a=0,o=n,s=n-i,l=n===0?0:s/n;if(n===i)a=0;else{switch(n){case e:a=(t-r)/s+(t>16,g:(e&65280)>>8,b:e&255}}var mg={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkgrey:"#a9a9a9",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",goldenrod:"#daa520",gold:"#ffd700",gray:"#808080",green:"#008000",greenyellow:"#adff2f",grey:"#808080",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavenderblush:"#fff0f5",lavender:"#e6e6fa",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightgrey:"#d3d3d3",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370db",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#db7093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};function qz(e){var t={r:0,g:0,b:0},r=1,n=null,i=null,a=null,o=!1,s=!1;return typeof e=="string"&&(e=Zz(e)),typeof e=="object"&&(si(e.r)&&si(e.g)&&si(e.b)?(t=Vz(e.r,e.g,e.b),o=!0,s=String(e.r).substr(-1)==="%"?"prgb":"rgb"):si(e.h)&&si(e.s)&&si(e.v)?(n=Df(e.s),i=Df(e.v),t=Gz(e.h,n,i),o=!0,s="hsv"):si(e.h)&&si(e.s)&&si(e.l)&&(n=Df(e.s),a=Df(e.l),t=Wz(e.h,n,a),o=!0,s="hsl"),Object.prototype.hasOwnProperty.call(e,"a")&&(r=e.a)),r=wA(r),{ok:o,format:e.format||s,r:Math.min(255,Math.max(t.r,0)),g:Math.min(255,Math.max(t.g,0)),b:Math.min(255,Math.max(t.b,0)),a:r}}var Kz="[-\\+]?\\d+%?",Xz="[-\\+]?\\d*\\.\\d+%?",Qi="(?:".concat(Xz,")|(?:").concat(Kz,")"),sv="[\\s|\\(]+(".concat(Qi,")[,|\\s]+(").concat(Qi,")[,|\\s]+(").concat(Qi,")\\s*\\)?"),lv="[\\s|\\(]+(".concat(Qi,")[,|\\s]+(").concat(Qi,")[,|\\s]+(").concat(Qi,")[,|\\s]+(").concat(Qi,")\\s*\\)?"),gn={CSS_UNIT:new RegExp(Qi),rgb:new RegExp("rgb"+sv),rgba:new RegExp("rgba"+lv),hsl:new RegExp("hsl"+sv),hsla:new RegExp("hsla"+lv),hsv:new RegExp("hsv"+sv),hsva:new RegExp("hsva"+lv),hex3:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex6:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,hex4:/^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,hex8:/^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/};function Zz(e){if(e=e.trim().toLowerCase(),e.length===0)return!1;var t=!1;if(mg[e])e=mg[e],t=!0;else if(e==="transparent")return{r:0,g:0,b:0,a:0,format:"name"};var r=gn.rgb.exec(e);return r?{r:r[1],g:r[2],b:r[3]}:(r=gn.rgba.exec(e),r?{r:r[1],g:r[2],b:r[3],a:r[4]}:(r=gn.hsl.exec(e),r?{h:r[1],s:r[2],l:r[3]}:(r=gn.hsla.exec(e),r?{h:r[1],s:r[2],l:r[3],a:r[4]}:(r=gn.hsv.exec(e),r?{h:r[1],s:r[2],v:r[3]}:(r=gn.hsva.exec(e),r?{h:r[1],s:r[2],v:r[3],a:r[4]}:(r=gn.hex8.exec(e),r?{r:kr(r[1]),g:kr(r[2]),b:kr(r[3]),a:x1(r[4]),format:t?"name":"hex8"}:(r=gn.hex6.exec(e),r?{r:kr(r[1]),g:kr(r[2]),b:kr(r[3]),format:t?"name":"hex"}:(r=gn.hex4.exec(e),r?{r:kr(r[1]+r[1]),g:kr(r[2]+r[2]),b:kr(r[3]+r[3]),a:x1(r[4]+r[4]),format:t?"name":"hex8"}:(r=gn.hex3.exec(e),r?{r:kr(r[1]+r[1]),g:kr(r[2]+r[2]),b:kr(r[3]+r[3]),format:t?"name":"hex"}:!1)))))))))}function si(e){return!!gn.CSS_UNIT.exec(String(e))}var SA=function(){function e(t,r){t===void 0&&(t=""),r===void 0&&(r={});var n;if(t instanceof e)return t;typeof t=="number"&&(t=jz(t)),this.originalInput=t;var i=qz(t);this.originalInput=t,this.r=i.r,this.g=i.g,this.b=i.b,this.a=i.a,this.roundA=Math.round(100*this.a)/100,this.format=(n=r.format)!==null&&n!==void 0?n:i.format,this.gradientType=r.gradientType,this.r<1&&(this.r=Math.round(this.r)),this.g<1&&(this.g=Math.round(this.g)),this.b<1&&(this.b=Math.round(this.b)),this.isValid=i.ok}return e.prototype.isDark=function(){return this.getBrightness()<128},e.prototype.isLight=function(){return!this.isDark()},e.prototype.getBrightness=function(){var t=this.toRgb();return(t.r*299+t.g*587+t.b*114)/1e3},e.prototype.getLuminance=function(){var t=this.toRgb(),r,n,i,a=t.r/255,o=t.g/255,s=t.b/255;return a<=.03928?r=a/12.92:r=Math.pow((a+.055)/1.055,2.4),o<=.03928?n=o/12.92:n=Math.pow((o+.055)/1.055,2.4),s<=.03928?i=s/12.92:i=Math.pow((s+.055)/1.055,2.4),.2126*r+.7152*n+.0722*i},e.prototype.getAlpha=function(){return this.a},e.prototype.setAlpha=function(t){return this.a=wA(t),this.roundA=Math.round(100*this.a)/100,this},e.prototype.isMonochrome=function(){var t=this.toHsl().s;return t===0},e.prototype.toHsv=function(){var t=w1(this.r,this.g,this.b);return{h:t.h*360,s:t.s,v:t.v,a:this.a}},e.prototype.toHsvString=function(){var t=w1(this.r,this.g,this.b),r=Math.round(t.h*360),n=Math.round(t.s*100),i=Math.round(t.v*100);return this.a===1?"hsv(".concat(r,", ").concat(n,"%, ").concat(i,"%)"):"hsva(".concat(r,", ").concat(n,"%, ").concat(i,"%, ").concat(this.roundA,")")},e.prototype.toHsl=function(){var t=b1(this.r,this.g,this.b);return{h:t.h*360,s:t.s,l:t.l,a:this.a}},e.prototype.toHslString=function(){var t=b1(this.r,this.g,this.b),r=Math.round(t.h*360),n=Math.round(t.s*100),i=Math.round(t.l*100);return this.a===1?"hsl(".concat(r,", ").concat(n,"%, ").concat(i,"%)"):"hsla(".concat(r,", ").concat(n,"%, ").concat(i,"%, ").concat(this.roundA,")")},e.prototype.toHex=function(t){return t===void 0&&(t=!1),S1(this.r,this.g,this.b,t)},e.prototype.toHexString=function(t){return t===void 0&&(t=!1),"#"+this.toHex(t)},e.prototype.toHex8=function(t){return t===void 0&&(t=!1),Uz(this.r,this.g,this.b,this.a,t)},e.prototype.toHex8String=function(t){return t===void 0&&(t=!1),"#"+this.toHex8(t)},e.prototype.toRgb=function(){return{r:Math.round(this.r),g:Math.round(this.g),b:Math.round(this.b),a:this.a}},e.prototype.toRgbString=function(){var t=Math.round(this.r),r=Math.round(this.g),n=Math.round(this.b);return this.a===1?"rgb(".concat(t,", ").concat(r,", ").concat(n,")"):"rgba(".concat(t,", ").concat(r,", ").concat(n,", ").concat(this.roundA,")")},e.prototype.toPercentageRgb=function(){var t=function(r){return"".concat(Math.round(er(r,255)*100),"%")};return{r:t(this.r),g:t(this.g),b:t(this.b),a:this.a}},e.prototype.toPercentageRgbString=function(){var t=function(r){return Math.round(er(r,255)*100)};return this.a===1?"rgb(".concat(t(this.r),"%, ").concat(t(this.g),"%, ").concat(t(this.b),"%)"):"rgba(".concat(t(this.r),"%, ").concat(t(this.g),"%, ").concat(t(this.b),"%, ").concat(this.roundA,")")},e.prototype.toName=function(){if(this.a===0)return"transparent";if(this.a<1)return!1;for(var t="#"+S1(this.r,this.g,this.b,!1),r=0,n=Object.entries(mg);r=0,a=!r&&i&&(t.startsWith("hex")||t==="name");return a?t==="name"&&this.a===0?this.toName():this.toRgbString():(t==="rgb"&&(n=this.toRgbString()),t==="prgb"&&(n=this.toPercentageRgbString()),(t==="hex"||t==="hex6")&&(n=this.toHexString()),t==="hex3"&&(n=this.toHexString(!0)),t==="hex4"&&(n=this.toHex8String(!0)),t==="hex8"&&(n=this.toHex8String()),t==="name"&&(n=this.toName()),t==="hsl"&&(n=this.toHslString()),t==="hsv"&&(n=this.toHsvString()),n||this.toHexString())},e.prototype.toNumber=function(){return(Math.round(this.r)<<16)+(Math.round(this.g)<<8)+Math.round(this.b)},e.prototype.clone=function(){return new e(this.toString())},e.prototype.lighten=function(t){t===void 0&&(t=10);var r=this.toHsl();return r.l+=t/100,r.l=Lf(r.l),new e(r)},e.prototype.brighten=function(t){t===void 0&&(t=10);var r=this.toRgb();return r.r=Math.max(0,Math.min(255,r.r-Math.round(255*-(t/100)))),r.g=Math.max(0,Math.min(255,r.g-Math.round(255*-(t/100)))),r.b=Math.max(0,Math.min(255,r.b-Math.round(255*-(t/100)))),new e(r)},e.prototype.darken=function(t){t===void 0&&(t=10);var r=this.toHsl();return r.l-=t/100,r.l=Lf(r.l),new e(r)},e.prototype.tint=function(t){return t===void 0&&(t=10),this.mix("white",t)},e.prototype.shade=function(t){return t===void 0&&(t=10),this.mix("black",t)},e.prototype.desaturate=function(t){t===void 0&&(t=10);var r=this.toHsl();return r.s-=t/100,r.s=Lf(r.s),new e(r)},e.prototype.saturate=function(t){t===void 0&&(t=10);var r=this.toHsl();return r.s+=t/100,r.s=Lf(r.s),new e(r)},e.prototype.greyscale=function(){return this.desaturate(100)},e.prototype.spin=function(t){var r=this.toHsl(),n=(r.h+t)%360;return r.h=n<0?360+n:n,new e(r)},e.prototype.mix=function(t,r){r===void 0&&(r=50);var n=this.toRgb(),i=new e(t).toRgb(),a=r/100,o={r:(i.r-n.r)*a+n.r,g:(i.g-n.g)*a+n.g,b:(i.b-n.b)*a+n.b,a:(i.a-n.a)*a+n.a};return new e(o)},e.prototype.analogous=function(t,r){t===void 0&&(t=6),r===void 0&&(r=30);var n=this.toHsl(),i=360/r,a=[this];for(n.h=(n.h-(i*t>>1)+720)%360;--t;)n.h=(n.h+i)%360,a.push(new e(n));return a},e.prototype.complement=function(){var t=this.toHsl();return t.h=(t.h+180)%360,new e(t)},e.prototype.monochromatic=function(t){t===void 0&&(t=6);for(var r=this.toHsv(),n=r.h,i=r.s,a=r.v,o=[],s=1/t;t--;)o.push(new e({h:n,s:i,v:a})),a=(a+s)%1;return o},e.prototype.splitcomplement=function(){var t=this.toHsl(),r=t.h;return[this,new e({h:(r+72)%360,s:t.s,l:t.l}),new e({h:(r+216)%360,s:t.s,l:t.l})]},e.prototype.onBackground=function(t){var r=this.toRgb(),n=new e(t).toRgb();return new e({r:n.r+(r.r-n.r)*r.a,g:n.g+(r.g-n.g)*r.a,b:n.b+(r.b-n.b)*r.a})},e.prototype.triad=function(){return this.polyad(3)},e.prototype.tetrad=function(){return this.polyad(4)},e.prototype.polyad=function(t){for(var r=this.toHsl(),n=r.h,i=[this],a=360/t,o=1;o{let n={};const i=e.color;if(i){const a=new SA(i),o=e.dark?a.tint(20).toString():Oi(a,20);if(e.plain)n=r.cssVarBlock({"bg-color":e.dark?Oi(a,90):a.tint(90).toString(),"text-color":i,"border-color":e.dark?Oi(a,50):a.tint(50).toString(),"hover-text-color":`var(${r.cssVarName("color-white")})`,"hover-bg-color":i,"hover-border-color":i,"active-bg-color":o,"active-text-color":`var(${r.cssVarName("color-white")})`,"active-border-color":o}),t.value&&(n[r.cssVarBlockName("disabled-bg-color")]=e.dark?Oi(a,90):a.tint(90).toString(),n[r.cssVarBlockName("disabled-text-color")]=e.dark?Oi(a,50):a.tint(50).toString(),n[r.cssVarBlockName("disabled-border-color")]=e.dark?Oi(a,80):a.tint(80).toString());else{const s=e.dark?Oi(a,30):a.tint(30).toString(),l=a.isDark()?`var(${r.cssVarName("color-white")})`:`var(${r.cssVarName("color-black")})`;if(n=r.cssVarBlock({"bg-color":i,"text-color":l,"border-color":i,"hover-bg-color":s,"hover-text-color":l,"hover-border-color":s,"active-bg-color":o,"active-border-color":o}),t.value){const u=e.dark?Oi(a,50):a.tint(50).toString();n[r.cssVarBlockName("disabled-bg-color")]=u,n[r.cssVarBlockName("disabled-text-color")]=e.dark?"rgba(255, 255, 255, 0.5)":`var(${r.cssVarName("color-white")})`,n[r.cssVarBlockName("disabled-border-color")]=u}}}return n})}const Jz=ie({name:"ElButton"}),e8=ie({...Jz,props:gg,emits:$z,setup(e,{expose:t,emit:r}){const n=e,i=Qz(n),a=Oe("button"),{_ref:o,_size:s,_type:l,_disabled:u,_props:f,shouldAddSpace:c,handleClick:h}=Bz(n,r);return t({ref:o,size:s,type:l,disabled:u,shouldAddSpace:c}),(d,v)=>(G(),ve(Vt(d.tag),ei({ref_key:"_ref",ref:o},T(f),{class:[T(a).b(),T(a).m(T(l)),T(a).m(T(s)),T(a).is("disabled",T(u)),T(a).is("loading",d.loading),T(a).is("plain",d.plain),T(a).is("round",d.round),T(a).is("circle",d.circle),T(a).is("text",d.text),T(a).is("link",d.link),T(a).is("has-bg",d.bg)],style:T(i),onClick:T(h)}),{default:q(()=>[d.loading?(G(),ce(ft,{key:0},[d.$slots.loading?Ce(d.$slots,"loading",{key:0}):(G(),ve(T(Bt),{key:1,class:re(T(a).is("loading"))},{default:q(()=>[(G(),ve(Vt(d.loadingIcon)))]),_:1},8,["class"]))],64)):d.icon||d.$slots.icon?(G(),ve(T(Bt),{key:1},{default:q(()=>[d.icon?(G(),ve(Vt(d.icon),{key:0})):Ce(d.$slots,"icon",{key:1})]),_:3})):Ae("v-if",!0),d.$slots.default?(G(),ce("span",{key:2,class:re({[T(a).em("text","expand")]:T(c)})},[Ce(d.$slots,"default")],2)):Ae("v-if",!0)]),_:3},16,["class","style","onClick"]))}});var t8=Ke(e8,[["__file","button.vue"]]);const r8={size:gg.size,type:gg.type},n8=ie({name:"ElButtonGroup"}),i8=ie({...n8,props:r8,setup(e){const t=e;Dt(bA,Ln({size:wn(t,"size"),type:wn(t,"type")}));const r=Oe("button");return(n,i)=>(G(),ce("div",{class:re(`${T(r).b("group")}`)},[Ce(n.$slots,"default")],2))}});var xA=Ke(i8,[["__file","button-group.vue"]]);const yg=Yt(t8,{ButtonGroup:xA});pa(xA);var a8=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};const Wi=new Map;let C1;At&&(document.addEventListener("mousedown",e=>C1=e),document.addEventListener("mouseup",e=>{for(const t of Wi.values())for(const{documentHandler:r}of t)r(e,C1)}));function T1(e,t){let r=[];return Array.isArray(t.arg)?r=t.arg:mo(t.arg)&&r.push(t.arg),function(n,i){const a=t.instance.popperRef,o=n.target,s=i==null?void 0:i.target,l=!t||!t.instance,u=!o||!s,f=e.contains(o)||e.contains(s),c=e===o,h=r.length&&r.some(v=>v==null?void 0:v.contains(o))||r.length&&r.includes(s),d=a&&(a.contains(o)||a.contains(s));l||u||f||c||h||d||t.value(n,i)}}const CA={beforeMount(e,t){Wi.has(e)||Wi.set(e,[]),Wi.get(e).push({documentHandler:T1(e,t),bindingFn:t.value})},updated(e,t){Wi.has(e)||Wi.set(e,[]);const r=Wi.get(e),n=r.findIndex(a=>a.bindingFn===t.oldValue),i={documentHandler:T1(e,t),bindingFn:t.value};n>=0?r.splice(n,1,i):r.push(i)},unmounted(e){Wi.delete(e)}};var M1=!1,qa,_g,bg,Rc,kc,TA,Nc,wg,Sg,xg,MA,Cg,Tg,AA,PA;function yr(){if(!M1){M1=!0;var e=navigator.userAgent,t=/(?:MSIE.(\d+\.\d+))|(?:(?:Firefox|GranParadiso|Iceweasel).(\d+\.\d+))|(?:Opera(?:.+Version.|.)(\d+\.\d+))|(?:AppleWebKit.(\d+(?:\.\d+)?))|(?:Trident\/\d+\.\d+.*rv:(\d+\.\d+))/.exec(e),r=/(Mac OS X)|(Windows)|(Linux)/.exec(e);if(Cg=/\b(iPhone|iP[ao]d)/.exec(e),Tg=/\b(iP[ao]d)/.exec(e),xg=/Android/i.exec(e),AA=/FBAN\/\w+;/i.exec(e),PA=/Mobile/i.exec(e),MA=!!/Win64/.exec(e),t){qa=t[1]?parseFloat(t[1]):t[5]?parseFloat(t[5]):NaN,qa&&document&&document.documentMode&&(qa=document.documentMode);var n=/(?:Trident\/(\d+.\d+))/.exec(e);TA=n?parseFloat(n[1])+4:qa,_g=t[2]?parseFloat(t[2]):NaN,bg=t[3]?parseFloat(t[3]):NaN,Rc=t[4]?parseFloat(t[4]):NaN,Rc?(t=/(?:Chrome\/(\d+\.\d+))/.exec(e),kc=t&&t[1]?parseFloat(t[1]):NaN):kc=NaN}else qa=_g=bg=kc=Rc=NaN;if(r){if(r[1]){var i=/(?:Mac OS X (\d+(?:[._]\d+)?))/.exec(e);Nc=i?parseFloat(i[1].replace("_",".")):!0}else Nc=!1;wg=!!r[2],Sg=!!r[3]}else Nc=wg=Sg=!1}}var Mg={ie:function(){return yr()||qa},ieCompatibilityMode:function(){return yr()||TA>qa},ie64:function(){return Mg.ie()&&MA},firefox:function(){return yr()||_g},opera:function(){return yr()||bg},webkit:function(){return yr()||Rc},safari:function(){return Mg.webkit()},chrome:function(){return yr()||kc},windows:function(){return yr()||wg},osx:function(){return yr()||Nc},linux:function(){return yr()||Sg},iphone:function(){return yr()||Cg},mobile:function(){return yr()||Cg||Tg||xg||PA},nativeApp:function(){return yr()||AA},android:function(){return yr()||xg},ipad:function(){return yr()||Tg}},o8=Mg,If=!!(typeof window<"u"&&window.document&&window.document.createElement),s8={canUseDOM:If,canUseWorkers:typeof Worker<"u",canUseEventListeners:If&&!!(window.addEventListener||window.attachEvent),canUseViewport:If&&!!window.screen,isInWorker:!If},EA=s8,LA;EA.canUseDOM&&(LA=document.implementation&&document.implementation.hasFeature&&document.implementation.hasFeature("","")!==!0);function l8(e,t){if(!EA.canUseDOM||t&&!("addEventListener"in document))return!1;var r="on"+e,n=r in document;if(!n){var i=document.createElement("div");i.setAttribute(r,"return;"),n=typeof i[r]=="function"}return!n&&LA&&e==="wheel"&&(n=document.implementation.hasFeature("Events.wheel","3.0")),n}var u8=l8,A1=10,P1=40,E1=800;function DA(e){var t=0,r=0,n=0,i=0;return"detail"in e&&(r=e.detail),"wheelDelta"in e&&(r=-e.wheelDelta/120),"wheelDeltaY"in e&&(r=-e.wheelDeltaY/120),"wheelDeltaX"in e&&(t=-e.wheelDeltaX/120),"axis"in e&&e.axis===e.HORIZONTAL_AXIS&&(t=r,r=0),n=t*A1,i=r*A1,"deltaY"in e&&(i=e.deltaY),"deltaX"in e&&(n=e.deltaX),(n||i)&&e.deltaMode&&(e.deltaMode==1?(n*=P1,i*=P1):(n*=E1,i*=E1)),n&&!t&&(t=n<1?-1:1),i&&!r&&(r=i<1?-1:1),{spinX:t,spinY:r,pixelX:n,pixelY:i}}DA.getEventType=function(){return o8.firefox()?"DOMMouseScroll":u8("wheel")?"wheel":"mousewheel"};var f8=DA;/** * Checks if an event is supported in the current execution environment. * * NOTE: This will not work correctly for non-generic events such as `change`, @@ -38,11 +38,11 @@ var DD=Object.defineProperty;var ID=(e,t,r)=>t in e?DD(e,t,{enumerable:!0,config * @return {boolean} True if the event is supported. * @internal * @license Modernizr 3.0.0pre (Custom Build) | MIT -*/const c8=function(e,t){if(e&&e.addEventListener){const r=function(n){const i=f8(n);t&&Reflect.apply(t,this,[n,i])};e.addEventListener("wheel",r,{passive:!0})}},d8={beforeMount(e,t){c8(e,t.value)}},IA={modelValue:{type:[Number,String,Boolean],default:void 0},label:{type:[String,Boolean,Number,Object],default:void 0},indeterminate:Boolean,disabled:Boolean,checked:Boolean,name:{type:String,default:void 0},trueLabel:{type:[String,Number],default:void 0},falseLabel:{type:[String,Number],default:void 0},id:{type:String,default:void 0},controls:{type:String,default:void 0},border:Boolean,size:dh,tabindex:[String,Number],validateEvent:{type:Boolean,default:!0}},OA={[wi]:e=>ze(e)||Rt(e)||zr(e),change:e=>ze(e)||Rt(e)||zr(e)},zs=Symbol("checkboxGroupContextKey"),h8=({model:e,isChecked:t})=>{const r=Le(zs,void 0),n=k(()=>{var a,o;const s=(a=r==null?void 0:r.max)==null?void 0:a.value,l=(o=r==null?void 0:r.min)==null?void 0:o.value;return!ys(s)&&e.value.length>=s&&!t.value||!ys(l)&&e.value.length<=l&&t.value});return{isDisabled:vh(k(()=>(r==null?void 0:r.disabled.value)||n.value)),isLimitDisabled:n}},v8=(e,{model:t,isLimitExceeded:r,hasOwnLabel:n,isDisabled:i,isLabeledByFormItem:a})=>{const o=Le(zs,void 0),{formItem:s}=tf(),{emit:l}=it();function u(v){var p,m;return v===e.trueLabel||v===!0?(p=e.trueLabel)!=null?p:!0:(m=e.falseLabel)!=null?m:!1}function f(v,p){l("change",u(v),p)}function c(v){if(r.value)return;const p=v.target;l("change",u(p.checked),v)}async function h(v){r.value||!n.value&&!i.value&&a.value&&(v.composedPath().some(g=>g.tagName==="LABEL")||(t.value=u([!1,e.falseLabel].includes(t.value)),await kt(),f(t.value,v)))}const d=k(()=>(o==null?void 0:o.validateEvent)||e.validateEvent);return we(()=>e.modelValue,()=>{d.value&&(s==null||s.validate("change").catch(v=>void 0))}),{handleChange:c,onClickRoot:h}},p8=e=>{const t=$(!1),{emit:r}=it(),n=Le(zs,void 0),i=k(()=>ys(n)===!1),a=$(!1),o=k({get(){var s,l;return i.value?(s=n==null?void 0:n.modelValue)==null?void 0:s.value:(l=e.modelValue)!=null?l:t.value},set(s){var l,u;i.value&&_e(s)?(a.value=((l=n==null?void 0:n.max)==null?void 0:l.value)!==void 0&&s.length>(n==null?void 0:n.max.value)&&s.length>o.value.length,a.value===!1&&((u=n==null?void 0:n.changeEvent)==null||u.call(n,s))):(r(wi,s),t.value=s)}});return{model:o,isGroup:i,isLimitExceeded:a}},g8=(e,t,{model:r})=>{const n=Le(zs,void 0),i=$(!1),a=k(()=>{const u=r.value;return zr(u)?u:_e(u)?qe(e.label)?u.map(Qe).some(f=>p3(f,e.label)):u.map(Qe).includes(e.label):u!=null?u===e.trueLabel:!!u}),o=xi(k(()=>{var u;return(u=n==null?void 0:n.size)==null?void 0:u.value}),{prop:!0}),s=xi(k(()=>{var u;return(u=n==null?void 0:n.size)==null?void 0:u.value})),l=k(()=>!!t.default||!ms(e.label));return{checkboxButtonSize:o,isChecked:a,isFocused:i,checkboxSize:s,hasOwnLabel:l}},m8=(e,{model:t})=>{function r(){_e(t.value)&&!t.value.includes(e.label)?t.value.push(e.label):t.value=e.trueLabel||!0}e.checked&&r()},RA=(e,t)=>{const{formItem:r}=tf(),{model:n,isGroup:i,isLimitExceeded:a}=p8(e),{isFocused:o,isChecked:s,checkboxButtonSize:l,checkboxSize:u,hasOwnLabel:f}=g8(e,t,{model:n}),{isDisabled:c}=h8({model:n,isChecked:s}),{inputId:h,isLabeledByFormItem:d}=Vy(e,{formItemContext:r,disableIdGeneration:f,disableIdManagement:i}),{handleChange:v,onClickRoot:p}=v8(e,{model:n,isLimitExceeded:a,hasOwnLabel:f,isDisabled:c,isLabeledByFormItem:d});return m8(e,{model:n}),{inputId:h,isLabeledByFormItem:d,isChecked:s,isDisabled:c,isFocused:o,checkboxButtonSize:l,checkboxSize:u,hasOwnLabel:f,model:n,handleChange:v,onClickRoot:p}},y8=["id","indeterminate","name","tabindex","disabled","true-value","false-value"],_8=["id","indeterminate","disabled","value","name","tabindex"],b8=ie({name:"ElCheckbox"}),w8=ie({...b8,props:IA,emits:OA,setup(e){const t=e,r=Rs(),{inputId:n,isLabeledByFormItem:i,isChecked:a,isDisabled:o,isFocused:s,checkboxSize:l,hasOwnLabel:u,model:f,handleChange:c,onClickRoot:h}=RA(t,r),d=Oe("checkbox"),v=k(()=>[d.b(),d.m(l.value),d.is("disabled",o.value),d.is("bordered",t.border),d.is("checked",a.value)]),p=k(()=>[d.e("input"),d.is("disabled",o.value),d.is("checked",a.value),d.is("indeterminate",t.indeterminate),d.is("focus",s.value)]);return(m,g)=>(G(),de(Vt(!T(u)&&T(i)?"span":"label"),{class:re(T(v)),"aria-controls":m.indeterminate?m.controls:null,onClick:T(h)},{default:j(()=>[ee("span",{class:re(T(p))},[m.trueLabel||m.falseLabel?qt((G(),ce("input",{key:0,id:T(n),"onUpdate:modelValue":g[0]||(g[0]=y=>Pt(f)?f.value=y:null),class:re(T(d).e("original")),type:"checkbox",indeterminate:m.indeterminate,name:m.name,tabindex:m.tabindex,disabled:T(o),"true-value":m.trueLabel,"false-value":m.falseLabel,onChange:g[1]||(g[1]=(...y)=>T(c)&&T(c)(...y)),onFocus:g[2]||(g[2]=y=>s.value=!0),onBlur:g[3]||(g[3]=y=>s.value=!1),onClick:g[4]||(g[4]=ua(()=>{},["stop"]))},null,42,y8)),[[sd,T(f)]]):qt((G(),ce("input",{key:1,id:T(n),"onUpdate:modelValue":g[5]||(g[5]=y=>Pt(f)?f.value=y:null),class:re(T(d).e("original")),type:"checkbox",indeterminate:m.indeterminate,disabled:T(o),value:m.label,name:m.name,tabindex:m.tabindex,onChange:g[6]||(g[6]=(...y)=>T(c)&&T(c)(...y)),onFocus:g[7]||(g[7]=y=>s.value=!0),onBlur:g[8]||(g[8]=y=>s.value=!1),onClick:g[9]||(g[9]=ua(()=>{},["stop"]))},null,42,_8)),[[sd,T(f)]]),ee("span",{class:re(T(d).e("inner"))},null,2)],2),T(u)?(G(),ce("span",{key:0,class:re(T(d).e("label"))},[Ce(m.$slots,"default"),m.$slots.default?Ae("v-if",!0):(G(),ce(ft,{key:0},[mt(be(m.label),1)],64))],2)):Ae("v-if",!0)]),_:3},8,["class","aria-controls","onClick"]))}});var S8=Ke(w8,[["__file","checkbox.vue"]]);const x8=["name","tabindex","disabled","true-value","false-value"],C8=["name","tabindex","disabled","value"],T8=ie({name:"ElCheckboxButton"}),M8=ie({...T8,props:IA,emits:OA,setup(e){const t=e,r=Rs(),{isFocused:n,isChecked:i,isDisabled:a,checkboxButtonSize:o,model:s,handleChange:l}=RA(t,r),u=Le(zs,void 0),f=Oe("checkbox"),c=k(()=>{var d,v,p,m;const g=(v=(d=u==null?void 0:u.fill)==null?void 0:d.value)!=null?v:"";return{backgroundColor:g,borderColor:g,color:(m=(p=u==null?void 0:u.textColor)==null?void 0:p.value)!=null?m:"",boxShadow:g?`-1px 0 0 0 ${g}`:void 0}}),h=k(()=>[f.b("button"),f.bm("button",o.value),f.is("disabled",a.value),f.is("checked",i.value),f.is("focus",n.value)]);return(d,v)=>(G(),ce("label",{class:re(T(h))},[d.trueLabel||d.falseLabel?qt((G(),ce("input",{key:0,"onUpdate:modelValue":v[0]||(v[0]=p=>Pt(s)?s.value=p:null),class:re(T(f).be("button","original")),type:"checkbox",name:d.name,tabindex:d.tabindex,disabled:T(a),"true-value":d.trueLabel,"false-value":d.falseLabel,onChange:v[1]||(v[1]=(...p)=>T(l)&&T(l)(...p)),onFocus:v[2]||(v[2]=p=>n.value=!0),onBlur:v[3]||(v[3]=p=>n.value=!1),onClick:v[4]||(v[4]=ua(()=>{},["stop"]))},null,42,x8)),[[sd,T(s)]]):qt((G(),ce("input",{key:1,"onUpdate:modelValue":v[5]||(v[5]=p=>Pt(s)?s.value=p:null),class:re(T(f).be("button","original")),type:"checkbox",name:d.name,tabindex:d.tabindex,disabled:T(a),value:d.label,onChange:v[6]||(v[6]=(...p)=>T(l)&&T(l)(...p)),onFocus:v[7]||(v[7]=p=>n.value=!0),onBlur:v[8]||(v[8]=p=>n.value=!1),onClick:v[9]||(v[9]=ua(()=>{},["stop"]))},null,42,C8)),[[sd,T(s)]]),d.$slots.default||d.label?(G(),ce("span",{key:2,class:re(T(f).be("button","inner")),style:ct(T(i)?T(c):void 0)},[Ce(d.$slots,"default",{},()=>[mt(be(d.label),1)])],6)):Ae("v-if",!0)],2))}});var kA=Ke(M8,[["__file","checkbox-button.vue"]]);const A8=Je({modelValue:{type:Be(Array),default:()=>[]},disabled:Boolean,min:Number,max:Number,size:dh,label:String,fill:String,textColor:String,tag:{type:String,default:"div"},validateEvent:{type:Boolean,default:!0}}),P8={[wi]:e=>_e(e),change:e=>_e(e)},E8=ie({name:"ElCheckboxGroup"}),L8=ie({...E8,props:A8,emits:P8,setup(e,{emit:t}){const r=e,n=Oe("checkbox"),{formItem:i}=tf(),{inputId:a,isLabeledByFormItem:o}=Vy(r,{formItemContext:i}),s=async u=>{t(wi,u),await kt(),t("change",u)},l=k({get(){return r.modelValue},set(u){s(u)}});return Dt(zs,{...b3(Kd(r),["size","min","max","disabled","validateEvent","fill","textColor"]),modelValue:l,changeEvent:s}),we(()=>r.modelValue,()=>{r.validateEvent&&(i==null||i.validate("change").catch(u=>void 0))}),(u,f)=>{var c;return G(),de(Vt(u.tag),{id:T(a),class:re(T(n).b("group")),role:"group","aria-label":T(o)?void 0:u.label||"checkbox-group","aria-labelledby":T(o)?(c=T(i))==null?void 0:c.labelId:void 0},{default:j(()=>[Ce(u.$slots,"default")]),_:3},8,["id","class","aria-label","aria-labelledby"])}}});var NA=Ke(L8,[["__file","checkbox-group.vue"]]);const Cs=Yt(S8,{CheckboxButton:kA,CheckboxGroup:NA});pa(kA);pa(NA);const D8=Je({type:{type:String,values:["success","info","warning","danger",""],default:""},closable:Boolean,disableTransitions:Boolean,hit:Boolean,color:{type:String,default:""},size:{type:String,values:Bs,default:""},effect:{type:String,values:["dark","light","plain"],default:"light"},round:Boolean}),I8={close:e=>e instanceof MouseEvent,click:e=>e instanceof MouseEvent},O8=ie({name:"ElTag"}),R8=ie({...O8,props:D8,emits:I8,setup(e,{emit:t}){const r=e,n=xi(),i=Oe("tag"),a=k(()=>{const{type:l,hit:u,effect:f,closable:c,round:h}=r;return[i.b(),i.is("closable",c),i.m(l),i.m(n.value),i.m(f),i.is("hit",u),i.is("round",h)]}),o=l=>{t("close",l)},s=l=>{t("click",l)};return(l,u)=>l.disableTransitions?(G(),ce("span",{key:0,class:re(T(a)),style:ct({backgroundColor:l.color}),onClick:s},[ee("span",{class:re(T(i).e("content"))},[Ce(l.$slots,"default")],2),l.closable?(G(),de(T(Nt),{key:0,class:re(T(i).e("close")),onClick:ua(o,["stop"])},{default:j(()=>[Z(T(vd))]),_:1},8,["class","onClick"])):Ae("v-if",!0)],6)):(G(),de(ti,{key:1,name:`${T(i).namespace.value}-zoom-in-center`,appear:""},{default:j(()=>[ee("span",{class:re(T(a)),style:ct({backgroundColor:l.color}),onClick:s},[ee("span",{class:re(T(i).e("content"))},[Ce(l.$slots,"default")],2),l.closable?(G(),de(T(Nt),{key:0,class:re(T(i).e("close")),onClick:ua(o,["stop"])},{default:j(()=>[Z(T(vd))]),_:1},8,["class","onClick"])):Ae("v-if",!0)],6)]),_:3},8,["name"]))}});var k8=Ke(R8,[["__file","tag.vue"]]);const N8=Yt(k8),BA=Symbol("rowContextKey"),B8=["start","center","end","space-around","space-between","space-evenly"],F8=["top","middle","bottom"],$8=Je({tag:{type:String,default:"div"},gutter:{type:Number,default:0},justify:{type:String,values:B8,default:"start"},align:{type:String,values:F8}}),H8=ie({name:"ElRow"}),z8=ie({...H8,props:$8,setup(e){const t=e,r=Oe("row"),n=k(()=>t.gutter);Dt(BA,{gutter:n});const i=k(()=>{const o={};return t.gutter&&(o.marginRight=o.marginLeft=`-${t.gutter/2}px`),o}),a=k(()=>[r.b(),r.is(`justify-${t.justify}`,t.justify!=="start"),r.is(`align-${t.align}`,!!t.align)]);return(o,s)=>(G(),de(Vt(o.tag),{class:re(T(a)),style:ct(T(i))},{default:j(()=>[Ce(o.$slots,"default")]),_:3},8,["class","style"]))}});var V8=Ke(z8,[["__file","row.vue"]]);const FA=Yt(V8),W8=Je({tag:{type:String,default:"div"},span:{type:Number,default:24},offset:{type:Number,default:0},pull:{type:Number,default:0},push:{type:Number,default:0},xs:{type:Be([Number,Object]),default:()=>ja({})},sm:{type:Be([Number,Object]),default:()=>ja({})},md:{type:Be([Number,Object]),default:()=>ja({})},lg:{type:Be([Number,Object]),default:()=>ja({})},xl:{type:Be([Number,Object]),default:()=>ja({})}}),G8=ie({name:"ElCol"}),U8=ie({...G8,props:W8,setup(e){const t=e,{gutter:r}=Le(BA,{gutter:k(()=>0)}),n=Oe("col"),i=k(()=>{const o={};return r.value&&(o.paddingLeft=o.paddingRight=`${r.value/2}px`),o}),a=k(()=>{const o=[];return["span","offset","pull","push"].forEach(u=>{const f=t[u];Rt(f)&&(u==="span"?o.push(n.b(`${t[u]}`)):f>0&&o.push(n.b(`${u}-${t[u]}`)))}),["xs","sm","md","lg","xl"].forEach(u=>{Rt(t[u])?o.push(n.b(`${u}-${t[u]}`)):qe(t[u])&&Object.entries(t[u]).forEach(([f,c])=>{o.push(f!=="span"?n.b(`${u}-${f}-${c}`):n.b(`${u}-${c}`))})}),r.value&&o.push(n.is("guttered")),[n.b(),o]});return(o,s)=>(G(),de(Vt(o.tag),{class:re(T(a)),style:ct(T(i))},{default:j(()=>[Ce(o.$slots,"default")]),_:3},8,["class","style"]))}});var Y8=Ke(U8,[["__file","col.vue"]]);const $A=Yt(Y8),j8=ie({name:"ElCollapseTransition"}),q8=ie({...j8,setup(e){const t=Oe("collapse-transition"),r=i=>{i.style.maxHeight="",i.style.overflow=i.dataset.oldOverflow,i.style.paddingTop=i.dataset.oldPaddingTop,i.style.paddingBottom=i.dataset.oldPaddingBottom},n={beforeEnter(i){i.dataset||(i.dataset={}),i.dataset.oldPaddingTop=i.style.paddingTop,i.dataset.oldPaddingBottom=i.style.paddingBottom,i.style.height&&(i.dataset.elExistsHeight=i.style.height),i.style.maxHeight=0,i.style.paddingTop=0,i.style.paddingBottom=0},enter(i){requestAnimationFrame(()=>{i.dataset.oldOverflow=i.style.overflow,i.dataset.elExistsHeight?i.style.maxHeight=i.dataset.elExistsHeight:i.scrollHeight!==0?i.style.maxHeight=`${i.scrollHeight}px`:i.style.maxHeight=0,i.style.paddingTop=i.dataset.oldPaddingTop,i.style.paddingBottom=i.dataset.oldPaddingBottom,i.style.overflow="hidden"})},afterEnter(i){i.style.maxHeight="",i.style.overflow=i.dataset.oldOverflow},enterCancelled(i){r(i)},beforeLeave(i){i.dataset||(i.dataset={}),i.dataset.oldPaddingTop=i.style.paddingTop,i.dataset.oldPaddingBottom=i.style.paddingBottom,i.dataset.oldOverflow=i.style.overflow,i.style.maxHeight=`${i.scrollHeight}px`,i.style.overflow="hidden"},leave(i){i.scrollHeight!==0&&(i.style.maxHeight=0,i.style.paddingTop=0,i.style.paddingBottom=0)},afterLeave(i){r(i)},leaveCancelled(i){r(i)}};return(i,a)=>(G(),de(ti,ei({name:T(t).b()},YI(n)),{default:j(()=>[Ce(i.$slots,"default")]),_:3},16,["name"]))}});var Bc=Ke(q8,[["__file","collapse-transition.vue"]]);Bc.install=e=>{e.component(Bc.name,Bc)};const K8=Bc,X8=Je({mask:{type:Boolean,default:!0},customMaskEvent:{type:Boolean,default:!1},overlayClass:{type:Be([String,Array,Object])},zIndex:{type:Be([String,Number])}}),Z8={click:e=>e instanceof MouseEvent},Q8="overlay";var J8=ie({name:"ElOverlay",props:X8,emits:Z8,setup(e,{slots:t,emit:r}){const n=Oe(Q8),i=l=>{r("click",l)},{onClick:a,onMousedown:o,onMouseup:s}=XM(e.customMaskEvent?void 0:i);return()=>e.mask?Z("div",{class:[n.b(),e.overlayClass],style:{zIndex:e.zIndex},onClick:a,onMousedown:o,onMouseup:s},[Ce(t,"default")],Lc.STYLE|Lc.CLASS|Lc.PROPS,["onClick","onMouseup","onMousedown"]):Te("div",{class:e.overlayClass,style:{zIndex:e.zIndex,position:"fixed",top:"0px",right:"0px",bottom:"0px",left:"0px"}},[Ce(t,"default")])}});const e6=J8,HA=Symbol("dialogInjectionKey"),zA=Je({center:Boolean,alignCenter:Boolean,closeIcon:{type:vr},customClass:{type:String,default:""},draggable:Boolean,fullscreen:Boolean,showClose:{type:Boolean,default:!0},title:{type:String,default:""},ariaLevel:{type:String,default:"2"}}),t6={close:()=>!0},r6=["aria-level"],n6=["aria-label"],i6=["id"],a6=ie({name:"ElDialogContent"}),o6=ie({...a6,props:zA,emits:t6,setup(e){const t=e,{t:r}=Fs(),{Close:n}=W3,{dialogRef:i,headerRef:a,bodyId:o,ns:s,style:l}=Le(HA),{focusTrapRef:u}=Le(pA),f=k(()=>[s.b(),s.is("fullscreen",t.fullscreen),s.is("draggable",t.draggable),s.is("align-center",t.alignCenter),{[s.m("center")]:t.center},t.customClass]),c=Y3(u,i),h=k(()=>t.draggable);return K3(i,a,h),(d,v)=>(G(),ce("div",{ref:T(c),class:re(T(f)),style:ct(T(l)),tabindex:"-1"},[ee("header",{ref_key:"headerRef",ref:a,class:re(T(s).e("header"))},[Ce(d.$slots,"header",{},()=>[ee("span",{role:"heading","aria-level":d.ariaLevel,class:re(T(s).e("title"))},be(d.title),11,r6)]),d.showClose?(G(),ce("button",{key:0,"aria-label":T(r)("el.dialog.close"),class:re(T(s).e("headerbtn")),type:"button",onClick:v[0]||(v[0]=p=>d.$emit("close"))},[Z(T(Nt),{class:re(T(s).e("close"))},{default:j(()=>[(G(),de(Vt(d.closeIcon||T(n))))]),_:1},8,["class"])],10,n6)):Ae("v-if",!0)],2),ee("div",{id:T(o),class:re(T(s).e("body"))},[Ce(d.$slots,"default")],10,i6),d.$slots.footer?(G(),ce("footer",{key:0,class:re(T(s).e("footer"))},[Ce(d.$slots,"footer")],2)):Ae("v-if",!0)],6))}});var s6=Ke(o6,[["__file","dialog-content.vue"]]);const l6=Je({...zA,appendToBody:Boolean,appendTo:{type:Be(String),default:"body"},beforeClose:{type:Be(Function)},destroyOnClose:Boolean,closeOnClickModal:{type:Boolean,default:!0},closeOnPressEscape:{type:Boolean,default:!0},lockScroll:{type:Boolean,default:!0},modal:{type:Boolean,default:!0},openDelay:{type:Number,default:0},closeDelay:{type:Number,default:0},top:{type:String},modelValue:Boolean,modalClass:String,width:{type:[String,Number]},zIndex:{type:Number},trapFocus:{type:Boolean,default:!1},headerAriaLevel:{type:String,default:"2"}}),u6={open:()=>!0,opened:()=>!0,close:()=>!0,closed:()=>!0,[wi]:e=>zr(e),openAutoFocus:()=>!0,closeAutoFocus:()=>!0},f6=(e,t)=>{var r;const i=it().emit,{nextZIndex:a}=zy();let o="";const s=xu(),l=xu(),u=$(!1),f=$(!1),c=$(!1),h=$((r=e.zIndex)!=null?r:a());let d,v;const p=hh("namespace",Bl),m=k(()=>{const N={},H=`--${p.value}-dialog`;return e.fullscreen||(e.top&&(N[`${H}-margin-top`]=e.top),e.width&&(N[`${H}-width`]=Zn(e.width))),N}),g=k(()=>e.alignCenter?{display:"flex"}:{});function y(){i("opened")}function _(){i("closed"),i(wi,!1),e.destroyOnClose&&(c.value=!1)}function b(){i("close")}function x(){v==null||v(),d==null||d(),e.openDelay&&e.openDelay>0?{stop:d}=hu(()=>M(),e.openDelay):M()}function w(){d==null||d(),v==null||v(),e.closeDelay&&e.closeDelay>0?{stop:v}=hu(()=>A(),e.closeDelay):A()}function S(){function N(H){H||(f.value=!0,u.value=!1)}e.beforeClose?e.beforeClose(N):w()}function C(){e.closeOnClickModal&&S()}function M(){At&&(u.value=!0)}function A(){u.value=!1}function P(){i("openAutoFocus")}function E(){i("closeAutoFocus")}function L(N){var H;((H=N.detail)==null?void 0:H.focusReason)==="pointer"&&N.preventDefault()}e.lockScroll&&t5(u);function O(){e.closeOnPressEscape&&S()}return we(()=>e.modelValue,N=>{N?(f.value=!1,x(),c.value=!0,h.value=MM(e.zIndex)?a():h.value++,kt(()=>{i("open"),t.value&&(t.value.scrollTop=0)})):u.value&&w()}),we(()=>e.fullscreen,N=>{t.value&&(N?(o=t.value.style.transform,t.value.style.transform=""):t.value.style.transform=o)}),_t(()=>{e.modelValue&&(u.value=!0,c.value=!0,x())}),{afterEnter:y,afterLeave:_,beforeLeave:b,handleClose:S,onModalClick:C,close:w,doClose:A,onOpenAutoFocus:P,onCloseAutoFocus:E,onCloseRequested:O,onFocusoutPrevented:L,titleId:s,bodyId:l,closed:f,style:m,overlayDialogStyle:g,rendered:c,visible:u,zIndex:h}},c6=["aria-label","aria-labelledby","aria-describedby"],d6=ie({name:"ElDialog",inheritAttrs:!1}),h6=ie({...d6,props:l6,emits:u6,setup(e,{expose:t}){const r=e,n=Rs();bu({scope:"el-dialog",from:"the title slot",replacement:"the header slot",version:"3.0.0",ref:"https://element-plus.org/en-US/component/dialog.html#slots"},k(()=>!!n.title)),bu({scope:"el-dialog",from:"custom-class",replacement:"class",version:"2.3.0",ref:"https://element-plus.org/en-US/component/dialog.html#attributes",type:"Attribute"},k(()=>!!r.customClass));const i=Oe("dialog"),a=$(),o=$(),s=$(),{visible:l,titleId:u,bodyId:f,style:c,overlayDialogStyle:h,rendered:d,zIndex:v,afterEnter:p,afterLeave:m,beforeLeave:g,handleClose:y,onModalClick:_,onOpenAutoFocus:b,onCloseAutoFocus:x,onCloseRequested:w,onFocusoutPrevented:S}=f6(r,a);Dt(HA,{dialogRef:a,headerRef:o,bodyId:f,ns:i,rendered:d,style:c});const C=XM(_),M=k(()=>r.draggable&&!r.fullscreen);return t({visible:l,dialogContentRef:s}),(A,P)=>(G(),de(MT,{to:A.appendTo,disabled:A.appendTo!=="body"?!1:!A.appendToBody},[Z(ti,{name:"dialog-fade",onAfterEnter:T(p),onAfterLeave:T(m),onBeforeLeave:T(g),persisted:""},{default:j(()=>[qt(Z(T(e6),{"custom-mask-event":"",mask:A.modal,"overlay-class":A.modalClass,"z-index":T(v)},{default:j(()=>[ee("div",{role:"dialog","aria-modal":"true","aria-label":A.title||void 0,"aria-labelledby":A.title?void 0:T(u),"aria-describedby":T(f),class:re(`${T(i).namespace.value}-overlay-dialog`),style:ct(T(h)),onClick:P[0]||(P[0]=(...E)=>T(C).onClick&&T(C).onClick(...E)),onMousedown:P[1]||(P[1]=(...E)=>T(C).onMousedown&&T(C).onMousedown(...E)),onMouseup:P[2]||(P[2]=(...E)=>T(C).onMouseup&&T(C).onMouseup(...E))},[Z(T(mA),{loop:"",trapped:T(l),"focus-start-el":"container",onFocusAfterTrapped:T(b),onFocusAfterReleased:T(x),onFocusoutPrevented:T(S),onReleaseRequested:T(w)},{default:j(()=>[T(d)?(G(),de(s6,ei({key:0,ref_key:"dialogContentRef",ref:s},A.$attrs,{"custom-class":A.customClass,center:A.center,"align-center":A.alignCenter,"close-icon":A.closeIcon,draggable:T(M),fullscreen:A.fullscreen,"show-close":A.showClose,title:A.title,"aria-level":A.headerAriaLevel,onClose:T(y)}),UI({header:j(()=>[A.$slots.title?Ce(A.$slots,"title",{key:1}):Ce(A.$slots,"header",{key:0,close:T(y),titleId:T(u),titleClass:T(i).e("title")})]),default:j(()=>[Ce(A.$slots,"default")]),_:2},[A.$slots.footer?{name:"footer",fn:j(()=>[Ce(A.$slots,"footer")])}:void 0]),1040,["custom-class","center","align-center","close-icon","draggable","fullscreen","show-close","title","aria-level","onClose"])):Ae("v-if",!0)]),_:3},8,["trapped","onFocusAfterTrapped","onFocusAfterReleased","onFocusoutPrevented","onReleaseRequested"])],46,c6)]),_:3},8,["mask","overlay-class","z-index"]),[[Kn,T(l)]])]),_:3},8,["onAfterEnter","onAfterLeave","onBeforeLeave"])],8,["to","disabled"]))}});var v6=Ke(h6,[["__file","dialog.vue"]]);const p6=Yt(v6),g6=Je({direction:{type:String,values:["horizontal","vertical"],default:"horizontal"},contentPosition:{type:String,values:["left","center","right"],default:"center"},borderStyle:{type:Be(String),default:"solid"}}),m6=ie({name:"ElDivider"}),y6=ie({...m6,props:g6,setup(e){const t=e,r=Oe("divider"),n=k(()=>r.cssVar({"border-style":t.borderStyle}));return(i,a)=>(G(),ce("div",{class:re([T(r).b(),T(r).m(i.direction)]),style:ct(T(n)),role:"separator"},[i.$slots.default&&i.direction!=="vertical"?(G(),ce("div",{key:0,class:re([T(r).e("text"),T(r).is(i.contentPosition)])},[Ce(i.$slots,"default")],2)):Ae("v-if",!0)],6))}});var _6=Ke(y6,[["__file","divider.vue"]]);const VA=Yt(_6);let b6=class{constructor(t,r){this.parent=t,this.domNode=r,this.subIndex=0,this.subIndex=0,this.init()}init(){this.subMenuItems=this.domNode.querySelectorAll("li"),this.addListeners()}gotoSubIndex(t){t===this.subMenuItems.length?t=0:t<0&&(t=this.subMenuItems.length-1),this.subMenuItems[t].focus(),this.subIndex=t}addListeners(){const t=this.parent.domNode;Array.prototype.forEach.call(this.subMenuItems,r=>{r.addEventListener("keydown",n=>{let i=!1;switch(n.code){case hr.down:{this.gotoSubIndex(this.subIndex+1),i=!0;break}case hr.up:{this.gotoSubIndex(this.subIndex-1),i=!0;break}case hr.tab:{Ac(t,"mouseleave");break}case hr.enter:case hr.space:{i=!0,n.currentTarget.click();break}}return i&&(n.preventDefault(),n.stopPropagation()),!1})})}},w6=class{constructor(t,r){this.domNode=t,this.submenu=null,this.submenu=null,this.init(r)}init(t){this.domNode.setAttribute("tabindex","0");const r=this.domNode.querySelector(`.${t}-menu`);r&&(this.submenu=new b6(this,r)),this.addListeners()}addListeners(){this.domNode.addEventListener("keydown",t=>{let r=!1;switch(t.code){case hr.down:{Ac(t.currentTarget,"mouseenter"),this.submenu&&this.submenu.gotoSubIndex(0),r=!0;break}case hr.up:{Ac(t.currentTarget,"mouseenter"),this.submenu&&this.submenu.gotoSubIndex(this.submenu.subMenuItems.length-1),r=!0;break}case hr.tab:{Ac(t.currentTarget,"mouseleave");break}case hr.enter:case hr.space:{r=!0,t.currentTarget.click();break}}r&&t.preventDefault()})}},S6=class{constructor(t,r){this.domNode=t,this.init(r)}init(t){const r=this.domNode.childNodes;Array.from(r).forEach(n=>{n.nodeType===1&&new w6(n,t)})}};const x6=ie({name:"ElMenuCollapseTransition",setup(){const e=Oe("menu");return{listeners:{onBeforeEnter:r=>r.style.opacity="0.2",onEnter(r,n){Za(r,`${e.namespace.value}-opacity-transition`),r.style.opacity="1",n()},onAfterEnter(r){so(r,`${e.namespace.value}-opacity-transition`),r.style.opacity=""},onBeforeLeave(r){r.dataset||(r.dataset={}),oo(r,e.m("collapse"))?(so(r,e.m("collapse")),r.dataset.oldOverflow=r.style.overflow,r.dataset.scrollWidth=r.clientWidth.toString(),Za(r,e.m("collapse"))):(Za(r,e.m("collapse")),r.dataset.oldOverflow=r.style.overflow,r.dataset.scrollWidth=r.clientWidth.toString(),so(r,e.m("collapse"))),r.style.width=`${r.scrollWidth}px`,r.style.overflow="hidden"},onLeave(r){Za(r,"horizontal-collapse-transition"),r.style.width=`${r.dataset.scrollWidth}px`}}}}});function C6(e,t,r,n,i,a){return G(),de(ti,ei({mode:"out-in"},e.listeners),{default:j(()=>[Ce(e.$slots,"default")]),_:3},16)}var T6=Ke(x6,[["render",C6],["__file","menu-collapse-transition.vue"]]);function WA(e,t){const r=k(()=>{let i=e.parent;const a=[t.value];for(;i.type.name!=="ElMenu";)i.props.index&&a.unshift(i.props.index),i=i.parent;return a});return{parentMenu:k(()=>{let i=e.parent;for(;i&&!["ElMenu","ElSubMenu"].includes(i.type.name);)i=i.parent;return i}),indexPath:r}}function M6(e){return k(()=>{const r=e.backgroundColor;return r?new SA(r).shade(20).toString():""})}const GA=(e,t)=>{const r=Oe("menu");return k(()=>r.cssVarBlock({"text-color":e.textColor||"","hover-text-color":e.textColor||"","bg-color":e.backgroundColor||"","hover-bg-color":M6(e).value||"","active-color":e.activeTextColor||"",level:`${t}`}))},A6=Je({index:{type:String,required:!0},showTimeout:Number,hideTimeout:Number,popperClass:String,disabled:Boolean,popperAppendToBody:{type:Boolean,default:void 0},teleported:{type:Boolean,default:void 0},popperOffset:Number,expandCloseIcon:{type:vr},expandOpenIcon:{type:vr},collapseCloseIcon:{type:vr},collapseOpenIcon:{type:vr}}),Of="ElSubMenu";var jy=ie({name:Of,props:A6,setup(e,{slots:t,expose:r}){bu({from:"popper-append-to-body",replacement:"teleported",scope:Of,version:"2.3.0",ref:"https://element-plus.org/en-US/component/menu.html#submenu-attributes"},k(()=>e.popperAppendToBody!==void 0));const n=it(),{indexPath:i,parentMenu:a}=WA(n,k(()=>e.index)),o=Oe("menu"),s=Oe("sub-menu"),l=Le("rootMenu");l||bi(Of,"can not inject root menu");const u=Le(`subMenu:${a.value.uid}`);u||bi(Of,"can not inject sub menu");const f=$({}),c=$({});let h;const d=$(!1),v=$(),p=$(null),m=k(()=>C.value==="horizontal"&&y.value?"bottom-start":"right-start"),g=k(()=>C.value==="horizontal"&&y.value||C.value==="vertical"&&!l.props.collapse?e.expandCloseIcon&&e.expandOpenIcon?w.value?e.expandOpenIcon:e.expandCloseIcon:EM:e.collapseCloseIcon&&e.collapseOpenIcon?w.value?e.collapseOpenIcon:e.collapseCloseIcon:Ey),y=k(()=>u.level===0),_=k(()=>{var z;const te=(z=e.teleported)!=null?z:e.popperAppendToBody;return te===void 0?y.value:te}),b=k(()=>l.props.collapse?`${o.namespace.value}-zoom-in-left`:`${o.namespace.value}-zoom-in-top`),x=k(()=>C.value==="horizontal"&&y.value?["bottom-start","bottom-end","top-start","top-end","right-start","left-start"]:["right-start","right","right-end","left-start","bottom-start","bottom-end","top-start","top-end"]),w=k(()=>l.openedMenus.includes(e.index)),S=k(()=>{let z=!1;return Object.values(f.value).forEach(te=>{te.active&&(z=!0)}),Object.values(c.value).forEach(te=>{te.active&&(z=!0)}),z}),C=k(()=>l.props.mode),M=Ln({index:e.index,indexPath:i,active:S}),A=GA(l.props,u.level+1),P=k(()=>{var z;return(z=e.popperOffset)!=null?z:l.props.popperOffset}),E=k(()=>{var z;return(z=e.popperClass)!=null?z:l.props.popperClass}),L=k(()=>{var z;return(z=e.showTimeout)!=null?z:l.props.showTimeout}),O=k(()=>{var z;return(z=e.hideTimeout)!=null?z:l.props.hideTimeout}),N=()=>{var z,te,J;return(J=(te=(z=p.value)==null?void 0:z.popperRef)==null?void 0:te.popperInstanceRef)==null?void 0:J.destroy()},H=z=>{z||N()},V=()=>{l.props.menuTrigger==="hover"&&l.props.mode==="horizontal"||l.props.collapse&&l.props.mode==="vertical"||e.disabled||l.handleSubMenuClick({index:e.index,indexPath:i.value,active:S.value})},U=(z,te=L.value)=>{var J;if(z.type!=="focus"){if(l.props.menuTrigger==="click"&&l.props.mode==="horizontal"||!l.props.collapse&&l.props.mode==="vertical"||e.disabled){u.mouseInChild.value=!0;return}u.mouseInChild.value=!0,h==null||h(),{stop:h}=hu(()=>{l.openMenu(e.index,i.value)},te),_.value&&((J=a.value.vnode.el)==null||J.dispatchEvent(new MouseEvent("mouseenter")))}},F=(z=!1)=>{var te;if(l.props.menuTrigger==="click"&&l.props.mode==="horizontal"||!l.props.collapse&&l.props.mode==="vertical"){u.mouseInChild.value=!1;return}h==null||h(),u.mouseInChild.value=!1,{stop:h}=hu(()=>!d.value&&l.closeMenu(e.index,i.value),O.value),_.value&&z&&((te=u.handleMouseleave)==null||te.call(u,!0))};we(()=>l.props.collapse,z=>H(!!z));{const z=J=>{c.value[J.index]=J},te=J=>{delete c.value[J.index]};Dt(`subMenu:${n.uid}`,{addSubMenu:z,removeSubMenu:te,handleMouseleave:F,mouseInChild:d,level:u.level+1})}return r({opened:w}),_t(()=>{l.addSubMenu(M),u.addSubMenu(M)}),tr(()=>{u.removeSubMenu(M),l.removeSubMenu(M)}),()=>{var z;const te=[(z=t.title)==null?void 0:z.call(t),Te(Nt,{class:s.e("icon-arrow"),style:{transform:w.value?e.expandCloseIcon&&e.expandOpenIcon||e.collapseCloseIcon&&e.collapseOpenIcon&&l.props.collapse?"none":"rotateZ(180deg)":"none"}},{default:()=>ze(g.value)?Te(n.appContext.components[g.value]):Te(g.value)})],J=l.isMenuPopup?Te(Hs,{ref:p,visible:w.value,effect:"light",pure:!0,offset:P.value,showArrow:!1,persistent:!0,popperClass:E.value,placement:m.value,teleported:_.value,fallbackPlacements:x.value,transition:b.value,gpuAcceleration:!1},{content:()=>{var me;return Te("div",{class:[o.m(C.value),o.m("popup-container"),E.value],onMouseenter:Se=>U(Se,100),onMouseleave:()=>F(!0),onFocus:Se=>U(Se,100)},[Te("ul",{class:[o.b(),o.m("popup"),o.m(`popup-${m.value}`)],style:A.value},[(me=t.default)==null?void 0:me.call(t)])])},default:()=>Te("div",{class:s.e("title"),onClick:V},te)}):Te(ft,{},[Te("div",{class:s.e("title"),ref:v,onClick:V},te),Te(K8,{},{default:()=>{var me;return qt(Te("ul",{role:"menu",class:[o.b(),o.m("inline")],style:A.value},[(me=t.default)==null?void 0:me.call(t)]),[[Kn,w.value]])}})]);return Te("li",{class:[s.b(),s.is("active",S.value),s.is("opened",w.value),s.is("disabled",e.disabled)],role:"menuitem",ariaHaspopup:!0,ariaExpanded:w.value,onMouseenter:U,onMouseleave:()=>F(),onFocus:U},[J])}}});const P6=Je({mode:{type:String,values:["horizontal","vertical"],default:"vertical"},defaultActive:{type:String,default:""},defaultOpeneds:{type:Be(Array),default:()=>ja([])},uniqueOpened:Boolean,router:Boolean,menuTrigger:{type:String,values:["hover","click"],default:"hover"},collapse:Boolean,backgroundColor:String,textColor:String,activeTextColor:String,closeOnClickOutside:Boolean,collapseTransition:{type:Boolean,default:!0},ellipsis:{type:Boolean,default:!0},popperOffset:{type:Number,default:6},ellipsisIcon:{type:vr,default:()=>B3},popperEffect:{type:String,values:["dark","light"],default:"dark"},popperClass:String,showTimeout:{type:Number,default:300},hideTimeout:{type:Number,default:300}}),uv=e=>Array.isArray(e)&&e.every(t=>ze(t)),E6={close:(e,t)=>ze(e)&&uv(t),open:(e,t)=>ze(e)&&uv(t),select:(e,t,r,n)=>ze(e)&&uv(t)&&qe(r)&&(n===void 0||n instanceof Promise)};var L6=ie({name:"ElMenu",props:P6,emits:E6,setup(e,{emit:t,slots:r,expose:n}){const i=it(),a=i.appContext.config.globalProperties.$router,o=$(),s=Oe("menu"),l=Oe("sub-menu"),u=$(-1),f=$(e.defaultOpeneds&&!e.collapse?e.defaultOpeneds.slice(0):[]),c=$(e.defaultActive),h=$({}),d=$({}),v=k(()=>e.mode==="horizontal"||e.mode==="vertical"&&e.collapse),p=()=>{const L=c.value&&h.value[c.value];if(!L||e.mode==="horizontal"||e.collapse)return;L.indexPath.forEach(N=>{const H=d.value[N];H&&m(N,H.indexPath)})},m=(L,O)=>{f.value.includes(L)||(e.uniqueOpened&&(f.value=f.value.filter(N=>O.includes(N))),f.value.push(L),t("open",L,O))},g=L=>{const O=f.value.indexOf(L);O!==-1&&f.value.splice(O,1)},y=(L,O)=>{g(L),t("close",L,O)},_=({index:L,indexPath:O})=>{f.value.includes(L)?y(L,O):m(L,O)},b=L=>{(e.mode==="horizontal"||e.collapse)&&(f.value=[]);const{index:O,indexPath:N}=L;if(!(ms(O)||ms(N)))if(e.router&&a){const H=L.route||O,V=a.push(H).then(U=>(U||(c.value=O),U));t("select",O,N,{index:O,indexPath:N,route:H},V)}else c.value=O,t("select",O,N,{index:O,indexPath:N})},x=L=>{const O=h.value,N=O[L]||c.value&&O[c.value]||O[e.defaultActive];N?c.value=N.index:c.value=L},w=()=>{var L,O;if(!o.value)return-1;const N=Array.from((O=(L=o.value)==null?void 0:L.childNodes)!=null?O:[]).filter(J=>J.nodeName!=="#comment"&&(J.nodeName!=="#text"||J.nodeValue)),H=64,V=Number.parseInt(getComputedStyle(o.value).paddingLeft,10),U=Number.parseInt(getComputedStyle(o.value).paddingRight,10),F=o.value.clientWidth-V-U;let z=0,te=0;return N.forEach((J,me)=>{z+=J.offsetWidth||0,z<=F-H&&(te=me+1)}),te===N.length?-1:te},S=L=>d.value[L].indexPath,C=(L,O=33.34)=>{let N;return()=>{N&&clearTimeout(N),N=setTimeout(()=>{L()},O)}};let M=!0;const A=()=>{const L=()=>{u.value=-1,kt(()=>{u.value=w()})};M?L():C(L)(),M=!1};we(()=>e.defaultActive,L=>{h.value[L]||(c.value=""),x(L)}),we(()=>e.collapse,L=>{L&&(f.value=[])}),we(h.value,p);let P;na(()=>{e.mode==="horizontal"&&e.ellipsis?P=ps(o,A).stop:P==null||P()});const E=$(!1);{const L=V=>{d.value[V.index]=V},O=V=>{delete d.value[V.index]};Dt("rootMenu",Ln({props:e,openedMenus:f,items:h,subMenus:d,activeIndex:c,isMenuPopup:v,addMenuItem:V=>{h.value[V.index]=V},removeMenuItem:V=>{delete h.value[V.index]},addSubMenu:L,removeSubMenu:O,openMenu:m,closeMenu:y,handleMenuItemClick:b,handleSubMenuClick:_})),Dt(`subMenu:${i.uid}`,{addSubMenu:L,removeSubMenu:O,mouseInChild:E,level:0})}return _t(()=>{e.mode==="horizontal"&&new S6(i.vnode.el,s.namespace.value)}),n({open:O=>{const{indexPath:N}=d.value[O];N.forEach(H=>m(H,N))},close:g,handleResize:A}),()=>{var L,O;let N=(O=(L=r.default)==null?void 0:L.call(r))!=null?O:[];const H=[];if(e.mode==="horizontal"&&o.value){const z=Dc(N),te=u.value===-1?z:z.slice(0,u.value),J=u.value===-1?[]:z.slice(u.value);J!=null&&J.length&&e.ellipsis&&(N=te,H.push(Te(jy,{index:"sub-menu-more",class:l.e("hide-arrow"),popperOffset:e.popperOffset},{title:()=>Te(Nt,{class:l.e("icon-more")},{default:()=>Te(e.ellipsisIcon)}),default:()=>J})))}const V=GA(e,0),U=e.closeOnClickOutside?[[CA,()=>{f.value.length&&(E.value||(f.value.forEach(z=>t("close",z,S(z))),f.value=[]))}]]:[],F=qt(Te("ul",{key:String(e.collapse),role:"menubar",ref:o,style:V.value,class:{[s.b()]:!0,[s.m(e.mode)]:!0,[s.m("collapse")]:e.collapse}},[...N,...H]),U);return e.collapseTransition&&e.mode==="vertical"?Te(T6,()=>F):F}}});const D6=Je({index:{type:Be([String,null]),default:null},route:{type:Be([String,Object])},disabled:Boolean}),I6={click:e=>ze(e.index)&&Array.isArray(e.indexPath)},fv="ElMenuItem",O6=ie({name:fv,components:{ElTooltip:Hs},props:D6,emits:I6,setup(e,{emit:t}){const r=it(),n=Le("rootMenu"),i=Oe("menu"),a=Oe("menu-item");n||bi(fv,"can not inject root menu");const{parentMenu:o,indexPath:s}=WA(r,wn(e,"index")),l=Le(`subMenu:${o.value.uid}`);l||bi(fv,"can not inject sub menu");const u=k(()=>e.index===n.activeIndex),f=Ln({index:e.index,indexPath:s,active:u}),c=()=>{e.disabled||(n.handleMenuItemClick({index:e.index,indexPath:s.value,route:e.route}),t("click",f))};return _t(()=>{l.addSubMenu(f),n.addMenuItem(f)}),tr(()=>{l.removeSubMenu(f),n.removeMenuItem(f)}),{parentMenu:o,rootMenu:n,active:u,nsMenu:i,nsMenuItem:a,handleClick:c}}});function R6(e,t,r,n,i,a){const o=xr("el-tooltip");return G(),ce("li",{class:re([e.nsMenuItem.b(),e.nsMenuItem.is("active",e.active),e.nsMenuItem.is("disabled",e.disabled)]),role:"menuitem",tabindex:"-1",onClick:t[0]||(t[0]=(...s)=>e.handleClick&&e.handleClick(...s))},[e.parentMenu.type.name==="ElMenu"&&e.rootMenu.props.collapse&&e.$slots.title?(G(),de(o,{key:0,effect:e.rootMenu.props.popperEffect,placement:"right","fallback-placements":["left"],persistent:""},{content:j(()=>[Ce(e.$slots,"title")]),default:j(()=>[ee("div",{class:re(e.nsMenu.be("tooltip","trigger"))},[Ce(e.$slots,"default")],2)]),_:3},8,["effect"])):(G(),ce(ft,{key:1},[Ce(e.$slots,"default"),Ce(e.$slots,"title")],64))],2)}var UA=Ke(O6,[["render",R6],["__file","menu-item.vue"]]);const k6={title:String},N6="ElMenuItemGroup",B6=ie({name:N6,props:k6,setup(){return{ns:Oe("menu-item-group")}}});function F6(e,t,r,n,i,a){return G(),ce("li",{class:re(e.ns.b())},[ee("div",{class:re(e.ns.e("title"))},[e.$slots.title?Ce(e.$slots,"title",{key:1}):(G(),ce(ft,{key:0},[mt(be(e.title),1)],64))],2),ee("ul",null,[Ce(e.$slots,"default")])],2)}var YA=Ke(B6,[["render",F6],["__file","menu-item-group.vue"]]);const $6=Yt(L6,{MenuItem:UA,MenuItemGroup:YA,SubMenu:jy}),H6=pa(UA);pa(YA);const z6=pa(jy),V6=Je({icon:{type:vr,default:()=>D3},title:String,content:{type:String,default:""}}),W6={back:()=>!0},G6=["aria-label"],U6=ie({name:"ElPageHeader"}),Y6=ie({...U6,props:V6,emits:W6,setup(e,{emit:t}){const r=Rs(),{t:n}=Fs(),i=Oe("page-header"),a=k(()=>[i.b(),{[i.m("has-breadcrumb")]:!!r.breadcrumb,[i.m("has-extra")]:!!r.extra,[i.is("contentful")]:!!r.default}]);function o(){t("back")}return(s,l)=>(G(),ce("div",{class:re(T(a))},[s.$slots.breadcrumb?(G(),ce("div",{key:0,class:re(T(i).e("breadcrumb"))},[Ce(s.$slots,"breadcrumb")],2)):Ae("v-if",!0),ee("div",{class:re(T(i).e("header"))},[ee("div",{class:re(T(i).e("left"))},[ee("div",{class:re(T(i).e("back")),role:"button",tabindex:"0",onClick:o},[s.icon||s.$slots.icon?(G(),ce("div",{key:0,"aria-label":s.title||T(n)("el.pageHeader.title"),class:re(T(i).e("icon"))},[Ce(s.$slots,"icon",{},()=>[s.icon?(G(),de(T(Nt),{key:0},{default:j(()=>[(G(),de(Vt(s.icon)))]),_:1})):Ae("v-if",!0)])],10,G6)):Ae("v-if",!0),ee("div",{class:re(T(i).e("title"))},[Ce(s.$slots,"title",{},()=>[mt(be(s.title||T(n)("el.pageHeader.title")),1)])],2)],2),Z(T(VA),{direction:"vertical"}),ee("div",{class:re(T(i).e("content"))},[Ce(s.$slots,"content",{},()=>[mt(be(s.content),1)])],2)],2),s.$slots.extra?(G(),ce("div",{key:0,class:re(T(i).e("extra"))},[Ce(s.$slots,"extra")],2)):Ae("v-if",!0)],2),s.$slots.default?(G(),ce("div",{key:1,class:re(T(i).e("main"))},[Ce(s.$slots,"default")],2)):Ae("v-if",!0)],2))}});var j6=Ke(Y6,[["__file","page-header.vue"]]);const q6=Yt(j6),K6=Je({title:String,confirmButtonText:String,cancelButtonText:String,confirmButtonType:{type:String,values:pg,default:"primary"},cancelButtonType:{type:String,values:pg,default:"text"},icon:{type:vr,default:()=>$3},iconColor:{type:String,default:"#f90"},hideIcon:{type:Boolean,default:!1},hideAfter:{type:Number,default:200},teleported:md.teleported,persistent:md.persistent,width:{type:[String,Number],default:150}}),X6={confirm:e=>e instanceof MouseEvent,cancel:e=>e instanceof MouseEvent},Z6=ie({name:"ElPopconfirm"}),Q6=ie({...Z6,props:K6,emits:X6,setup(e,{emit:t}){const r=e,{t:n}=Fs(),i=Oe("popconfirm"),a=$(),o=()=>{var h,d;(d=(h=a.value)==null?void 0:h.onClose)==null||d.call(h)},s=k(()=>({width:Zn(r.width)})),l=h=>{t("confirm",h),o()},u=h=>{t("cancel",h),o()},f=k(()=>r.confirmButtonText||n("el.popconfirm.confirmButtonText")),c=k(()=>r.cancelButtonText||n("el.popconfirm.cancelButtonText"));return(h,d)=>(G(),de(T(Hs),ei({ref_key:"tooltipRef",ref:a,trigger:"click",effect:"light"},h.$attrs,{"popper-class":`${T(i).namespace.value}-popover`,"popper-style":T(s),teleported:h.teleported,"fallback-placements":["bottom","top","right","left"],"hide-after":h.hideAfter,persistent:h.persistent}),{content:j(()=>[ee("div",{class:re(T(i).b())},[ee("div",{class:re(T(i).e("main"))},[!h.hideIcon&&h.icon?(G(),de(T(Nt),{key:0,class:re(T(i).e("icon")),style:ct({color:h.iconColor})},{default:j(()=>[(G(),de(Vt(h.icon)))]),_:1},8,["class","style"])):Ae("v-if",!0),mt(" "+be(h.title),1)],2),ee("div",{class:re(T(i).e("action"))},[Z(T(yg),{size:"small",type:h.cancelButtonType==="text"?"":h.cancelButtonType,text:h.cancelButtonType==="text",onClick:u},{default:j(()=>[mt(be(T(c)),1)]),_:1},8,["type","text"]),Z(T(yg),{size:"small",type:h.confirmButtonType==="text"?"":h.confirmButtonType,text:h.confirmButtonType==="text",onClick:l},{default:j(()=>[mt(be(T(f)),1)]),_:1},8,["type","text"])],2)],2)]),default:j(()=>[h.$slots.reference?Ce(h.$slots,"reference",{key:0}):Ae("v-if",!0)]),_:3},16,["popper-class","popper-style","teleported","hide-after","persistent"]))}});var J6=Ke(Q6,[["__file","popconfirm.vue"]]);const eV=Yt(J6),tV=Je({modelValue:{type:[Boolean,String,Number],default:!1},disabled:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},size:{type:String,validator:j3},width:{type:[String,Number],default:""},inlinePrompt:{type:Boolean,default:!1},inactiveActionIcon:{type:vr},activeActionIcon:{type:vr},activeIcon:{type:vr},inactiveIcon:{type:vr},activeText:{type:String,default:""},inactiveText:{type:String,default:""},activeValue:{type:[Boolean,String,Number],default:!0},inactiveValue:{type:[Boolean,String,Number],default:!1},activeColor:{type:String,default:""},inactiveColor:{type:String,default:""},borderColor:{type:String,default:""},name:{type:String,default:""},validateEvent:{type:Boolean,default:!0},beforeChange:{type:Be(Function)},id:String,tabindex:{type:[String,Number]},value:{type:[Boolean,String,Number],default:!1},label:{type:String,default:void 0}}),rV={[wi]:e=>zr(e)||ze(e)||Rt(e),[sg]:e=>zr(e)||ze(e)||Rt(e),[lg]:e=>zr(e)||ze(e)||Rt(e)},nV=["onClick"],iV=["id","aria-checked","aria-disabled","aria-label","name","true-value","false-value","disabled","tabindex","onKeydown"],aV=["aria-hidden"],oV=["aria-hidden"],sV=["aria-hidden"],Ag="ElSwitch",lV=ie({name:Ag}),uV=ie({...lV,props:tV,emits:rV,setup(e,{expose:t,emit:r}){const n=e,i=it(),{formItem:a}=tf(),o=xi(),s=Oe("switch");(C=>{C.forEach(M=>{bu({from:M[0],replacement:M[1],scope:Ag,version:"2.3.0",ref:"https://element-plus.org/en-US/component/switch.html#attributes",type:"Attribute"},k(()=>{var A;return!!((A=i.vnode.props)!=null&&A[M[2]])}))})})([['"value"','"model-value" or "v-model"',"value"],['"active-color"',"CSS var `--el-switch-on-color`","activeColor"],['"inactive-color"',"CSS var `--el-switch-off-color`","inactiveColor"],['"border-color"',"CSS var `--el-switch-border-color`","borderColor"]]);const{inputId:u}=Vy(n,{formItemContext:a}),f=vh(k(()=>n.loading)),c=$(n.modelValue!==!1),h=$(),d=$(),v=k(()=>[s.b(),s.m(o.value),s.is("disabled",f.value),s.is("checked",_.value)]),p=k(()=>[s.e("label"),s.em("label","left"),s.is("active",!_.value)]),m=k(()=>[s.e("label"),s.em("label","right"),s.is("active",_.value)]),g=k(()=>({width:Zn(n.width)}));we(()=>n.modelValue,()=>{c.value=!0}),we(()=>n.value,()=>{c.value=!1});const y=k(()=>c.value?n.modelValue:n.value),_=k(()=>y.value===n.activeValue);[n.activeValue,n.inactiveValue].includes(y.value)||(r(wi,n.inactiveValue),r(sg,n.inactiveValue),r(lg,n.inactiveValue)),we(_,C=>{var M;h.value.checked=C,n.validateEvent&&((M=a==null?void 0:a.validate)==null||M.call(a,"change").catch(A=>void 0))});const b=()=>{const C=_.value?n.inactiveValue:n.activeValue;r(wi,C),r(sg,C),r(lg,C),kt(()=>{h.value.checked=_.value})},x=()=>{if(f.value)return;const{beforeChange:C}=n;if(!C){b();return}const M=C();[Qc(M),zr(M)].includes(!0)||bi(Ag,"beforeChange must return type `Promise` or `boolean`"),Qc(M)?M.then(P=>{P&&b()}).catch(P=>{}):M&&b()},w=k(()=>s.cssVarBlock({...n.activeColor?{"on-color":n.activeColor}:null,...n.inactiveColor?{"off-color":n.inactiveColor}:null,...n.borderColor?{"border-color":n.borderColor}:null})),S=()=>{var C,M;(M=(C=h.value)==null?void 0:C.focus)==null||M.call(C)};return _t(()=>{h.value.checked=_.value}),t({focus:S,checked:_}),(C,M)=>(G(),ce("div",{class:re(T(v)),style:ct(T(w)),onClick:ua(x,["prevent"])},[ee("input",{id:T(u),ref_key:"input",ref:h,class:re(T(s).e("input")),type:"checkbox",role:"switch","aria-checked":T(_),"aria-disabled":T(f),"aria-label":C.label,name:C.name,"true-value":C.activeValue,"false-value":C.inactiveValue,disabled:T(f),tabindex:C.tabindex,onChange:b,onKeydown:iR(x,["enter"])},null,42,iV),!C.inlinePrompt&&(C.inactiveIcon||C.inactiveText)?(G(),ce("span",{key:0,class:re(T(p))},[C.inactiveIcon?(G(),de(T(Nt),{key:0},{default:j(()=>[(G(),de(Vt(C.inactiveIcon)))]),_:1})):Ae("v-if",!0),!C.inactiveIcon&&C.inactiveText?(G(),ce("span",{key:1,"aria-hidden":T(_)},be(C.inactiveText),9,aV)):Ae("v-if",!0)],2)):Ae("v-if",!0),ee("span",{ref_key:"core",ref:d,class:re(T(s).e("core")),style:ct(T(g))},[C.inlinePrompt?(G(),ce("div",{key:0,class:re(T(s).e("inner"))},[C.activeIcon||C.inactiveIcon?(G(),de(T(Nt),{key:0,class:re(T(s).is("icon"))},{default:j(()=>[(G(),de(Vt(T(_)?C.activeIcon:C.inactiveIcon)))]),_:1},8,["class"])):C.activeText||C.inactiveText?(G(),ce("span",{key:1,class:re(T(s).is("text")),"aria-hidden":!T(_)},be(T(_)?C.activeText:C.inactiveText),11,oV)):Ae("v-if",!0)],2)):Ae("v-if",!0),ee("div",{class:re(T(s).e("action"))},[C.loading?(G(),de(T(Nt),{key:0,class:re(T(s).is("loading"))},{default:j(()=>[Z(T(Ly))]),_:1},8,["class"])):T(_)?Ce(C.$slots,"active-action",{key:1},()=>[C.activeActionIcon?(G(),de(T(Nt),{key:0},{default:j(()=>[(G(),de(Vt(C.activeActionIcon)))]),_:1})):Ae("v-if",!0)]):T(_)?Ae("v-if",!0):Ce(C.$slots,"inactive-action",{key:2},()=>[C.inactiveActionIcon?(G(),de(T(Nt),{key:0},{default:j(()=>[(G(),de(Vt(C.inactiveActionIcon)))]),_:1})):Ae("v-if",!0)])],2)],6),!C.inlinePrompt&&(C.activeIcon||C.activeText)?(G(),ce("span",{key:1,class:re(T(m))},[C.activeIcon?(G(),de(T(Nt),{key:0},{default:j(()=>[(G(),de(Vt(C.activeIcon)))]),_:1})):Ae("v-if",!0),!C.activeIcon&&C.activeText?(G(),ce("span",{key:1,"aria-hidden":!T(_)},be(C.activeText),9,sV)):Ae("v-if",!0)],2)):Ae("v-if",!0)],14,nV))}});var fV=Ke(uV,[["__file","switch.vue"]]);const cV=Yt(fV),cv=function(e){var t;return(t=e.target)==null?void 0:t.closest("td")},dV=function(e,t,r,n,i){if(!t&&!n&&(!i||Array.isArray(i)&&!i.length))return e;typeof r=="string"?r=r==="descending"?-1:1:r=r&&r<0?-1:1;const a=n?null:function(s,l){return i?(Array.isArray(i)||(i=[i]),i.map(u=>typeof u=="string"?yu(s,u):u(s,l,e))):(t!=="$key"&&qe(s)&&"$value"in s&&(s=s.$value),[qe(s)?yu(s,t):s])},o=function(s,l){if(n)return n(s.value,l.value);for(let u=0,f=s.key.length;ul.key[u])return 1}return 0};return e.map((s,l)=>({value:s,index:l,key:a?a(s,l):null})).sort((s,l)=>{let u=o(s,l);return u||(u=s.index-l.index),u*+r}).map(s=>s.value)},jA=function(e,t){let r=null;return e.columns.forEach(n=>{n.id===t&&(r=n)}),r},hV=function(e,t){let r=null;for(let n=0;n{if(!e)throw new Error("Row is required when get row identity");if(typeof t=="string"){if(!t.includes("."))return`${e[t]}`;const r=t.split(".");let n=e;for(const i of r)n=n[i];return`${n}`}else if(typeof t=="function")return t.call(null,e)},eo=function(e,t){const r={};return(e||[]).forEach((n,i)=>{r[Jt(n,t)]={row:n,index:i}}),r};function vV(e,t){const r={};let n;for(n in e)r[n]=e[n];for(n in t)if(Ue(t,n)){const i=t[n];typeof i<"u"&&(r[n]=i)}return r}function qy(e){return e===""||e!==void 0&&(e=Number.parseInt(e,10),Number.isNaN(e)&&(e="")),e}function qA(e){return e===""||e!==void 0&&(e=qy(e),Number.isNaN(e)&&(e=80)),e}function pV(e){return typeof e=="number"?e:typeof e=="string"?/^\d+(?:px)?$/.test(e)?Number.parseInt(e,10):e:null}function gV(...e){return e.length===0?t=>t:e.length===1?e[0]:e.reduce((t,r)=>(...n)=>t(r(...n)))}function zl(e,t,r){let n=!1;const i=e.indexOf(t),a=i!==-1,o=s=>{s==="add"?e.push(t):e.splice(i,1),n=!0,_e(t.children)&&t.children.forEach(l=>{zl(e,l,r??!a)})};return zr(r)?r&&!a?o("add"):!r&&a&&o("remove"):o(a?"remove":"add"),n}function mV(e,t,r="children",n="hasChildren"){const i=o=>!(Array.isArray(o)&&o.length);function a(o,s,l){t(o,s,l),s.forEach(u=>{if(u[n]){t(u,null,l+1);return}const f=u[r];i(f)||a(u,f,l+1)})}e.forEach(o=>{if(o[n]){t(o,null,0);return}const s=o[r];i(s)||a(o,s,0)})}let Xr=null;function yV(e,t,r,n){if((Xr==null?void 0:Xr.trigger)===r)return;Xr==null||Xr();const i=n==null?void 0:n.refs.tableWrapper,a=i==null?void 0:i.dataset.prefix,o={strategy:"fixed",...e.popperOptions},s=Z(Hs,{content:t,virtualTriggering:!0,virtualRef:r,appendTo:i,placement:"top",transition:"none",offset:0,hideAfter:0,...e,popperOptions:o,onHide:()=>{Xr==null||Xr()}});s.appContext=n.appContext;const l=document.createElement("div");ld(s,l),s.component.exposed.onOpen();const u=i==null?void 0:i.querySelector(`.${a}-scrollbar__wrap`);Xr=()=>{ld(null,l),u==null||u.removeEventListener("scroll",Xr),Xr=null},Xr.trigger=r,u==null||u.addEventListener("scroll",Xr)}function KA(e){return e.children?v3(e.children,KA):[e]}function D1(e,t){return e+t.colSpan}const XA=(e,t,r,n)=>{let i=0,a=e;const o=r.states.columns.value;if(n){const l=KA(n[e]);i=o.slice(0,o.indexOf(l[0])).reduce(D1,0),a=i+l.reduce(D1,0)-1}else i=e;let s;switch(t){case"left":a=o.length-r.states.rightFixedLeafColumnsLength.value&&(s="right");break;default:a=o.length-r.states.rightFixedLeafColumnsLength.value&&(s="right")}return s?{direction:s,start:i,after:a}:{}},Ky=(e,t,r,n,i,a=0)=>{const o=[],{direction:s,start:l,after:u}=XA(t,r,n,i);if(s){const f=s==="left";o.push(`${e}-fixed-column--${s}`),f&&u+a===n.states.fixedLeafColumnsLength.value-1?o.push("is-last-column"):!f&&l-a===n.states.columns.value.length-n.states.rightFixedLeafColumnsLength.value&&o.push("is-first-column")}return o};function I1(e,t){return e+(t.realWidth===null||Number.isNaN(t.realWidth)?Number(t.width):t.realWidth)}const Xy=(e,t,r,n)=>{const{direction:i,start:a=0,after:o=0}=XA(e,t,r,n);if(!i)return;const s={},l=i==="left",u=r.states.columns.value;return l?s.left=u.slice(0,a).reduce(I1,0):s.right=u.slice(o+1).reverse().reduce(I1,0),s},Ts=(e,t)=>{e&&(Number.isNaN(e[t])||(e[t]=`${e[t]}px`))};function _V(e){const t=it(),r=$(!1),n=$([]);return{updateExpandRows:()=>{const l=e.data.value||[],u=e.rowKey.value;if(r.value)n.value=l.slice();else if(u){const f=eo(n.value,u);n.value=l.reduce((c,h)=>{const d=Jt(h,u);return f[d]&&c.push(h),c},[])}else n.value=[]},toggleRowExpansion:(l,u)=>{zl(n.value,l,u)&&t.emit("expand-change",l,n.value.slice())},setExpandRowKeys:l=>{t.store.assertRowKey();const u=e.data.value||[],f=e.rowKey.value,c=eo(u,f);n.value=l.reduce((h,d)=>{const v=c[d];return v&&h.push(v.row),h},[])},isRowExpanded:l=>{const u=e.rowKey.value;return u?!!eo(n.value,u)[Jt(l,u)]:n.value.includes(l)},states:{expandRows:n,defaultExpandAll:r}}}function bV(e){const t=it(),r=$(null),n=$(null),i=u=>{t.store.assertRowKey(),r.value=u,o(u)},a=()=>{r.value=null},o=u=>{const{data:f,rowKey:c}=e;let h=null;c.value&&(h=(T(f)||[]).find(d=>Jt(d,c.value)===u)),n.value=h,t.emit("current-change",n.value,null)};return{setCurrentRowKey:i,restoreCurrentRowKey:a,setCurrentRowByKey:o,updateCurrentRow:u=>{const f=n.value;if(u&&u!==f){n.value=u,t.emit("current-change",n.value,f);return}!u&&f&&(n.value=null,t.emit("current-change",null,f))},updateCurrentRowData:()=>{const u=e.rowKey.value,f=e.data.value||[],c=n.value;if(!f.includes(c)&&c){if(u){const h=Jt(c,u);o(h)}else n.value=null;n.value===null&&t.emit("current-change",null,c)}else r.value&&(o(r.value),a())},states:{_currentRowKey:r,currentRow:n}}}function wV(e){const t=$([]),r=$({}),n=$(16),i=$(!1),a=$({}),o=$("hasChildren"),s=$("children"),l=it(),u=k(()=>{if(!e.rowKey.value)return{};const g=e.data.value||[];return c(g)}),f=k(()=>{const g=e.rowKey.value,y=Object.keys(a.value),_={};return y.length&&y.forEach(b=>{if(a.value[b].length){const x={children:[]};a.value[b].forEach(w=>{const S=Jt(w,g);x.children.push(S),w[o.value]&&!_[S]&&(_[S]={children:[]})}),_[b]=x}}),_}),c=g=>{const y=e.rowKey.value,_={};return mV(g,(b,x,w)=>{const S=Jt(b,y);Array.isArray(x)?_[S]={children:x.map(C=>Jt(C,y)),level:w}:i.value&&(_[S]={children:[],lazy:!0,level:w})},s.value,o.value),_},h=(g=!1,y=(_=>(_=l.store)==null?void 0:_.states.defaultExpandAll.value)())=>{var _;const b=u.value,x=f.value,w=Object.keys(b),S={};if(w.length){const C=T(r),M=[],A=(E,L)=>{if(g)return t.value?y||t.value.includes(L):!!(y||E!=null&&E.expanded);{const O=y||t.value&&t.value.includes(L);return!!(E!=null&&E.expanded||O)}};w.forEach(E=>{const L=C[E],O={...b[E]};if(O.expanded=A(L,E),O.lazy){const{loaded:N=!1,loading:H=!1}=L||{};O.loaded=!!N,O.loading=!!H,M.push(E)}S[E]=O});const P=Object.keys(x);i.value&&P.length&&M.length&&P.forEach(E=>{const L=C[E],O=x[E].children;if(M.includes(E)){if(S[E].children.length!==0)throw new Error("[ElTable]children must be an empty array.");S[E].children=O}else{const{loaded:N=!1,loading:H=!1}=L||{};S[E]={lazy:!0,loaded:!!N,loading:!!H,expanded:A(L,E),children:O,level:""}}})}r.value=S,(_=l.store)==null||_.updateTableScrollY()};we(()=>t.value,()=>{h(!0)}),we(()=>u.value,()=>{h()}),we(()=>f.value,()=>{h()});const d=g=>{t.value=g,h()},v=(g,y)=>{l.store.assertRowKey();const _=e.rowKey.value,b=Jt(g,_),x=b&&r.value[b];if(b&&x&&"expanded"in x){const w=x.expanded;y=typeof y>"u"?!x.expanded:y,r.value[b].expanded=y,w!==y&&l.emit("expand-change",g,y),l.store.updateTableScrollY()}},p=g=>{l.store.assertRowKey();const y=e.rowKey.value,_=Jt(g,y),b=r.value[_];i.value&&b&&"loaded"in b&&!b.loaded?m(g,_,b):v(g,void 0)},m=(g,y,_)=>{const{load:b}=l.props;b&&!r.value[y].loaded&&(r.value[y].loading=!0,b(g,_,x=>{if(!Array.isArray(x))throw new TypeError("[ElTable] data must be an array");r.value[y].loading=!1,r.value[y].loaded=!0,r.value[y].expanded=!0,x.length&&(a.value[y]=x),l.emit("expand-change",g,!0)}))};return{loadData:m,loadOrToggle:p,toggleTreeExpansion:v,updateTreeExpandKeys:d,updateTreeData:h,normalize:c,states:{expandRowKeys:t,treeData:r,indent:n,lazy:i,lazyTreeNodeMap:a,lazyColumnIdentifier:o,childrenColumnName:s}}}const SV=(e,t)=>{const r=t.sortingColumn;return!r||typeof r.sortable=="string"?e:dV(e,t.sortProp,t.sortOrder,r.sortMethod,r.sortBy)},Fc=e=>{const t=[];return e.forEach(r=>{r.children&&r.children.length>0?t.push.apply(t,Fc(r.children)):t.push(r)}),t};function xV(){var e;const t=it(),{size:r}=Kd((e=t.proxy)==null?void 0:e.$props),n=$(null),i=$([]),a=$([]),o=$(!1),s=$([]),l=$([]),u=$([]),f=$([]),c=$([]),h=$([]),d=$([]),v=$([]),p=[],m=$(0),g=$(0),y=$(0),_=$(!1),b=$([]),x=$(!1),w=$(!1),S=$(null),C=$({}),M=$(null),A=$(null),P=$(null),E=$(null),L=$(null);we(i,()=>t.state&&V(!1),{deep:!0});const O=()=>{if(!n.value)throw new Error("[ElTable] prop row-key is required")},N=ve=>{var Pe;(Pe=ve.children)==null||Pe.forEach(We=>{We.fixed=ve.fixed,N(We)})},H=()=>{s.value.forEach(et=>{N(et)}),f.value=s.value.filter(et=>et.fixed===!0||et.fixed==="left"),c.value=s.value.filter(et=>et.fixed==="right"),f.value.length>0&&s.value[0]&&s.value[0].type==="selection"&&!s.value[0].fixed&&(s.value[0].fixed=!0,f.value.unshift(s.value[0]));const ve=s.value.filter(et=>!et.fixed);l.value=[].concat(f.value).concat(ve).concat(c.value);const Pe=Fc(ve),We=Fc(f.value),Ge=Fc(c.value);m.value=Pe.length,g.value=We.length,y.value=Ge.length,u.value=[].concat(We).concat(Pe).concat(Ge),o.value=f.value.length>0||c.value.length>0},V=(ve,Pe=!1)=>{ve&&H(),Pe?t.state.doLayout():t.state.debouncedUpdateLayout()},U=ve=>b.value.includes(ve),F=()=>{_.value=!1,b.value.length&&(b.value=[],t.emit("selection-change",[]))},z=()=>{let ve;if(n.value){ve=[];const Pe=eo(b.value,n.value),We=eo(i.value,n.value);for(const Ge in Pe)Ue(Pe,Ge)&&!We[Ge]&&ve.push(Pe[Ge].row)}else ve=b.value.filter(Pe=>!i.value.includes(Pe));if(ve.length){const Pe=b.value.filter(We=>!ve.includes(We));b.value=Pe,t.emit("selection-change",Pe.slice())}},te=()=>(b.value||[]).slice(),J=(ve,Pe=void 0,We=!0)=>{if(zl(b.value,ve,Pe)){const et=(b.value||[]).slice();We&&t.emit("select",et,ve),t.emit("selection-change",et)}},me=()=>{var ve,Pe;const We=w.value?!_.value:!(_.value||b.value.length);_.value=We;let Ge=!1,et=0;const Ht=(Pe=(ve=t==null?void 0:t.store)==null?void 0:ve.states)==null?void 0:Pe.rowKey.value;i.value.forEach((pt,Kt)=>{const Yr=Kt+et;S.value?S.value.call(null,pt,Yr)&&zl(b.value,pt,We)&&(Ge=!0):zl(b.value,pt,We)&&(Ge=!0),et+=Ie(Jt(pt,Ht))}),Ge&&t.emit("selection-change",b.value?b.value.slice():[]),t.emit("select-all",b.value)},Se=()=>{const ve=eo(b.value,n.value);i.value.forEach(Pe=>{const We=Jt(Pe,n.value),Ge=ve[We];Ge&&(b.value[Ge.index]=Pe)})},$e=()=>{var ve,Pe,We;if(((ve=i.value)==null?void 0:ve.length)===0){_.value=!1;return}let Ge;n.value&&(Ge=eo(b.value,n.value));const et=function(Yr){return Ge?!!Ge[Jt(Yr,n.value)]:b.value.includes(Yr)};let Ht=!0,pt=0,Kt=0;for(let Yr=0,AD=(i.value||[]).length;Yr{var Pe;if(!t||!t.store)return 0;const{treeData:We}=t.store.states;let Ge=0;const et=(Pe=We.value[ve])==null?void 0:Pe.children;return et&&(Ge+=et.length,et.forEach(Ht=>{Ge+=Ie(Ht)})),Ge},B=(ve,Pe)=>{Array.isArray(ve)||(ve=[ve]);const We={};return ve.forEach(Ge=>{C.value[Ge.id]=Pe,We[Ge.columnKey||Ge.id]=Pe}),We},Y=(ve,Pe,We)=>{A.value&&A.value!==ve&&(A.value.order=null),A.value=ve,P.value=Pe,E.value=We},K=()=>{let ve=T(a);Object.keys(C.value).forEach(Pe=>{const We=C.value[Pe];if(!We||We.length===0)return;const Ge=jA({columns:u.value},Pe);Ge&&Ge.filterMethod&&(ve=ve.filter(et=>We.some(Ht=>Ge.filterMethod.call(null,Ht,et,Ge))))}),M.value=ve},Q=()=>{i.value=SV(M.value,{sortingColumn:A.value,sortProp:P.value,sortOrder:E.value})},oe=(ve=void 0)=>{ve&&ve.filter||K(),Q()},pe=ve=>{const{tableHeaderRef:Pe}=t.refs;if(!Pe)return;const We=Object.assign({},Pe.filterPanels),Ge=Object.keys(We);if(Ge.length)if(typeof ve=="string"&&(ve=[ve]),Array.isArray(ve)){const et=ve.map(Ht=>hV({columns:u.value},Ht));Ge.forEach(Ht=>{const pt=et.find(Kt=>Kt.id===Ht);pt&&(pt.filteredValue=[])}),t.store.commit("filterChange",{column:et,values:[],silent:!0,multi:!0})}else Ge.forEach(et=>{const Ht=u.value.find(pt=>pt.id===et);Ht&&(Ht.filteredValue=[])}),C.value={},t.store.commit("filterChange",{column:{},values:[],silent:!0})},D=()=>{A.value&&(Y(null,null,null),t.store.commit("changeSortCondition",{silent:!0}))},{setExpandRowKeys:I,toggleRowExpansion:W,updateExpandRows:X,states:q,isRowExpanded:le}=_V({data:i,rowKey:n}),{updateTreeExpandKeys:fe,toggleTreeExpansion:ae,updateTreeData:se,loadOrToggle:ne,states:he}=wV({data:i,rowKey:n}),{updateCurrentRowData:Me,updateCurrentRow:xe,setCurrentRowKey:ke,states:Ve}=bV({data:i,rowKey:n});return{assertRowKey:O,updateColumns:H,scheduleLayout:V,isSelected:U,clearSelection:F,cleanSelection:z,getSelectionRows:te,toggleRowSelection:J,_toggleAllSelection:me,toggleAllSelection:null,updateSelectionByRowKey:Se,updateAllSelected:$e,updateFilters:B,updateCurrentRow:xe,updateSort:Y,execFilter:K,execSort:Q,execQuery:oe,clearFilter:pe,clearSort:D,toggleRowExpansion:W,setExpandRowKeysAdapter:ve=>{I(ve),fe(ve)},setCurrentRowKey:ke,toggleRowExpansionAdapter:(ve,Pe)=>{u.value.some(({type:Ge})=>Ge==="expand")?W(ve,Pe):ae(ve,Pe)},isRowExpanded:le,updateExpandRows:X,updateCurrentRowData:Me,loadOrToggle:ne,updateTreeData:se,states:{tableSize:r,rowKey:n,data:i,_data:a,isComplex:o,_columns:s,originColumns:l,columns:u,fixedColumns:f,rightFixedColumns:c,leafColumns:h,fixedLeafColumns:d,rightFixedLeafColumns:v,updateOrderFns:p,leafColumnsLength:m,fixedLeafColumnsLength:g,rightFixedLeafColumnsLength:y,isAllSelected:_,selection:b,reserveSelection:x,selectOnIndeterminate:w,selectable:S,filters:C,filteredData:M,sortingColumn:A,sortProp:P,sortOrder:E,hoverRow:L,...q,...he,...Ve}}}function Pg(e,t){return e.map(r=>{var n;return r.id===t.id?t:((n=r.children)!=null&&n.length&&(r.children=Pg(r.children,t)),r)})}function Eg(e){e.forEach(t=>{var r,n;t.no=(r=t.getColumnIndex)==null?void 0:r.call(t),(n=t.children)!=null&&n.length&&Eg(t.children)}),e.sort((t,r)=>t.no-r.no)}function CV(){const e=it(),t=xV();return{ns:Oe("table"),...t,mutations:{setData(o,s){const l=T(o._data)!==s;o.data.value=s,o._data.value=s,e.store.execQuery(),e.store.updateCurrentRowData(),e.store.updateExpandRows(),e.store.updateTreeData(e.store.states.defaultExpandAll.value),T(o.reserveSelection)?(e.store.assertRowKey(),e.store.updateSelectionByRowKey()):l?e.store.clearSelection():e.store.cleanSelection(),e.store.updateAllSelected(),e.$ready&&e.store.scheduleLayout()},insertColumn(o,s,l,u){const f=T(o._columns);let c=[];l?(l&&!l.children&&(l.children=[]),l.children.push(s),c=Pg(f,l)):(f.push(s),c=f),Eg(c),o._columns.value=c,o.updateOrderFns.push(u),s.type==="selection"&&(o.selectable.value=s.selectable,o.reserveSelection.value=s.reserveSelection),e.$ready&&(e.store.updateColumns(),e.store.scheduleLayout())},updateColumnOrder(o,s){var l;((l=s.getColumnIndex)==null?void 0:l.call(s))!==s.no&&(Eg(o._columns.value),e.$ready&&e.store.updateColumns())},removeColumn(o,s,l,u){const f=T(o._columns)||[];if(l)l.children.splice(l.children.findIndex(h=>h.id===s.id),1),kt(()=>{var h;((h=l.children)==null?void 0:h.length)===0&&delete l.children}),o._columns.value=Pg(f,l);else{const h=f.indexOf(s);h>-1&&(f.splice(h,1),o._columns.value=f)}const c=o.updateOrderFns.indexOf(u);c>-1&&o.updateOrderFns.splice(c,1),e.$ready&&(e.store.updateColumns(),e.store.scheduleLayout())},sort(o,s){const{prop:l,order:u,init:f}=s;if(l){const c=T(o.columns).find(h=>h.property===l);c&&(c.order=u,e.store.updateSort(c,l,u),e.store.commit("changeSortCondition",{init:f}))}},changeSortCondition(o,s){const{sortingColumn:l,sortProp:u,sortOrder:f}=o,c=T(l),h=T(u),d=T(f);d===null&&(o.sortingColumn.value=null,o.sortProp.value=null);const v={filter:!0};e.store.execQuery(v),(!s||!(s.silent||s.init))&&e.emit("sort-change",{column:c,prop:h,order:d}),e.store.updateTableScrollY()},filterChange(o,s){const{column:l,values:u,silent:f}=s,c=e.store.updateFilters(l,u);e.store.execQuery(),f||e.emit("filter-change",c),e.store.updateTableScrollY()},toggleAllSelection(){e.store.toggleAllSelection()},rowSelectedChanged(o,s){e.store.toggleRowSelection(s),e.store.updateAllSelected()},setHoverRow(o,s){o.hoverRow.value=s},setCurrentRow(o,s){e.store.updateCurrentRow(s)}},commit:function(o,...s){const l=e.store.mutations;if(l[o])l[o].apply(e,[e.store.states].concat(s));else throw new Error(`Action not found: ${o}`)},updateTableScrollY:function(){kt(()=>e.layout.updateScrollY.apply(e.layout))}}}const Vl={rowKey:"rowKey",defaultExpandAll:"defaultExpandAll",selectOnIndeterminate:"selectOnIndeterminate",indent:"indent",lazy:"lazy",data:"data","treeProps.hasChildren":{key:"lazyColumnIdentifier",default:"hasChildren"},"treeProps.children":{key:"childrenColumnName",default:"children"}};function TV(e,t){if(!e)throw new Error("Table is required.");const r=CV();return r.toggleAllSelection=hd(r._toggleAllSelection,10),Object.keys(Vl).forEach(n=>{ZA(QA(t,n),n,r)}),MV(r,t),r}function MV(e,t){Object.keys(Vl).forEach(r=>{we(()=>QA(t,r),n=>{ZA(n,r,e)})})}function ZA(e,t,r){let n=e,i=Vl[t];typeof Vl[t]=="object"&&(i=i.key,n=n||Vl[t].default),r.states[i].value=n}function QA(e,t){if(t.includes(".")){const r=t.split(".");let n=e;return r.forEach(i=>{n=n[i]}),n}else return e[t]}class AV{constructor(t){this.observers=[],this.table=null,this.store=null,this.columns=[],this.fit=!0,this.showHeader=!0,this.height=$(null),this.scrollX=$(!1),this.scrollY=$(!1),this.bodyWidth=$(null),this.fixedWidth=$(null),this.rightFixedWidth=$(null),this.gutterWidth=0;for(const r in t)Ue(t,r)&&(Pt(this[r])?this[r].value=t[r]:this[r]=t[r]);if(!this.table)throw new Error("Table is required for Table Layout");if(!this.store)throw new Error("Store is required for Table Layout")}updateScrollY(){if(this.height.value===null)return!1;const r=this.table.refs.scrollBarRef;if(this.table.vnode.el&&(r!=null&&r.wrapRef)){let n=!0;const i=this.scrollY.value;return n=r.wrapRef.scrollHeight>r.wrapRef.clientHeight,this.scrollY.value=n,i!==n}return!1}setHeight(t,r="height"){if(!At)return;const n=this.table.vnode.el;if(t=pV(t),this.height.value=Number(t),!n&&(t||t===0))return kt(()=>this.setHeight(t,r));typeof t=="number"?(n.style[r]=`${t}px`,this.updateElsHeight()):typeof t=="string"&&(n.style[r]=t,this.updateElsHeight())}setMaxHeight(t){this.setHeight(t,"max-height")}getFlattenColumns(){const t=[];return this.table.store.states.columns.value.forEach(n=>{n.isColumnGroup?t.push.apply(t,n.columns):t.push(n)}),t}updateElsHeight(){this.updateScrollY(),this.notifyObservers("scrollable")}headerDisplayNone(t){if(!t)return!0;let r=t;for(;r.tagName!=="DIV";){if(getComputedStyle(r).display==="none")return!0;r=r.parentElement}return!1}updateColumnsWidth(){if(!At)return;const t=this.fit,r=this.table.vnode.el.clientWidth;let n=0;const i=this.getFlattenColumns(),a=i.filter(l=>typeof l.width!="number");if(i.forEach(l=>{typeof l.width=="number"&&l.realWidth&&(l.realWidth=null)}),a.length>0&&t){if(i.forEach(l=>{n+=Number(l.width||l.minWidth||80)}),n<=r){this.scrollX.value=!1;const l=r-n;if(a.length===1)a[0].realWidth=Number(a[0].minWidth||80)+l;else{const u=a.reduce((h,d)=>h+Number(d.minWidth||80),0),f=l/u;let c=0;a.forEach((h,d)=>{if(d===0)return;const v=Math.floor(Number(h.minWidth||80)*f);c+=v,h.realWidth=Number(h.minWidth||80)+v}),a[0].realWidth=Number(a[0].minWidth||80)+l-c}}else this.scrollX.value=!0,a.forEach(l=>{l.realWidth=Number(l.minWidth)});this.bodyWidth.value=Math.max(n,r),this.table.state.resizeState.value.width=this.bodyWidth.value}else i.forEach(l=>{!l.width&&!l.minWidth?l.realWidth=80:l.realWidth=Number(l.width||l.minWidth),n+=l.realWidth}),this.scrollX.value=n>r,this.bodyWidth.value=n;const o=this.store.states.fixedColumns.value;if(o.length>0){let l=0;o.forEach(u=>{l+=Number(u.realWidth||u.width)}),this.fixedWidth.value=l}const s=this.store.states.rightFixedColumns.value;if(s.length>0){let l=0;s.forEach(u=>{l+=Number(u.realWidth||u.width)}),this.rightFixedWidth.value=l}this.notifyObservers("columns")}addObserver(t){this.observers.push(t)}removeObserver(t){const r=this.observers.indexOf(t);r!==-1&&this.observers.splice(r,1)}notifyObservers(t){this.observers.forEach(n=>{var i,a;switch(t){case"columns":(i=n.state)==null||i.onColumnsChange(this);break;case"scrollable":(a=n.state)==null||a.onScrollableChange(this);break;default:throw new Error(`Table Layout don't have event ${t}.`)}})}}const{CheckboxGroup:PV}=Cs,EV=ie({name:"ElTableFilterPanel",components:{ElCheckbox:Cs,ElCheckboxGroup:PV,ElScrollbar:uA,ElTooltip:Hs,ElIcon:Nt,ArrowDown:EM,ArrowUp:E3},directives:{ClickOutside:CA},props:{placement:{type:String,default:"bottom-start"},store:{type:Object},column:{type:Object},upDataColumn:{type:Function}},setup(e){const t=it(),{t:r}=Fs(),n=Oe("table-filter"),i=t==null?void 0:t.parent;i.filterPanels.value[e.column.id]||(i.filterPanels.value[e.column.id]=t);const a=$(!1),o=$(null),s=k(()=>e.column&&e.column.filters),l=k(()=>e.column.filterClassName?`${n.b()} ${e.column.filterClassName}`:n.b()),u=k({get:()=>{var x;return(((x=e.column)==null?void 0:x.filteredValue)||[])[0]},set:x=>{f.value&&(typeof x<"u"&&x!==null?f.value.splice(0,1,x):f.value.splice(0,1))}}),f=k({get(){return e.column?e.column.filteredValue||[]:[]},set(x){e.column&&e.upDataColumn("filteredValue",x)}}),c=k(()=>e.column?e.column.filterMultiple:!0),h=x=>x.value===u.value,d=()=>{a.value=!1},v=x=>{x.stopPropagation(),a.value=!a.value},p=()=>{a.value=!1},m=()=>{_(f.value),d()},g=()=>{f.value=[],_(f.value),d()},y=x=>{u.value=x,_(typeof x<"u"&&x!==null?f.value:[]),d()},_=x=>{e.store.commit("filterChange",{column:e.column,values:x}),e.store.updateAllSelected()};we(a,x=>{e.column&&e.upDataColumn("filterOpened",x)},{immediate:!0});const b=k(()=>{var x,w;return(w=(x=o.value)==null?void 0:x.popperRef)==null?void 0:w.contentRef});return{tooltipVisible:a,multiple:c,filterClassName:l,filteredValue:f,filterValue:u,filters:s,handleConfirm:m,handleReset:g,handleSelect:y,isActive:h,t:r,ns:n,showFilterPanel:v,hideFilterPanel:p,popperPaneRef:b,tooltip:o}}}),LV={key:0},DV=["disabled"],IV=["label","onClick"];function OV(e,t,r,n,i,a){const o=xr("el-checkbox"),s=xr("el-checkbox-group"),l=xr("el-scrollbar"),u=xr("arrow-up"),f=xr("arrow-down"),c=xr("el-icon"),h=xr("el-tooltip"),d=fT("click-outside");return G(),de(h,{ref:"tooltip",visible:e.tooltipVisible,offset:0,placement:e.placement,"show-arrow":!1,"stop-popper-mouse-event":!1,teleported:"",effect:"light",pure:"","popper-class":e.filterClassName,persistent:""},{content:j(()=>[e.multiple?(G(),ce("div",LV,[ee("div",{class:re(e.ns.e("content"))},[Z(l,{"wrap-class":e.ns.e("wrap")},{default:j(()=>[Z(s,{modelValue:e.filteredValue,"onUpdate:modelValue":t[0]||(t[0]=v=>e.filteredValue=v),class:re(e.ns.e("checkbox-group"))},{default:j(()=>[(G(!0),ce(ft,null,Hp(e.filters,v=>(G(),de(o,{key:v.value,label:v.value},{default:j(()=>[mt(be(v.text),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue","class"])]),_:1},8,["wrap-class"])],2),ee("div",{class:re(e.ns.e("bottom"))},[ee("button",{class:re({[e.ns.is("disabled")]:e.filteredValue.length===0}),disabled:e.filteredValue.length===0,type:"button",onClick:t[1]||(t[1]=(...v)=>e.handleConfirm&&e.handleConfirm(...v))},be(e.t("el.table.confirmFilter")),11,DV),ee("button",{type:"button",onClick:t[2]||(t[2]=(...v)=>e.handleReset&&e.handleReset(...v))},be(e.t("el.table.resetFilter")),1)],2)])):(G(),ce("ul",{key:1,class:re(e.ns.e("list"))},[ee("li",{class:re([e.ns.e("list-item"),{[e.ns.is("active")]:e.filterValue===void 0||e.filterValue===null}]),onClick:t[3]||(t[3]=v=>e.handleSelect(null))},be(e.t("el.table.clearFilter")),3),(G(!0),ce(ft,null,Hp(e.filters,v=>(G(),ce("li",{key:v.value,class:re([e.ns.e("list-item"),e.ns.is("active",e.isActive(v))]),label:v.value,onClick:p=>e.handleSelect(v.value)},be(v.text),11,IV))),128))],2))]),default:j(()=>[qt((G(),ce("span",{class:re([`${e.ns.namespace.value}-table__column-filter-trigger`,`${e.ns.namespace.value}-none-outline`]),onClick:t[4]||(t[4]=(...v)=>e.showFilterPanel&&e.showFilterPanel(...v))},[Z(c,null,{default:j(()=>[e.column.filterOpened?(G(),de(u,{key:0})):(G(),de(f,{key:1}))]),_:1})],2)),[[d,e.hideFilterPanel,e.popperPaneRef]])]),_:1},8,["visible","placement","popper-class"])}var RV=Ke(EV,[["render",OV],["__file","filter-panel.vue"]]);function JA(e){const t=it();eh(()=>{r.value.addObserver(t)}),_t(()=>{n(r.value),i(r.value)}),Uu(()=>{n(r.value),i(r.value)}),Os(()=>{r.value.removeObserver(t)});const r=k(()=>{const a=e.layout;if(!a)throw new Error("Can not find table layout.");return a}),n=a=>{var o;const s=((o=e.vnode.el)==null?void 0:o.querySelectorAll("colgroup > col"))||[];if(!s.length)return;const l=a.getFlattenColumns(),u={};l.forEach(f=>{u[f.id]=f});for(let f=0,c=s.length;f{var o,s;const l=((o=e.vnode.el)==null?void 0:o.querySelectorAll("colgroup > col[name=gutter]"))||[];for(let f=0,c=l.length;f{p.stopPropagation()},a=(p,m)=>{!m.filters&&m.sortable?v(p,m,!1):m.filterable&&!m.sortable&&i(p),n==null||n.emit("header-click",m,p)},o=(p,m)=>{n==null||n.emit("header-contextmenu",m,p)},s=$(null),l=$(!1),u=$({}),f=(p,m)=>{if(At&&!(m.children&&m.children.length>0)&&s.value&&e.border){l.value=!0;const g=n;t("set-drag-visible",!0);const _=(g==null?void 0:g.vnode.el).getBoundingClientRect().left,b=r.vnode.el.querySelector(`th.${m.id}`),x=b.getBoundingClientRect(),w=x.left-_+30;Za(b,"noclick"),u.value={startMouseLeft:p.clientX,startLeft:x.right-_,startColumnLeft:x.left-_,tableLeft:_};const S=g==null?void 0:g.refs.resizeProxy;S.style.left=`${u.value.startLeft}px`,document.onselectstart=function(){return!1},document.ondragstart=function(){return!1};const C=A=>{const P=A.clientX-u.value.startMouseLeft,E=u.value.startLeft+P;S.style.left=`${Math.max(w,E)}px`},M=()=>{if(l.value){const{startColumnLeft:A,startLeft:P}=u.value,L=Number.parseInt(S.style.left,10)-A;m.width=m.realWidth=L,g==null||g.emit("header-dragend",m.width,P-A,m,p),requestAnimationFrame(()=>{e.store.scheduleLayout(!1,!0)}),document.body.style.cursor="",l.value=!1,s.value=null,u.value={},t("set-drag-visible",!1)}document.removeEventListener("mousemove",C),document.removeEventListener("mouseup",M),document.onselectstart=null,document.ondragstart=null,setTimeout(()=>{so(b,"noclick")},0)};document.addEventListener("mousemove",C),document.addEventListener("mouseup",M)}},c=(p,m)=>{if(m.children&&m.children.length>0)return;const g=p.target;if(!mo(g))return;const y=g==null?void 0:g.closest("th");if(!(!m||!m.resizable)&&!l.value&&e.border){const _=y.getBoundingClientRect(),b=document.body.style;_.width>12&&_.right-p.pageX<8?(b.cursor="col-resize",oo(y,"is-sortable")&&(y.style.cursor="col-resize"),s.value=m):l.value||(b.cursor="",oo(y,"is-sortable")&&(y.style.cursor="pointer"),s.value=null)}},h=()=>{At&&(document.body.style.cursor="")},d=({order:p,sortOrders:m})=>{if(p==="")return m[0];const g=m.indexOf(p||null);return m[g>m.length-2?0:g+1]},v=(p,m,g)=>{var y;p.stopPropagation();const _=m.order===g?null:g||d(m),b=(y=p.target)==null?void 0:y.closest("th");if(b&&oo(b,"noclick")){so(b,"noclick");return}if(!m.sortable)return;const x=e.store.states;let w=x.sortProp.value,S;const C=x.sortingColumn.value;(C!==m||C===m&&C.order===null)&&(C&&(C.order=null),x.sortingColumn.value=m,w=m.property),_?S=m.order=_:S=m.order=null,x.sortProp.value=w,x.sortOrder.value=S,n==null||n.store.commit("changeSortCondition")};return{handleHeaderClick:a,handleHeaderContextMenu:o,handleMouseDown:f,handleMouseMove:c,handleMouseOut:h,handleSortClick:v,handleFilterClick:i}}function NV(e){const t=Le(ri),r=Oe("table");return{getHeaderRowStyle:s=>{const l=t==null?void 0:t.props.headerRowStyle;return typeof l=="function"?l.call(null,{rowIndex:s}):l},getHeaderRowClass:s=>{const l=[],u=t==null?void 0:t.props.headerRowClassName;return typeof u=="string"?l.push(u):typeof u=="function"&&l.push(u.call(null,{rowIndex:s})),l.join(" ")},getHeaderCellStyle:(s,l,u,f)=>{var c;let h=(c=t==null?void 0:t.props.headerCellStyle)!=null?c:{};typeof h=="function"&&(h=h.call(null,{rowIndex:s,columnIndex:l,row:u,column:f}));const d=Xy(l,f.fixed,e.store,u);return Ts(d,"left"),Ts(d,"right"),Object.assign({},h,d)},getHeaderCellClass:(s,l,u,f)=>{const c=Ky(r.b(),l,f.fixed,e.store,u),h=[f.id,f.order,f.headerAlign,f.className,f.labelClassName,...c];f.children||h.push("is-leaf"),f.sortable&&h.push("is-sortable");const d=t==null?void 0:t.props.headerCellClassName;return typeof d=="string"?h.push(d):typeof d=="function"&&h.push(d.call(null,{rowIndex:s,columnIndex:l,row:u,column:f})),h.push(r.e("cell")),h.filter(v=>!!v).join(" ")}}}const e2=e=>{const t=[];return e.forEach(r=>{r.children?(t.push(r),t.push.apply(t,e2(r.children))):t.push(r)}),t},BV=e=>{let t=1;const r=(a,o)=>{if(o&&(a.level=o.level+1,t{r(l,a),s+=l.colSpan}),a.colSpan=s}else a.colSpan=1};e.forEach(a=>{a.level=1,r(a,void 0)});const n=[];for(let a=0;a{a.children?(a.rowSpan=1,a.children.forEach(o=>o.isSubColumn=!0)):a.rowSpan=t-a.level+1,n[a.level-1].push(a)}),n};function FV(e){const t=Le(ri),r=k(()=>BV(e.store.states.originColumns.value));return{isGroup:k(()=>{const a=r.value.length>1;return a&&t&&(t.state.isGroup.value=!0),a}),toggleAllSelection:a=>{a.stopPropagation(),t==null||t.store.commit("toggleAllSelection")},columnRows:r}}var $V=ie({name:"ElTableHeader",components:{ElCheckbox:Cs},props:{fixed:{type:String,default:""},store:{required:!0,type:Object},border:Boolean,defaultSort:{type:Object,default:()=>({prop:"",order:""})}},setup(e,{emit:t}){const r=it(),n=Le(ri),i=Oe("table"),a=$({}),{onColumnsChange:o,onScrollableChange:s}=JA(n);_t(async()=>{await kt(),await kt();const{prop:w,order:S}=e.defaultSort;n==null||n.store.commit("sort",{prop:w,order:S,init:!0})});const{handleHeaderClick:l,handleHeaderContextMenu:u,handleMouseDown:f,handleMouseMove:c,handleMouseOut:h,handleSortClick:d,handleFilterClick:v}=kV(e,t),{getHeaderRowStyle:p,getHeaderRowClass:m,getHeaderCellStyle:g,getHeaderCellClass:y}=NV(e),{isGroup:_,toggleAllSelection:b,columnRows:x}=FV(e);return r.state={onColumnsChange:o,onScrollableChange:s},r.filterPanels=a,{ns:i,filterPanels:a,onColumnsChange:o,onScrollableChange:s,columnRows:x,getHeaderRowClass:m,getHeaderRowStyle:p,getHeaderCellClass:y,getHeaderCellStyle:g,handleHeaderClick:l,handleHeaderContextMenu:u,handleMouseDown:f,handleMouseMove:c,handleMouseOut:h,handleSortClick:d,handleFilterClick:v,isGroup:_,toggleAllSelection:b}},render(){const{ns:e,isGroup:t,columnRows:r,getHeaderCellStyle:n,getHeaderCellClass:i,getHeaderRowClass:a,getHeaderRowStyle:o,handleHeaderClick:s,handleHeaderContextMenu:l,handleMouseDown:u,handleMouseMove:f,handleSortClick:c,handleMouseOut:h,store:d,$parent:v}=this;let p=1;return Te("thead",{class:{[e.is("group")]:t}},r.map((m,g)=>Te("tr",{class:a(g),key:g,style:o(g)},m.map((y,_)=>(y.rowSpan>p&&(p=y.rowSpan),Te("th",{class:i(g,_,m,y),colspan:y.colSpan,key:`${y.id}-thead`,rowspan:y.rowSpan,style:n(g,_,m,y),onClick:b=>s(b,y),onContextmenu:b=>l(b,y),onMousedown:b=>u(b,y),onMousemove:b=>f(b,y),onMouseout:h},[Te("div",{class:["cell",y.filteredValue&&y.filteredValue.length>0?"highlight":""]},[y.renderHeader?y.renderHeader({column:y,$index:_,store:d,_self:v}):y.label,y.sortable&&Te("span",{onClick:b=>c(b,y),class:"caret-wrapper"},[Te("i",{onClick:b=>c(b,y,"ascending"),class:"sort-caret ascending"}),Te("i",{onClick:b=>c(b,y,"descending"),class:"sort-caret descending"})]),y.filterable&&Te(RV,{store:d,placement:y.filterPlacement||"bottom-start",column:y,upDataColumn:(b,x)=>{y[b]=x}})])]))))))}});function HV(e){const t=Le(ri),r=$(""),n=$(Te("div")),i=(d,v,p)=>{var m;const g=t,y=cv(d);let _;const b=(m=g==null?void 0:g.vnode.el)==null?void 0:m.dataset.prefix;y&&(_=L1({columns:e.store.states.columns.value},y,b),_&&(g==null||g.emit(`cell-${p}`,v,_,y,d))),g==null||g.emit(`row-${p}`,v,_,d)},a=(d,v)=>{i(d,v,"dblclick")},o=(d,v)=>{e.store.commit("setCurrentRow",v),i(d,v,"click")},s=(d,v)=>{i(d,v,"contextmenu")},l=hd(d=>{e.store.commit("setHoverRow",d)},30),u=hd(()=>{e.store.commit("setHoverRow",null)},30),f=d=>{const v=window.getComputedStyle(d,null),p=Number.parseInt(v.paddingLeft,10)||0,m=Number.parseInt(v.paddingRight,10)||0,g=Number.parseInt(v.paddingTop,10)||0,y=Number.parseInt(v.paddingBottom,10)||0;return{left:p,right:m,top:g,bottom:y}};return{handleDoubleClick:a,handleClick:o,handleContextMenu:s,handleMouseEnter:l,handleMouseLeave:u,handleCellMouseEnter:(d,v,p)=>{var m;const g=t,y=cv(d),_=(m=g==null?void 0:g.vnode.el)==null?void 0:m.dataset.prefix;if(y){const H=L1({columns:e.store.states.columns.value},y,_),V=g.hoverState={cell:y,column:H,row:v};g==null||g.emit("cell-mouse-enter",V.row,V.column,V.cell,d)}if(!p)return;const b=d.target.querySelector(".cell");if(!(oo(b,`${_}-tooltip`)&&b.childNodes.length))return;const x=document.createRange();x.setStart(b,0),x.setEnd(b,b.childNodes.length);let w=x.getBoundingClientRect().width,S=x.getBoundingClientRect().height;w-Math.floor(w)<.001&&(w=Math.floor(w)),S-Math.floor(S)<.001&&(S=Math.floor(S));const{top:A,left:P,right:E,bottom:L}=f(b),O=P+E,N=A+L;(w+O>b.offsetWidth||S+N>b.offsetHeight||b.scrollWidth>b.offsetWidth)&&yV(p,y.innerText||y.textContent,y,g)},handleCellMouseLeave:d=>{if(!cv(d))return;const p=t==null?void 0:t.hoverState;t==null||t.emit("cell-mouse-leave",p==null?void 0:p.row,p==null?void 0:p.column,p==null?void 0:p.cell,d)},tooltipContent:r,tooltipTrigger:n}}function zV(e){const t=Le(ri),r=Oe("table");return{getRowStyle:(u,f)=>{const c=t==null?void 0:t.props.rowStyle;return typeof c=="function"?c.call(null,{row:u,rowIndex:f}):c||null},getRowClass:(u,f)=>{const c=[r.e("row")];t!=null&&t.props.highlightCurrentRow&&u===e.store.states.currentRow.value&&c.push("current-row"),e.stripe&&f%2===1&&c.push(r.em("row","striped"));const h=t==null?void 0:t.props.rowClassName;return typeof h=="string"?c.push(h):typeof h=="function"&&c.push(h.call(null,{row:u,rowIndex:f})),c},getCellStyle:(u,f,c,h)=>{const d=t==null?void 0:t.props.cellStyle;let v=d??{};typeof d=="function"&&(v=d.call(null,{rowIndex:u,columnIndex:f,row:c,column:h}));const p=Xy(f,e==null?void 0:e.fixed,e.store);return Ts(p,"left"),Ts(p,"right"),Object.assign({},v,p)},getCellClass:(u,f,c,h,d)=>{const v=Ky(r.b(),f,e==null?void 0:e.fixed,e.store,void 0,d),p=[h.id,h.align,h.className,...v],m=t==null?void 0:t.props.cellClassName;return typeof m=="string"?p.push(m):typeof m=="function"&&p.push(m.call(null,{rowIndex:u,columnIndex:f,row:c,column:h})),p.push(r.e("cell")),p.filter(g=>!!g).join(" ")},getSpan:(u,f,c,h)=>{let d=1,v=1;const p=t==null?void 0:t.props.spanMethod;if(typeof p=="function"){const m=p({row:u,column:f,rowIndex:c,columnIndex:h});Array.isArray(m)?(d=m[0],v=m[1]):typeof m=="object"&&(d=m.rowspan,v=m.colspan)}return{rowspan:d,colspan:v}},getColspanRealWidth:(u,f,c)=>{if(f<1)return u[c].realWidth;const h=u.map(({realWidth:d,width:v})=>d||v).slice(c,c+f);return Number(h.reduce((d,v)=>Number(d)+Number(v),-1))}}}function VV(e){const t=Le(ri),r=Oe("table"),{handleDoubleClick:n,handleClick:i,handleContextMenu:a,handleMouseEnter:o,handleMouseLeave:s,handleCellMouseEnter:l,handleCellMouseLeave:u,tooltipContent:f,tooltipTrigger:c}=HV(e),{getRowStyle:h,getRowClass:d,getCellStyle:v,getCellClass:p,getSpan:m,getColspanRealWidth:g}=zV(e),y=k(()=>e.store.states.columns.value.findIndex(({type:S})=>S==="default")),_=(S,C)=>{const M=t.props.rowKey;return M?Jt(S,M):C},b=(S,C,M,A=!1)=>{const{tooltipEffect:P,tooltipOptions:E,store:L}=e,{indent:O,columns:N}=L.states,H=d(S,C);let V=!0;return M&&(H.push(r.em("row",`level-${M.level}`)),V=M.display),Te("tr",{style:[V?null:{display:"none"},h(S,C)],class:H,key:_(S,C),onDblclick:F=>n(F,S),onClick:F=>i(F,S),onContextmenu:F=>a(F,S),onMouseenter:()=>o(C),onMouseleave:s},N.value.map((F,z)=>{const{rowspan:te,colspan:J}=m(S,F,C,z);if(!te||!J)return null;const me=Object.assign({},F);me.realWidth=g(N.value,J,z);const Se={store:e.store,_self:e.context||t,column:me,row:S,$index:C,cellIndex:z,expanded:A};z===y.value&&M&&(Se.treeNode={indent:M.level*O.value,level:M.level},typeof M.expanded=="boolean"&&(Se.treeNode.expanded=M.expanded,"loading"in M&&(Se.treeNode.loading=M.loading),"noLazyChildren"in M&&(Se.treeNode.noLazyChildren=M.noLazyChildren)));const $e=`${C},${z}`,Ie=me.columnKey||me.rawColumnKey||"",B=x(z,F,Se),Y=F.showOverflowTooltip&&m3({effect:P},E,F.showOverflowTooltip);return Te("td",{style:v(C,z,S,F),class:p(C,z,S,F,J-1),key:`${Ie}${$e}`,rowspan:te,colspan:J,onMouseenter:K=>l(K,S,Y),onMouseleave:u},[B])}))},x=(S,C,M)=>C.renderCell(M);return{wrappedRowRender:(S,C)=>{const M=e.store,{isRowExpanded:A,assertRowKey:P}=M,{treeData:E,lazyTreeNodeMap:L,childrenColumnName:O,rowKey:N}=M.states,H=M.states.columns.value;if(H.some(({type:U})=>U==="expand")){const U=A(S),F=b(S,C,void 0,U),z=t.renderExpanded;return U?z?[[F,Te("tr",{key:`expanded-row__${F.key}`},[Te("td",{colspan:H.length,class:`${r.e("cell")} ${r.e("expanded-cell")}`},[z({row:S,$index:C,store:M,expanded:U})])])]]:(console.error("[Element Error]renderExpanded is required."),F):[[F]]}else if(Object.keys(E.value).length){P();const U=Jt(S,N.value);let F=E.value[U],z=null;F&&(z={expanded:F.expanded,level:F.level,display:!0},typeof F.lazy=="boolean"&&(typeof F.loaded=="boolean"&&F.loaded&&(z.noLazyChildren=!(F.children&&F.children.length)),z.loading=F.loading));const te=[b(S,C,z)];if(F){let J=0;const me=($e,Ie)=>{$e&&$e.length&&Ie&&$e.forEach(B=>{const Y={display:Ie.display&&Ie.expanded,level:Ie.level+1,expanded:!1,noLazyChildren:!1,loading:!1},K=Jt(B,N.value);if(K==null)throw new Error("For nested data item, row-key is required.");if(F={...E.value[K]},F&&(Y.expanded=F.expanded,F.level=F.level||Y.level,F.display=!!(F.expanded&&Y.display),typeof F.lazy=="boolean"&&(typeof F.loaded=="boolean"&&F.loaded&&(Y.noLazyChildren=!(F.children&&F.children.length)),Y.loading=F.loading)),J++,te.push(b(B,C+J,Y)),F){const Q=L.value[K]||B[O.value];me(Q,F)}})};F.display=!0;const Se=L.value[U]||S[O.value];me(Se,F)}return te}else return b(S,C,void 0)},tooltipContent:f,tooltipTrigger:c}}const WV={store:{required:!0,type:Object},stripe:Boolean,tooltipEffect:String,tooltipOptions:{type:Object},context:{default:()=>({}),type:Object},rowClassName:[String,Function],rowStyle:[Object,Function],fixed:{type:String,default:""},highlight:Boolean};var GV=ie({name:"ElTableBody",props:WV,setup(e){const t=it(),r=Le(ri),n=Oe("table"),{wrappedRowRender:i,tooltipContent:a,tooltipTrigger:o}=VV(e),{onColumnsChange:s,onScrollableChange:l}=JA(r);return we(e.store.states.hoverRow,(u,f)=>{!e.store.states.isComplex.value||!At||q3(()=>{const c=t==null?void 0:t.vnode.el,h=Array.from((c==null?void 0:c.children)||[]).filter(p=>p==null?void 0:p.classList.contains(`${n.e("row")}`)),d=h[f],v=h[u];d&&so(d,"hover-row"),v&&Za(v,"hover-row")})}),Os(()=>{var u;(u=Xr)==null||u()}),{ns:n,onColumnsChange:s,onScrollableChange:l,wrappedRowRender:i,tooltipContent:a,tooltipTrigger:o}},render(){const{wrappedRowRender:e,store:t}=this,r=t.states.data.value||[];return Te("tbody",{tabIndex:-1},[r.reduce((n,i)=>n.concat(e(i,n.length)),[])])}});function UV(){const e=Le(ri),t=e==null?void 0:e.store,r=k(()=>t.states.fixedLeafColumnsLength.value),n=k(()=>t.states.rightFixedColumns.value.length),i=k(()=>t.states.columns.value.length),a=k(()=>t.states.fixedColumns.value.length),o=k(()=>t.states.rightFixedColumns.value.length);return{leftFixedLeafCount:r,rightFixedLeafCount:n,columnsCount:i,leftFixedCount:a,rightFixedCount:o,columns:t.states.columns}}function YV(e){const{columns:t}=UV(),r=Oe("table");return{getCellClasses:(a,o)=>{const s=a[o],l=[r.e("cell"),s.id,s.align,s.labelClassName,...Ky(r.b(),o,s.fixed,e.store)];return s.className&&l.push(s.className),s.children||l.push(r.is("leaf")),l},getCellStyles:(a,o)=>{const s=Xy(o,a.fixed,e.store);return Ts(s,"left"),Ts(s,"right"),s},columns:t}}var jV=ie({name:"ElTableFooter",props:{fixed:{type:String,default:""},store:{required:!0,type:Object},summaryMethod:Function,sumText:String,border:Boolean,defaultSort:{type:Object,default:()=>({prop:"",order:""})}},setup(e){const{getCellClasses:t,getCellStyles:r,columns:n}=YV(e);return{ns:Oe("table"),getCellClasses:t,getCellStyles:r,columns:n}},render(){const{columns:e,getCellStyles:t,getCellClasses:r,summaryMethod:n,sumText:i}=this,a=this.store.states.data.value;let o=[];return n?o=n({columns:e,data:a}):e.forEach((s,l)=>{if(l===0){o[l]=i;return}const u=a.map(d=>Number(d[s.property])),f=[];let c=!0;u.forEach(d=>{if(!Number.isNaN(+d)){c=!1;const v=`${d}`.split(".")[1];f.push(v?v.length:0)}});const h=Math.max.apply(null,f);c?o[l]="":o[l]=u.reduce((d,v)=>{const p=Number(v);return Number.isNaN(+p)?d:Number.parseFloat((d+v).toFixed(Math.min(h,20)))},0)}),Te(Te("tfoot",[Te("tr",{},[...e.map((s,l)=>Te("td",{key:l,colspan:s.colSpan,rowspan:s.rowSpan,class:r(e,l),style:t(s,l)},[Te("div",{class:["cell",s.labelClassName]},[o[l]])]))])]))}});function qV(e){return{setCurrentRow:f=>{e.commit("setCurrentRow",f)},getSelectionRows:()=>e.getSelectionRows(),toggleRowSelection:(f,c)=>{e.toggleRowSelection(f,c,!1),e.updateAllSelected()},clearSelection:()=>{e.clearSelection()},clearFilter:f=>{e.clearFilter(f)},toggleAllSelection:()=>{e.commit("toggleAllSelection")},toggleRowExpansion:(f,c)=>{e.toggleRowExpansionAdapter(f,c)},clearSort:()=>{e.clearSort()},sort:(f,c)=>{e.commit("sort",{prop:f,order:c})}}}function KV(e,t,r,n){const i=$(!1),a=$(null),o=$(!1),s=F=>{o.value=F},l=$({width:null,height:null,headerHeight:null}),u=$(!1),f={display:"inline-block",verticalAlign:"middle"},c=$(),h=$(0),d=$(0),v=$(0),p=$(0),m=$(0);na(()=>{t.setHeight(e.height)}),na(()=>{t.setMaxHeight(e.maxHeight)}),we(()=>[e.currentRowKey,r.states.rowKey],([F,z])=>{!T(z)||!T(F)||r.setCurrentRowKey(`${F}`)},{immediate:!0}),we(()=>e.data,F=>{n.store.commit("setData",F)},{immediate:!0,deep:!0}),na(()=>{e.expandRowKeys&&r.setExpandRowKeysAdapter(e.expandRowKeys)});const g=()=>{n.store.commit("setHoverRow",null),n.hoverState&&(n.hoverState=null)},y=(F,z)=>{const{pixelX:te,pixelY:J}=z;Math.abs(te)>=Math.abs(J)&&(n.refs.bodyWrapper.scrollLeft+=z.pixelX/5)},_=k(()=>e.height||e.maxHeight||r.states.fixedColumns.value.length>0||r.states.rightFixedColumns.value.length>0),b=k(()=>({width:t.bodyWidth.value?`${t.bodyWidth.value}px`:""})),x=()=>{_.value&&t.updateElsHeight(),t.updateColumnsWidth(),requestAnimationFrame(M)};_t(async()=>{await kt(),r.updateColumns(),A(),requestAnimationFrame(x);const F=n.vnode.el,z=n.refs.headerWrapper;e.flexible&&F&&F.parentElement&&(F.parentElement.style.minWidth="0"),l.value={width:c.value=F.offsetWidth,height:F.offsetHeight,headerHeight:e.showHeader&&z?z.offsetHeight:null},r.states.columns.value.forEach(te=>{te.filteredValue&&te.filteredValue.length&&n.store.commit("filterChange",{column:te,values:te.filteredValue,silent:!0})}),n.$ready=!0});const w=(F,z)=>{if(!F)return;const te=Array.from(F.classList).filter(J=>!J.startsWith("is-scrolling-"));te.push(t.scrollX.value?z:"is-scrolling-none"),F.className=te.join(" ")},S=F=>{const{tableWrapper:z}=n.refs;w(z,F)},C=F=>{const{tableWrapper:z}=n.refs;return!!(z&&z.classList.contains(F))},M=function(){if(!n.refs.scrollBarRef)return;if(!t.scrollX.value){const Ie="is-scrolling-none";C(Ie)||S(Ie);return}const F=n.refs.scrollBarRef.wrapRef;if(!F)return;const{scrollLeft:z,offsetWidth:te,scrollWidth:J}=F,{headerWrapper:me,footerWrapper:Se}=n.refs;me&&(me.scrollLeft=z),Se&&(Se.scrollLeft=z);const $e=J-te-1;z>=$e?S("is-scrolling-right"):S(z===0?"is-scrolling-left":"is-scrolling-middle")},A=()=>{n.refs.scrollBarRef&&(n.refs.scrollBarRef.wrapRef&&xn(n.refs.scrollBarRef.wrapRef,"scroll",M,{passive:!0}),e.fit?ps(n.vnode.el,P):xn(window,"resize",P),ps(n.refs.bodyWrapper,()=>{var F,z;P(),(z=(F=n.refs)==null?void 0:F.scrollBarRef)==null||z.update()}))},P=()=>{var F,z,te,J;const me=n.vnode.el;if(!n.$ready||!me)return;let Se=!1;const{width:$e,height:Ie,headerHeight:B}=l.value,Y=c.value=me.offsetWidth;$e!==Y&&(Se=!0);const K=me.offsetHeight;(e.height||_.value)&&Ie!==K&&(Se=!0);const Q=e.tableLayout==="fixed"?n.refs.headerWrapper:(F=n.refs.tableHeaderRef)==null?void 0:F.$el;e.showHeader&&(Q==null?void 0:Q.offsetHeight)!==B&&(Se=!0),h.value=((z=n.refs.tableWrapper)==null?void 0:z.scrollHeight)||0,v.value=(Q==null?void 0:Q.scrollHeight)||0,p.value=((te=n.refs.footerWrapper)==null?void 0:te.offsetHeight)||0,m.value=((J=n.refs.appendWrapper)==null?void 0:J.offsetHeight)||0,d.value=h.value-v.value-p.value-m.value,Se&&(l.value={width:Y,height:K,headerHeight:e.showHeader&&(Q==null?void 0:Q.offsetHeight)||0},x())},E=xi(),L=k(()=>{const{bodyWidth:F,scrollY:z,gutterWidth:te}=t;return F.value?`${F.value-(z.value?te:0)}px`:""}),O=k(()=>e.maxHeight?"fixed":e.tableLayout),N=k(()=>{if(e.data&&e.data.length)return null;let F="100%";e.height&&d.value&&(F=`${d.value}px`);const z=c.value;return{width:z?`${z}px`:"",height:F}}),H=k(()=>e.height?{height:Number.isNaN(Number(e.height))?e.height:`${e.height}px`}:e.maxHeight?{maxHeight:Number.isNaN(Number(e.maxHeight))?e.maxHeight:`${e.maxHeight}px`}:{}),V=k(()=>e.height?{height:"100%"}:e.maxHeight?Number.isNaN(Number(e.maxHeight))?{maxHeight:`calc(${e.maxHeight} - ${v.value+p.value}px)`}:{maxHeight:`${e.maxHeight-v.value-p.value}px`}:{});return{isHidden:i,renderExpanded:a,setDragVisible:s,isGroup:u,handleMouseLeave:g,handleHeaderFooterMousewheel:y,tableSize:E,emptyBlockStyle:N,handleFixedMousewheel:(F,z)=>{const te=n.refs.bodyWrapper;if(Math.abs(z.spinY)>0){const J=te.scrollTop;z.pixelY<0&&J!==0&&F.preventDefault(),z.pixelY>0&&te.scrollHeight-te.clientHeight>J&&F.preventDefault(),te.scrollTop+=Math.ceil(z.pixelY/5)}else te.scrollLeft+=Math.ceil(z.pixelX/5)},resizeProxyVisible:o,bodyWidth:L,resizeState:l,doLayout:x,tableBodyStyles:b,tableLayout:O,scrollbarViewStyle:f,tableInnerStyle:H,scrollbarStyle:V}}function XV(e){const t=$(),r=()=>{const i=e.vnode.el.querySelector(".hidden-columns"),a={childList:!0,subtree:!0},o=e.store.states.updateOrderFns;t.value=new MutationObserver(()=>{o.forEach(s=>s())}),t.value.observe(i,a)};_t(()=>{r()}),Os(()=>{var n;(n=t.value)==null||n.disconnect()})}var ZV={data:{type:Array,default:()=>[]},size:dh,width:[String,Number],height:[String,Number],maxHeight:[String,Number],fit:{type:Boolean,default:!0},stripe:Boolean,border:Boolean,rowKey:[String,Function],showHeader:{type:Boolean,default:!0},showSummary:Boolean,sumText:String,summaryMethod:Function,rowClassName:[String,Function],rowStyle:[Object,Function],cellClassName:[String,Function],cellStyle:[Object,Function],headerRowClassName:[String,Function],headerRowStyle:[Object,Function],headerCellClassName:[String,Function],headerCellStyle:[Object,Function],highlightCurrentRow:Boolean,currentRowKey:[String,Number],emptyText:String,expandRowKeys:Array,defaultExpandAll:Boolean,defaultSort:Object,tooltipEffect:String,tooltipOptions:Object,spanMethod:Function,selectOnIndeterminate:{type:Boolean,default:!0},indent:{type:Number,default:16},treeProps:{type:Object,default:()=>({hasChildren:"hasChildren",children:"children"})},lazy:Boolean,load:Function,style:{type:Object,default:()=>({})},className:{type:String,default:""},tableLayout:{type:String,default:"fixed"},scrollbarAlwaysOn:{type:Boolean,default:!1},flexible:Boolean,showOverflowTooltip:[Boolean,Object]};function t2(e){const t=e.tableLayout==="auto";let r=e.columns||[];t&&r.every(i=>i.width===void 0)&&(r=[]);const n=i=>{const a={key:`${e.tableLayout}_${i.id}`,style:{},name:void 0};return t?a.style={width:`${i.width}px`}:a.name=i.id,a};return Te("colgroup",{},r.map(i=>Te("col",n(i))))}t2.props=["columns","tableLayout"];const QV=()=>{const e=$(),t=(a,o)=>{const s=e.value;s&&s.scrollTo(a,o)},r=(a,o)=>{const s=e.value;s&&Rt(o)&&["Top","Left"].includes(a)&&s[`setScroll${a}`](o)};return{scrollBarRef:e,scrollTo:t,setScrollTop:a=>r("Top",a),setScrollLeft:a=>r("Left",a)}};let JV=1;const eW=ie({name:"ElTable",directives:{Mousewheel:d8},components:{TableHeader:$V,TableBody:GV,TableFooter:jV,ElScrollbar:uA,hColgroup:t2},props:ZV,emits:["select","select-all","selection-change","cell-mouse-enter","cell-mouse-leave","cell-contextmenu","cell-click","cell-dblclick","row-click","row-contextmenu","row-dblclick","header-click","header-contextmenu","sort-change","filter-change","current-change","header-dragend","expand-change"],setup(e){const{t}=Fs(),r=Oe("table"),n=it();Dt(ri,n);const i=TV(n,e);n.store=i;const a=new AV({store:n.store,table:n,fit:e.fit,showHeader:e.showHeader});n.layout=a;const o=k(()=>(i.states.data.value||[]).length===0),{setCurrentRow:s,getSelectionRows:l,toggleRowSelection:u,clearSelection:f,clearFilter:c,toggleAllSelection:h,toggleRowExpansion:d,clearSort:v,sort:p}=qV(i),{isHidden:m,renderExpanded:g,setDragVisible:y,isGroup:_,handleMouseLeave:b,handleHeaderFooterMousewheel:x,tableSize:w,emptyBlockStyle:S,handleFixedMousewheel:C,resizeProxyVisible:M,bodyWidth:A,resizeState:P,doLayout:E,tableBodyStyles:L,tableLayout:O,scrollbarViewStyle:N,tableInnerStyle:H,scrollbarStyle:V}=KV(e,a,i,n),{scrollBarRef:U,scrollTo:F,setScrollLeft:z,setScrollTop:te}=QV(),J=hd(E,50),me=`${r.namespace.value}-table_${JV++}`;n.tableId=me,n.state={isGroup:_,resizeState:P,doLayout:E,debouncedUpdateLayout:J};const Se=k(()=>e.sumText||t("el.table.sumText")),$e=k(()=>e.emptyText||t("el.table.emptyText"));return XV(n),{ns:r,layout:a,store:i,handleHeaderFooterMousewheel:x,handleMouseLeave:b,tableId:me,tableSize:w,isHidden:m,isEmpty:o,renderExpanded:g,resizeProxyVisible:M,resizeState:P,isGroup:_,bodyWidth:A,tableBodyStyles:L,emptyBlockStyle:S,debouncedUpdateLayout:J,handleFixedMousewheel:C,setCurrentRow:s,getSelectionRows:l,toggleRowSelection:u,clearSelection:f,clearFilter:c,toggleAllSelection:h,toggleRowExpansion:d,clearSort:v,doLayout:E,sort:p,t,setDragVisible:y,context:n,computedSumText:Se,computedEmptyText:$e,tableLayout:O,scrollbarViewStyle:N,tableInnerStyle:H,scrollbarStyle:V,scrollBarRef:U,scrollTo:F,setScrollLeft:z,setScrollTop:te}}}),tW=["data-prefix"],rW={ref:"hiddenColumns",class:"hidden-columns"};function nW(e,t,r,n,i,a){const o=xr("hColgroup"),s=xr("table-header"),l=xr("table-body"),u=xr("table-footer"),f=xr("el-scrollbar"),c=fT("mousewheel");return G(),ce("div",{ref:"tableWrapper",class:re([{[e.ns.m("fit")]:e.fit,[e.ns.m("striped")]:e.stripe,[e.ns.m("border")]:e.border||e.isGroup,[e.ns.m("hidden")]:e.isHidden,[e.ns.m("group")]:e.isGroup,[e.ns.m("fluid-height")]:e.maxHeight,[e.ns.m("scrollable-x")]:e.layout.scrollX.value,[e.ns.m("scrollable-y")]:e.layout.scrollY.value,[e.ns.m("enable-row-hover")]:!e.store.states.isComplex.value,[e.ns.m("enable-row-transition")]:(e.store.states.data.value||[]).length!==0&&(e.store.states.data.value||[]).length<100,"has-footer":e.showSummary},e.ns.m(e.tableSize),e.className,e.ns.b(),e.ns.m(`layout-${e.tableLayout}`)]),style:ct(e.style),"data-prefix":e.ns.namespace.value,onMouseleave:t[0]||(t[0]=(...h)=>e.handleMouseLeave&&e.handleMouseLeave(...h))},[ee("div",{class:re(e.ns.e("inner-wrapper")),style:ct(e.tableInnerStyle)},[ee("div",rW,[Ce(e.$slots,"default")],512),e.showHeader&&e.tableLayout==="fixed"?qt((G(),ce("div",{key:0,ref:"headerWrapper",class:re(e.ns.e("header-wrapper"))},[ee("table",{ref:"tableHeader",class:re(e.ns.e("header")),style:ct(e.tableBodyStyles),border:"0",cellpadding:"0",cellspacing:"0"},[Z(o,{columns:e.store.states.columns.value,"table-layout":e.tableLayout},null,8,["columns","table-layout"]),Z(s,{ref:"tableHeaderRef",border:e.border,"default-sort":e.defaultSort,store:e.store,onSetDragVisible:e.setDragVisible},null,8,["border","default-sort","store","onSetDragVisible"])],6)],2)),[[c,e.handleHeaderFooterMousewheel]]):Ae("v-if",!0),ee("div",{ref:"bodyWrapper",class:re(e.ns.e("body-wrapper"))},[Z(f,{ref:"scrollBarRef","view-style":e.scrollbarViewStyle,"wrap-style":e.scrollbarStyle,always:e.scrollbarAlwaysOn},{default:j(()=>[ee("table",{ref:"tableBody",class:re(e.ns.e("body")),cellspacing:"0",cellpadding:"0",border:"0",style:ct({width:e.bodyWidth,tableLayout:e.tableLayout})},[Z(o,{columns:e.store.states.columns.value,"table-layout":e.tableLayout},null,8,["columns","table-layout"]),e.showHeader&&e.tableLayout==="auto"?(G(),de(s,{key:0,ref:"tableHeaderRef",class:re(e.ns.e("body-header")),border:e.border,"default-sort":e.defaultSort,store:e.store,onSetDragVisible:e.setDragVisible},null,8,["class","border","default-sort","store","onSetDragVisible"])):Ae("v-if",!0),Z(l,{context:e.context,highlight:e.highlightCurrentRow,"row-class-name":e.rowClassName,"tooltip-effect":e.tooltipEffect,"tooltip-options":e.tooltipOptions,"row-style":e.rowStyle,store:e.store,stripe:e.stripe},null,8,["context","highlight","row-class-name","tooltip-effect","tooltip-options","row-style","store","stripe"]),e.showSummary&&e.tableLayout==="auto"?(G(),de(u,{key:1,class:re(e.ns.e("body-footer")),border:e.border,"default-sort":e.defaultSort,store:e.store,"sum-text":e.computedSumText,"summary-method":e.summaryMethod},null,8,["class","border","default-sort","store","sum-text","summary-method"])):Ae("v-if",!0)],6),e.isEmpty?(G(),ce("div",{key:0,ref:"emptyBlock",style:ct(e.emptyBlockStyle),class:re(e.ns.e("empty-block"))},[ee("span",{class:re(e.ns.e("empty-text"))},[Ce(e.$slots,"empty",{},()=>[mt(be(e.computedEmptyText),1)])],2)],6)):Ae("v-if",!0),e.$slots.append?(G(),ce("div",{key:1,ref:"appendWrapper",class:re(e.ns.e("append-wrapper"))},[Ce(e.$slots,"append")],2)):Ae("v-if",!0)]),_:3},8,["view-style","wrap-style","always"])],2),e.showSummary&&e.tableLayout==="fixed"?qt((G(),ce("div",{key:1,ref:"footerWrapper",class:re(e.ns.e("footer-wrapper"))},[ee("table",{class:re(e.ns.e("footer")),cellspacing:"0",cellpadding:"0",border:"0",style:ct(e.tableBodyStyles)},[Z(o,{columns:e.store.states.columns.value,"table-layout":e.tableLayout},null,8,["columns","table-layout"]),Z(u,{border:e.border,"default-sort":e.defaultSort,store:e.store,"sum-text":e.computedSumText,"summary-method":e.summaryMethod},null,8,["border","default-sort","store","sum-text","summary-method"])],6)],2)),[[Kn,!e.isEmpty],[c,e.handleHeaderFooterMousewheel]]):Ae("v-if",!0),e.border||e.isGroup?(G(),ce("div",{key:2,class:re(e.ns.e("border-left-patch"))},null,2)):Ae("v-if",!0)],6),qt(ee("div",{ref:"resizeProxy",class:re(e.ns.e("column-resize-proxy"))},null,2),[[Kn,e.resizeProxyVisible]])],46,tW)}var iW=Ke(eW,[["render",nW],["__file","table.vue"]]);const aW={selection:"table-column--selection",expand:"table__expand-column"},oW={default:{order:""},selection:{width:48,minWidth:48,realWidth:48,order:""},expand:{width:48,minWidth:48,realWidth:48,order:""},index:{width:48,minWidth:48,realWidth:48,order:""}},sW=e=>aW[e]||"",lW={selection:{renderHeader({store:e,column:t}){function r(){return e.states.data.value&&e.states.data.value.length===0}return Te(Cs,{disabled:r(),size:e.states.tableSize.value,indeterminate:e.states.selection.value.length>0&&!e.states.isAllSelected.value,"onUpdate:modelValue":e.toggleAllSelection,modelValue:e.states.isAllSelected.value,ariaLabel:t.label})},renderCell({row:e,column:t,store:r,$index:n}){return Te(Cs,{disabled:t.selectable?!t.selectable.call(null,e,n):!1,size:r.states.tableSize.value,onChange:()=>{r.commit("rowSelectedChanged",e)},onClick:i=>i.stopPropagation(),modelValue:r.isSelected(e),ariaLabel:t.label})},sortable:!1,resizable:!1},index:{renderHeader({column:e}){return e.label||"#"},renderCell({column:e,$index:t}){let r=t+1;const n=e.index;return typeof n=="number"?r=t+n:typeof n=="function"&&(r=n(t)),Te("div",{},[r])},sortable:!1},expand:{renderHeader({column:e}){return e.label||""},renderCell({row:e,store:t,expanded:r}){const{ns:n}=t,i=[n.e("expand-icon")];return r&&i.push(n.em("expand-icon","expanded")),Te("div",{class:i,onClick:function(o){o.stopPropagation(),t.toggleRowExpansion(e)}},{default:()=>[Te(Nt,null,{default:()=>[Te(Ey)]})]})},sortable:!1,resizable:!1}};function uW({row:e,column:t,$index:r}){var n;const i=t.property,a=i&&Ec(e,i).value;return t&&t.formatter?t.formatter(e,t,a,r):((n=a==null?void 0:a.toString)==null?void 0:n.call(a))||""}function fW({row:e,treeNode:t,store:r},n=!1){const{ns:i}=r;if(!t)return n?[Te("span",{class:i.e("placeholder")})]:null;const a=[],o=function(s){s.stopPropagation(),!t.loading&&r.loadOrToggle(e)};if(t.indent&&a.push(Te("span",{class:i.e("indent"),style:{"padding-left":`${t.indent}px`}})),typeof t.expanded=="boolean"&&!t.noLazyChildren){const s=[i.e("expand-icon"),t.expanded?i.em("expand-icon","expanded"):""];let l=Ey;t.loading&&(l=Ly),a.push(Te("div",{class:s,onClick:o},{default:()=>[Te(Nt,{class:{[i.is("loading")]:t.loading}},{default:()=>[Te(l)]})]}))}else a.push(Te("span",{class:i.e("placeholder")}));return a}function O1(e,t){return e.reduce((r,n)=>(r[n]=n,r),t)}function cW(e,t){const r=it();return{registerComplexWatchers:()=>{const a=["fixed"],o={realWidth:"width",realMinWidth:"minWidth"},s=O1(a,o);Object.keys(s).forEach(l=>{const u=o[l];Ue(t,u)&&we(()=>t[u],f=>{let c=f;u==="width"&&l==="realWidth"&&(c=qy(f)),u==="minWidth"&&l==="realMinWidth"&&(c=qA(f)),r.columnConfig.value[u]=c,r.columnConfig.value[l]=c;const h=u==="fixed";e.value.store.scheduleLayout(h)})})},registerNormalWatchers:()=>{const a=["label","filters","filterMultiple","filteredValue","sortable","index","formatter","className","labelClassName","filterClassName","showOverflowTooltip"],o={property:"prop",align:"realAlign",headerAlign:"realHeaderAlign"},s=O1(a,o);Object.keys(s).forEach(l=>{const u=o[l];Ue(t,u)&&we(()=>t[u],f=>{r.columnConfig.value[l]=f})})}}}function dW(e,t,r){const n=it(),i=$(""),a=$(!1),o=$(),s=$(),l=Oe("table");na(()=>{o.value=e.align?`is-${e.align}`:null,o.value}),na(()=>{s.value=e.headerAlign?`is-${e.headerAlign}`:o.value,s.value});const u=k(()=>{let b=n.vnode.vParent||n.parent;for(;b&&!b.tableId&&!b.columnId;)b=b.vnode.vParent||b.parent;return b}),f=k(()=>{const{store:b}=n.parent;if(!b)return!1;const{treeData:x}=b.states,w=x.value;return w&&Object.keys(w).length>0}),c=$(qy(e.width)),h=$(qA(e.minWidth)),d=b=>(c.value&&(b.width=c.value),h.value&&(b.minWidth=h.value),!c.value&&h.value&&(b.width=void 0),b.minWidth||(b.minWidth=80),b.realWidth=Number(b.width===void 0?b.minWidth:b.width),b),v=b=>{const x=b.type,w=lW[x]||{};Object.keys(w).forEach(C=>{const M=w[C];C!=="className"&&M!==void 0&&(b[C]=M)});const S=sW(x);if(S){const C=`${T(l.namespace)}-${S}`;b.className=b.className?`${b.className} ${C}`:C}return b},p=b=>{Array.isArray(b)?b.forEach(w=>x(w)):x(b);function x(w){var S;((S=w==null?void 0:w.type)==null?void 0:S.name)==="ElTableColumn"&&(w.vParent=n)}};return{columnId:i,realAlign:o,isSubColumn:a,realHeaderAlign:s,columnOrTableParent:u,setColumnWidth:d,setColumnForcedProps:v,setColumnRenders:b=>{e.renderHeader||b.type!=="selection"&&(b.renderHeader=w=>(n.columnConfig.value.label,Ce(t,"header",w,()=>[b.label])));let x=b.renderCell;return b.type==="expand"?(b.renderCell=w=>Te("div",{class:"cell"},[x(w)]),r.value.renderExpanded=w=>t.default?t.default(w):t.default):(x=x||uW,b.renderCell=w=>{let S=null;if(t.default){const L=t.default(w);S=L.some(O=>O.type!==Mr)?L:x(w)}else S=x(w);const{columns:C}=r.value.store.states,M=C.value.findIndex(L=>L.type==="default"),A=f.value&&w.cellIndex===M,P=fW(w,A),E={class:"cell",style:{}};return b.showOverflowTooltip&&(E.class=`${E.class} ${T(l.namespace)}-tooltip`,E.style={width:`${(w.column.realWidth||Number(w.column.width))-1}px`}),p(S),Te("div",E,[P,S])}),b},getPropsData:(...b)=>b.reduce((x,w)=>(Array.isArray(w)&&w.forEach(S=>{x[S]=e[S]}),x),{}),getColumnElIndex:(b,x)=>Array.prototype.indexOf.call(b,x),updateColumnOrder:()=>{r.value.store.commit("updateColumnOrder",n.columnConfig.value)}}}var hW={type:{type:String,default:"default"},label:String,className:String,labelClassName:String,property:String,prop:String,width:{type:[String,Number],default:""},minWidth:{type:[String,Number],default:""},renderHeader:Function,sortable:{type:[Boolean,String],default:!1},sortMethod:Function,sortBy:[String,Function,Array],resizable:{type:Boolean,default:!0},columnKey:String,align:String,headerAlign:String,showOverflowTooltip:{type:[Boolean,Object],default:void 0},fixed:[Boolean,String],formatter:Function,selectable:Function,reserveSelection:Boolean,filterMethod:Function,filteredValue:Array,filters:Array,filterPlacement:String,filterMultiple:{type:Boolean,default:!0},filterClassName:String,index:[Number,Function],sortOrders:{type:Array,default:()=>["ascending","descending",null],validator:e=>e.every(t=>["ascending","descending",null].includes(t))}};let vW=1;var r2=ie({name:"ElTableColumn",components:{ElCheckbox:Cs},props:hW,setup(e,{slots:t}){const r=it(),n=$({}),i=k(()=>{let _=r.parent;for(;_&&!_.tableId;)_=_.parent;return _}),{registerNormalWatchers:a,registerComplexWatchers:o}=cW(i,e),{columnId:s,isSubColumn:l,realHeaderAlign:u,columnOrTableParent:f,setColumnWidth:c,setColumnForcedProps:h,setColumnRenders:d,getPropsData:v,getColumnElIndex:p,realAlign:m,updateColumnOrder:g}=dW(e,t,i),y=f.value;s.value=`${y.tableId||y.columnId}_column_${vW++}`,eh(()=>{l.value=i.value!==y;const _=e.type||"default",b=e.sortable===""?!0:e.sortable,x=ys(e.showOverflowTooltip)?y.props.showOverflowTooltip:e.showOverflowTooltip,w={...oW[_],id:s.value,type:_,property:e.prop||e.property,align:m,headerAlign:u,showOverflowTooltip:x,filterable:e.filters||e.filterMethod,filteredValue:[],filterPlacement:"",filterClassName:"",isColumnGroup:!1,isSubColumn:!1,filterOpened:!1,sortable:b,index:e.index,rawColumnKey:r.vnode.key};let P=v(["columnKey","label","className","labelClassName","type","renderHeader","formatter","fixed","resizable"],["sortMethod","sortBy","sortOrders"],["selectable","reserveSelection"],["filterMethod","filters","filterMultiple","filterOpened","filteredValue","filterPlacement","filterClassName"]);P=vV(w,P),P=gV(d,c,h)(P),n.value=P,a(),o()}),_t(()=>{var _;const b=f.value,x=l.value?b.vnode.el.children:(_=b.refs.hiddenColumns)==null?void 0:_.children,w=()=>p(x||[],r.vnode.el);n.value.getColumnIndex=w,w()>-1&&i.value.store.commit("insertColumn",n.value,l.value?b.columnConfig.value:null,g)}),tr(()=>{i.value.store.commit("removeColumn",n.value,l.value?y.columnConfig.value:null,g)}),r.columnId=s.value,r.columnConfig=n},render(){var e,t,r;try{const n=(t=(e=this.$slots).default)==null?void 0:t.call(e,{row:{},column:{},$index:-1}),i=[];if(Array.isArray(n))for(const o of n)((r=o.type)==null?void 0:r.name)==="ElTableColumn"||o.shapeFlag&2?i.push(o):o.type===ft&&Array.isArray(o.children)&&o.children.forEach(s=>{(s==null?void 0:s.patchFlag)!==1024&&!ze(s==null?void 0:s.children)&&i.push(s)});return Te("div",i)}catch{return Te("div",[])}}});const pW=Yt(iW,{TableColumn:r2}),gW=pa(r2),mW=Je({type:{type:String,values:["primary","success","info","warning","danger",""],default:""},size:{type:String,values:Bs,default:""},truncated:{type:Boolean},lineClamp:{type:[String,Number]},tag:{type:String,default:"span"}}),yW=ie({name:"ElText"}),_W=ie({...yW,props:mW,setup(e){const t=e,r=xi(),n=Oe("text"),i=k(()=>[n.b(),n.m(t.type),n.m(r.value),n.is("truncated",t.truncated),n.is("line-clamp",!ys(t.lineClamp))]);return(a,o)=>(G(),de(Vt(a.tag),{class:re(T(i)),style:ct({"-webkit-line-clamp":a.lineClamp})},{default:j(()=>[Ce(a.$slots,"default")]),_:3},8,["class","style"]))}});var bW=Ke(_W,[["__file","text.vue"]]);const wW=Yt(bW),n2=["success","info","warning","error"],wr=ja({customClass:"",center:!1,dangerouslyUseHTMLString:!1,duration:3e3,icon:void 0,id:"",message:"",onClose:void 0,showClose:!1,type:"info",offset:16,zIndex:0,grouping:!1,repeatNum:1,appendTo:At?document.body:void 0}),SW=Je({customClass:{type:String,default:wr.customClass},center:{type:Boolean,default:wr.center},dangerouslyUseHTMLString:{type:Boolean,default:wr.dangerouslyUseHTMLString},duration:{type:Number,default:wr.duration},icon:{type:vr,default:wr.icon},id:{type:String,default:wr.id},message:{type:Be([String,Object,Function]),default:wr.message},onClose:{type:Be(Function),required:!1},showClose:{type:Boolean,default:wr.showClose},type:{type:String,values:n2,default:wr.type},offset:{type:Number,default:wr.offset},zIndex:{type:Number,default:wr.zIndex},grouping:{type:Boolean,default:wr.grouping},repeatNum:{type:Number,default:wr.repeatNum}}),xW={destroy:()=>!0},Cn=Qm([]),CW=e=>{const t=Cn.findIndex(i=>i.id===e),r=Cn[t];let n;return t>0&&(n=Cn[t-1]),{current:r,prev:n}},TW=e=>{const{prev:t}=CW(e);return t?t.vm.exposed.bottom.value:0},MW=(e,t)=>Cn.findIndex(n=>n.id===e)>0?20:t,AW=["id"],PW=["innerHTML"],EW=ie({name:"ElMessage"}),LW=ie({...EW,props:SW,emits:xW,setup(e,{expose:t}){const r=e,{Close:n}=G3,{ns:i,zIndex:a}=m4("message"),{currentZIndex:o,nextZIndex:s}=a,l=$(),u=$(!1),f=$(0);let c;const h=k(()=>r.type?r.type==="error"?"danger":r.type:"info"),d=k(()=>{const S=r.type;return{[i.bm("icon",S)]:S&&Wb[S]}}),v=k(()=>r.icon||Wb[r.type]||""),p=k(()=>TW(r.id)),m=k(()=>MW(r.id,r.offset)+p.value),g=k(()=>f.value+m.value),y=k(()=>({top:`${m.value}px`,zIndex:o.value}));function _(){r.duration!==0&&({stop:c}=hu(()=>{x()},r.duration))}function b(){c==null||c()}function x(){u.value=!1}function w({code:S}){S===hr.esc&&x()}return _t(()=>{_(),s(),u.value=!0}),we(()=>r.repeatNum,()=>{b(),_()}),xn(document,"keydown",w),ps(l,()=>{f.value=l.value.getBoundingClientRect().height}),t({visible:u,bottom:g,close:x}),(S,C)=>(G(),de(ti,{name:T(i).b("fade"),onBeforeLeave:S.onClose,onAfterLeave:C[0]||(C[0]=M=>S.$emit("destroy")),persisted:""},{default:j(()=>[qt(ee("div",{id:S.id,ref_key:"messageRef",ref:l,class:re([T(i).b(),{[T(i).m(S.type)]:S.type},T(i).is("center",S.center),T(i).is("closable",S.showClose),S.customClass]),style:ct(T(y)),role:"alert",onMouseenter:b,onMouseleave:_},[S.repeatNum>1?(G(),de(T(Nz),{key:0,value:S.repeatNum,type:T(h),class:re(T(i).e("badge"))},null,8,["value","type","class"])):Ae("v-if",!0),T(v)?(G(),de(T(Nt),{key:1,class:re([T(i).e("icon"),T(d)])},{default:j(()=>[(G(),de(Vt(T(v))))]),_:1},8,["class"])):Ae("v-if",!0),Ce(S.$slots,"default",{},()=>[S.dangerouslyUseHTMLString?(G(),ce(ft,{key:1},[Ae(" Caution here, message could've been compromised, never use user's input as message "),ee("p",{class:re(T(i).e("content")),innerHTML:S.message},null,10,PW)],2112)):(G(),ce("p",{key:0,class:re(T(i).e("content"))},be(S.message),3))]),S.showClose?(G(),de(T(Nt),{key:2,class:re(T(i).e("closeBtn")),onClick:ua(x,["stop"])},{default:j(()=>[Z(T(n))]),_:1},8,["class","onClick"])):Ae("v-if",!0)],46,AW),[[Kn,u.value]])]),_:3},8,["name","onBeforeLeave"]))}});var DW=Ke(LW,[["__file","message.vue"]]);let IW=1;const i2=e=>{const t=!e||ze(e)||la(e)||De(e)?{message:e}:e,r={...wr,...t};if(!r.appendTo)r.appendTo=document.body;else if(ze(r.appendTo)){let n=document.querySelector(r.appendTo);mo(n)||(n=document.body),r.appendTo=n}return r},OW=e=>{const t=Cn.indexOf(e);if(t===-1)return;Cn.splice(t,1);const{handler:r}=e;r.close()},RW=({appendTo:e,...t},r)=>{const n=`message_${IW++}`,i=t.onClose,a=document.createElement("div"),o={...t,id:n,onClose:()=>{i==null||i(),OW(f)},onDestroy:()=>{ld(null,a)}},s=Z(DW,o,De(o.message)||la(o.message)?{default:De(o.message)?o.message:()=>o.message}:null);s.appContext=r||Ms._context,ld(s,a),e.appendChild(a.firstElementChild);const l=s.component,f={id:n,vnode:s,vm:l,handler:{close:()=>{l.exposed.visible.value=!1}},props:s.component.props};return f},Ms=(e={},t)=>{if(!At)return{close:()=>{}};if(Rt(i1.max)&&Cn.length>=i1.max)return{close:()=>{}};const r=i2(e);if(r.grouping&&Cn.length){const i=Cn.find(({vnode:a})=>{var o;return((o=a.props)==null?void 0:o.message)===r.message});if(i)return i.props.repeatNum+=1,i.props.type=r.type,i.handler}const n=RW(r,t);return Cn.push(n),n.handler};n2.forEach(e=>{Ms[e]=(t={},r)=>{const n=i2(t);return Ms({...n,type:e},r)}});function kW(e){for(const t of Cn)(!e||e===t.props.type)&&t.handler.close()}Ms.closeAll=kW;Ms._context=null;const Wl=U3(Ms,"$message"),NW={id:"app"},BW={class:"grid-content header-color"},FW={class:"header-content"},$W=ee("div",{class:"brand"},[ee("a",{href:"#"},"frp")],-1),HW={class:"dark-switch"},zW=ee("span",null,"Proxies",-1),VW={id:"content"},WW=ee("footer",null,null,-1),GW=ie({__name:"App",setup(e){const t=XR(),r=$(t),n=mR(t),i=a=>{a==""&&window.open("https://github.com/fatedier/frp")};return(a,o)=>{const s=cV,l=H6,u=z6,f=$6,c=$A,h=xr("router-view"),d=FA;return G(),ce("div",NW,[ee("header",BW,[ee("div",FW,[$W,ee("div",HW,[Z(s,{modelValue:r.value,"onUpdate:modelValue":o[0]||(o[0]=v=>r.value=v),"inline-prompt":"","active-text":"Dark","inactive-text":"Light",onChange:T(n),style:{"--el-switch-on-color":"#444452","--el-switch-off-color":"#589ef8"}},null,8,["modelValue","onChange"])])])]),ee("section",null,[Z(d,null,{default:j(()=>[Z(c,{id:"side-nav",xs:24,md:4},{default:j(()=>[Z(f,{"default-active":"/",mode:"vertical",theme:"light",router:"false",onSelect:i},{default:j(()=>[Z(l,{index:"/"},{default:j(()=>[mt("Overview")]),_:1}),Z(u,{index:"/proxies"},{title:j(()=>[zW]),default:j(()=>[Z(l,{index:"/proxies/tcp"},{default:j(()=>[mt("TCP")]),_:1}),Z(l,{index:"/proxies/udp"},{default:j(()=>[mt("UDP")]),_:1}),Z(l,{index:"/proxies/http"},{default:j(()=>[mt("HTTP")]),_:1}),Z(l,{index:"/proxies/https"},{default:j(()=>[mt("HTTPS")]),_:1}),Z(l,{index:"/proxies/stcp"},{default:j(()=>[mt("STCP")]),_:1}),Z(l,{index:"/proxies/sudp"},{default:j(()=>[mt("SUDP")]),_:1})]),_:1}),Z(l,{index:""},{default:j(()=>[mt("Help")]),_:1})]),_:1})]),_:1}),Z(c,{xs:24,md:20},{default:j(()=>[ee("div",VW,[Z(h)])]),_:1})]),_:1})]),WW])}}});/*! +*/const c8=function(e,t){if(e&&e.addEventListener){const r=function(n){const i=f8(n);t&&Reflect.apply(t,this,[n,i])};e.addEventListener("wheel",r,{passive:!0})}},d8={beforeMount(e,t){c8(e,t.value)}},IA={modelValue:{type:[Number,String,Boolean],default:void 0},label:{type:[String,Boolean,Number,Object],default:void 0},indeterminate:Boolean,disabled:Boolean,checked:Boolean,name:{type:String,default:void 0},trueLabel:{type:[String,Number],default:void 0},falseLabel:{type:[String,Number],default:void 0},id:{type:String,default:void 0},controls:{type:String,default:void 0},border:Boolean,size:dh,tabindex:[String,Number],validateEvent:{type:Boolean,default:!0}},OA={[wi]:e=>ze(e)||kt(e)||zr(e),change:e=>ze(e)||kt(e)||zr(e)},Ws=Symbol("checkboxGroupContextKey"),h8=({model:e,isChecked:t})=>{const r=Le(Ws,void 0),n=k(()=>{var a,o;const s=(a=r==null?void 0:r.max)==null?void 0:a.value,l=(o=r==null?void 0:r.min)==null?void 0:o.value;return!bs(s)&&e.value.length>=s&&!t.value||!bs(l)&&e.value.length<=l&&t.value});return{isDisabled:vh(k(()=>(r==null?void 0:r.disabled.value)||n.value)),isLimitDisabled:n}},v8=(e,{model:t,isLimitExceeded:r,hasOwnLabel:n,isDisabled:i,isLabeledByFormItem:a})=>{const o=Le(Ws,void 0),{formItem:s}=tf(),{emit:l}=it();function u(v){var p,m;return v===e.trueLabel||v===!0?(p=e.trueLabel)!=null?p:!0:(m=e.falseLabel)!=null?m:!1}function f(v,p){l("change",u(v),p)}function c(v){if(r.value)return;const p=v.target;l("change",u(p.checked),v)}async function h(v){r.value||!n.value&&!i.value&&a.value&&(v.composedPath().some(g=>g.tagName==="LABEL")||(t.value=u([!1,e.falseLabel].includes(t.value)),await Nt(),f(t.value,v)))}const d=k(()=>(o==null?void 0:o.validateEvent)||e.validateEvent);return be(()=>e.modelValue,()=>{d.value&&(s==null||s.validate("change").catch(v=>void 0))}),{handleChange:c,onClickRoot:h}},p8=e=>{const t=$(!1),{emit:r}=it(),n=Le(Ws,void 0),i=k(()=>bs(n)===!1),a=$(!1),o=k({get(){var s,l;return i.value?(s=n==null?void 0:n.modelValue)==null?void 0:s.value:(l=e.modelValue)!=null?l:t.value},set(s){var l,u;i.value&&_e(s)?(a.value=((l=n==null?void 0:n.max)==null?void 0:l.value)!==void 0&&s.length>(n==null?void 0:n.max.value)&&s.length>o.value.length,a.value===!1&&((u=n==null?void 0:n.changeEvent)==null||u.call(n,s))):(r(wi,s),t.value=s)}});return{model:o,isGroup:i,isLimitExceeded:a}},g8=(e,t,{model:r})=>{const n=Le(Ws,void 0),i=$(!1),a=k(()=>{const u=r.value;return zr(u)?u:_e(u)?qe(e.label)?u.map(Qe).some(f=>p3(f,e.label)):u.map(Qe).includes(e.label):u!=null?u===e.trueLabel:!!u}),o=xi(k(()=>{var u;return(u=n==null?void 0:n.size)==null?void 0:u.value}),{prop:!0}),s=xi(k(()=>{var u;return(u=n==null?void 0:n.size)==null?void 0:u.value})),l=k(()=>!!t.default||!_s(e.label));return{checkboxButtonSize:o,isChecked:a,isFocused:i,checkboxSize:s,hasOwnLabel:l}},m8=(e,{model:t})=>{function r(){_e(t.value)&&!t.value.includes(e.label)?t.value.push(e.label):t.value=e.trueLabel||!0}e.checked&&r()},RA=(e,t)=>{const{formItem:r}=tf(),{model:n,isGroup:i,isLimitExceeded:a}=p8(e),{isFocused:o,isChecked:s,checkboxButtonSize:l,checkboxSize:u,hasOwnLabel:f}=g8(e,t,{model:n}),{isDisabled:c}=h8({model:n,isChecked:s}),{inputId:h,isLabeledByFormItem:d}=Vy(e,{formItemContext:r,disableIdGeneration:f,disableIdManagement:i}),{handleChange:v,onClickRoot:p}=v8(e,{model:n,isLimitExceeded:a,hasOwnLabel:f,isDisabled:c,isLabeledByFormItem:d});return m8(e,{model:n}),{inputId:h,isLabeledByFormItem:d,isChecked:s,isDisabled:c,isFocused:o,checkboxButtonSize:l,checkboxSize:u,hasOwnLabel:f,model:n,handleChange:v,onClickRoot:p}},y8=["id","indeterminate","name","tabindex","disabled","true-value","false-value"],_8=["id","indeterminate","disabled","value","name","tabindex"],b8=ie({name:"ElCheckbox"}),w8=ie({...b8,props:IA,emits:OA,setup(e){const t=e,r=Ns(),{inputId:n,isLabeledByFormItem:i,isChecked:a,isDisabled:o,isFocused:s,checkboxSize:l,hasOwnLabel:u,model:f,handleChange:c,onClickRoot:h}=RA(t,r),d=Oe("checkbox"),v=k(()=>[d.b(),d.m(l.value),d.is("disabled",o.value),d.is("bordered",t.border),d.is("checked",a.value)]),p=k(()=>[d.e("input"),d.is("disabled",o.value),d.is("checked",a.value),d.is("indeterminate",t.indeterminate),d.is("focus",s.value)]);return(m,g)=>(G(),ve(Vt(!T(u)&&T(i)?"span":"label"),{class:re(T(v)),"aria-controls":m.indeterminate?m.controls:null,onClick:T(h)},{default:q(()=>[te("span",{class:re(T(p))},[m.trueLabel||m.falseLabel?qt((G(),ce("input",{key:0,id:T(n),"onUpdate:modelValue":g[0]||(g[0]=y=>Pt(f)?f.value=y:null),class:re(T(d).e("original")),type:"checkbox",indeterminate:m.indeterminate,name:m.name,tabindex:m.tabindex,disabled:T(o),"true-value":m.trueLabel,"false-value":m.falseLabel,onChange:g[1]||(g[1]=(...y)=>T(c)&&T(c)(...y)),onFocus:g[2]||(g[2]=y=>s.value=!0),onBlur:g[3]||(g[3]=y=>s.value=!1),onClick:g[4]||(g[4]=ua(()=>{},["stop"]))},null,42,y8)),[[sd,T(f)]]):qt((G(),ce("input",{key:1,id:T(n),"onUpdate:modelValue":g[5]||(g[5]=y=>Pt(f)?f.value=y:null),class:re(T(d).e("original")),type:"checkbox",indeterminate:m.indeterminate,disabled:T(o),value:m.label,name:m.name,tabindex:m.tabindex,onChange:g[6]||(g[6]=(...y)=>T(c)&&T(c)(...y)),onFocus:g[7]||(g[7]=y=>s.value=!0),onBlur:g[8]||(g[8]=y=>s.value=!1),onClick:g[9]||(g[9]=ua(()=>{},["stop"]))},null,42,_8)),[[sd,T(f)]]),te("span",{class:re(T(d).e("inner"))},null,2)],2),T(u)?(G(),ce("span",{key:0,class:re(T(d).e("label"))},[Ce(m.$slots,"default"),m.$slots.default?Ae("v-if",!0):(G(),ce(ft,{key:0},[pt(xe(m.label),1)],64))],2)):Ae("v-if",!0)]),_:3},8,["class","aria-controls","onClick"]))}});var S8=Ke(w8,[["__file","checkbox.vue"]]);const x8=["name","tabindex","disabled","true-value","false-value"],C8=["name","tabindex","disabled","value"],T8=ie({name:"ElCheckboxButton"}),M8=ie({...T8,props:IA,emits:OA,setup(e){const t=e,r=Ns(),{isFocused:n,isChecked:i,isDisabled:a,checkboxButtonSize:o,model:s,handleChange:l}=RA(t,r),u=Le(Ws,void 0),f=Oe("checkbox"),c=k(()=>{var d,v,p,m;const g=(v=(d=u==null?void 0:u.fill)==null?void 0:d.value)!=null?v:"";return{backgroundColor:g,borderColor:g,color:(m=(p=u==null?void 0:u.textColor)==null?void 0:p.value)!=null?m:"",boxShadow:g?`-1px 0 0 0 ${g}`:void 0}}),h=k(()=>[f.b("button"),f.bm("button",o.value),f.is("disabled",a.value),f.is("checked",i.value),f.is("focus",n.value)]);return(d,v)=>(G(),ce("label",{class:re(T(h))},[d.trueLabel||d.falseLabel?qt((G(),ce("input",{key:0,"onUpdate:modelValue":v[0]||(v[0]=p=>Pt(s)?s.value=p:null),class:re(T(f).be("button","original")),type:"checkbox",name:d.name,tabindex:d.tabindex,disabled:T(a),"true-value":d.trueLabel,"false-value":d.falseLabel,onChange:v[1]||(v[1]=(...p)=>T(l)&&T(l)(...p)),onFocus:v[2]||(v[2]=p=>n.value=!0),onBlur:v[3]||(v[3]=p=>n.value=!1),onClick:v[4]||(v[4]=ua(()=>{},["stop"]))},null,42,x8)),[[sd,T(s)]]):qt((G(),ce("input",{key:1,"onUpdate:modelValue":v[5]||(v[5]=p=>Pt(s)?s.value=p:null),class:re(T(f).be("button","original")),type:"checkbox",name:d.name,tabindex:d.tabindex,disabled:T(a),value:d.label,onChange:v[6]||(v[6]=(...p)=>T(l)&&T(l)(...p)),onFocus:v[7]||(v[7]=p=>n.value=!0),onBlur:v[8]||(v[8]=p=>n.value=!1),onClick:v[9]||(v[9]=ua(()=>{},["stop"]))},null,42,C8)),[[sd,T(s)]]),d.$slots.default||d.label?(G(),ce("span",{key:2,class:re(T(f).be("button","inner")),style:ct(T(i)?T(c):void 0)},[Ce(d.$slots,"default",{},()=>[pt(xe(d.label),1)])],6)):Ae("v-if",!0)],2))}});var kA=Ke(M8,[["__file","checkbox-button.vue"]]);const A8=Je({modelValue:{type:Be(Array),default:()=>[]},disabled:Boolean,min:Number,max:Number,size:dh,label:String,fill:String,textColor:String,tag:{type:String,default:"div"},validateEvent:{type:Boolean,default:!0}}),P8={[wi]:e=>_e(e),change:e=>_e(e)},E8=ie({name:"ElCheckboxGroup"}),L8=ie({...E8,props:A8,emits:P8,setup(e,{emit:t}){const r=e,n=Oe("checkbox"),{formItem:i}=tf(),{inputId:a,isLabeledByFormItem:o}=Vy(r,{formItemContext:i}),s=async u=>{t(wi,u),await Nt(),t("change",u)},l=k({get(){return r.modelValue},set(u){s(u)}});return Dt(Ws,{...b3(Kd(r),["size","min","max","disabled","validateEvent","fill","textColor"]),modelValue:l,changeEvent:s}),be(()=>r.modelValue,()=>{r.validateEvent&&(i==null||i.validate("change").catch(u=>void 0))}),(u,f)=>{var c;return G(),ve(Vt(u.tag),{id:T(a),class:re(T(n).b("group")),role:"group","aria-label":T(o)?void 0:u.label||"checkbox-group","aria-labelledby":T(o)?(c=T(i))==null?void 0:c.labelId:void 0},{default:q(()=>[Ce(u.$slots,"default")]),_:3},8,["id","class","aria-label","aria-labelledby"])}}});var NA=Ke(L8,[["__file","checkbox-group.vue"]]);const Ms=Yt(S8,{CheckboxButton:kA,CheckboxGroup:NA});pa(kA);pa(NA);const D8=Je({type:{type:String,values:["success","info","warning","danger",""],default:""},closable:Boolean,disableTransitions:Boolean,hit:Boolean,color:{type:String,default:""},size:{type:String,values:$s,default:""},effect:{type:String,values:["dark","light","plain"],default:"light"},round:Boolean}),I8={close:e=>e instanceof MouseEvent,click:e=>e instanceof MouseEvent},O8=ie({name:"ElTag"}),R8=ie({...O8,props:D8,emits:I8,setup(e,{emit:t}){const r=e,n=xi(),i=Oe("tag"),a=k(()=>{const{type:l,hit:u,effect:f,closable:c,round:h}=r;return[i.b(),i.is("closable",c),i.m(l),i.m(n.value),i.m(f),i.is("hit",u),i.is("round",h)]}),o=l=>{t("close",l)},s=l=>{t("click",l)};return(l,u)=>l.disableTransitions?(G(),ce("span",{key:0,class:re(T(a)),style:ct({backgroundColor:l.color}),onClick:s},[te("span",{class:re(T(i).e("content"))},[Ce(l.$slots,"default")],2),l.closable?(G(),ve(T(Bt),{key:0,class:re(T(i).e("close")),onClick:ua(o,["stop"])},{default:q(()=>[Z(T(vd))]),_:1},8,["class","onClick"])):Ae("v-if",!0)],6)):(G(),ve(ti,{key:1,name:`${T(i).namespace.value}-zoom-in-center`,appear:""},{default:q(()=>[te("span",{class:re(T(a)),style:ct({backgroundColor:l.color}),onClick:s},[te("span",{class:re(T(i).e("content"))},[Ce(l.$slots,"default")],2),l.closable?(G(),ve(T(Bt),{key:0,class:re(T(i).e("close")),onClick:ua(o,["stop"])},{default:q(()=>[Z(T(vd))]),_:1},8,["class","onClick"])):Ae("v-if",!0)],6)]),_:3},8,["name"]))}});var k8=Ke(R8,[["__file","tag.vue"]]);const N8=Yt(k8),BA=Symbol("rowContextKey"),B8=["start","center","end","space-around","space-between","space-evenly"],F8=["top","middle","bottom"],$8=Je({tag:{type:String,default:"div"},gutter:{type:Number,default:0},justify:{type:String,values:B8,default:"start"},align:{type:String,values:F8}}),H8=ie({name:"ElRow"}),z8=ie({...H8,props:$8,setup(e){const t=e,r=Oe("row"),n=k(()=>t.gutter);Dt(BA,{gutter:n});const i=k(()=>{const o={};return t.gutter&&(o.marginRight=o.marginLeft=`-${t.gutter/2}px`),o}),a=k(()=>[r.b(),r.is(`justify-${t.justify}`,t.justify!=="start"),r.is(`align-${t.align}`,!!t.align)]);return(o,s)=>(G(),ve(Vt(o.tag),{class:re(T(a)),style:ct(T(i))},{default:q(()=>[Ce(o.$slots,"default")]),_:3},8,["class","style"]))}});var V8=Ke(z8,[["__file","row.vue"]]);const FA=Yt(V8),W8=Je({tag:{type:String,default:"div"},span:{type:Number,default:24},offset:{type:Number,default:0},pull:{type:Number,default:0},push:{type:Number,default:0},xs:{type:Be([Number,Object]),default:()=>ja({})},sm:{type:Be([Number,Object]),default:()=>ja({})},md:{type:Be([Number,Object]),default:()=>ja({})},lg:{type:Be([Number,Object]),default:()=>ja({})},xl:{type:Be([Number,Object]),default:()=>ja({})}}),G8=ie({name:"ElCol"}),U8=ie({...G8,props:W8,setup(e){const t=e,{gutter:r}=Le(BA,{gutter:k(()=>0)}),n=Oe("col"),i=k(()=>{const o={};return r.value&&(o.paddingLeft=o.paddingRight=`${r.value/2}px`),o}),a=k(()=>{const o=[];return["span","offset","pull","push"].forEach(u=>{const f=t[u];kt(f)&&(u==="span"?o.push(n.b(`${t[u]}`)):f>0&&o.push(n.b(`${u}-${t[u]}`)))}),["xs","sm","md","lg","xl"].forEach(u=>{kt(t[u])?o.push(n.b(`${u}-${t[u]}`)):qe(t[u])&&Object.entries(t[u]).forEach(([f,c])=>{o.push(f!=="span"?n.b(`${u}-${f}-${c}`):n.b(`${u}-${c}`))})}),r.value&&o.push(n.is("guttered")),[n.b(),o]});return(o,s)=>(G(),ve(Vt(o.tag),{class:re(T(a)),style:ct(T(i))},{default:q(()=>[Ce(o.$slots,"default")]),_:3},8,["class","style"]))}});var Y8=Ke(U8,[["__file","col.vue"]]);const $A=Yt(Y8),j8=ie({name:"ElCollapseTransition"}),q8=ie({...j8,setup(e){const t=Oe("collapse-transition"),r=i=>{i.style.maxHeight="",i.style.overflow=i.dataset.oldOverflow,i.style.paddingTop=i.dataset.oldPaddingTop,i.style.paddingBottom=i.dataset.oldPaddingBottom},n={beforeEnter(i){i.dataset||(i.dataset={}),i.dataset.oldPaddingTop=i.style.paddingTop,i.dataset.oldPaddingBottom=i.style.paddingBottom,i.style.height&&(i.dataset.elExistsHeight=i.style.height),i.style.maxHeight=0,i.style.paddingTop=0,i.style.paddingBottom=0},enter(i){requestAnimationFrame(()=>{i.dataset.oldOverflow=i.style.overflow,i.dataset.elExistsHeight?i.style.maxHeight=i.dataset.elExistsHeight:i.scrollHeight!==0?i.style.maxHeight=`${i.scrollHeight}px`:i.style.maxHeight=0,i.style.paddingTop=i.dataset.oldPaddingTop,i.style.paddingBottom=i.dataset.oldPaddingBottom,i.style.overflow="hidden"})},afterEnter(i){i.style.maxHeight="",i.style.overflow=i.dataset.oldOverflow},enterCancelled(i){r(i)},beforeLeave(i){i.dataset||(i.dataset={}),i.dataset.oldPaddingTop=i.style.paddingTop,i.dataset.oldPaddingBottom=i.style.paddingBottom,i.dataset.oldOverflow=i.style.overflow,i.style.maxHeight=`${i.scrollHeight}px`,i.style.overflow="hidden"},leave(i){i.scrollHeight!==0&&(i.style.maxHeight=0,i.style.paddingTop=0,i.style.paddingBottom=0)},afterLeave(i){r(i)},leaveCancelled(i){r(i)}};return(i,a)=>(G(),ve(ti,ei({name:T(t).b()},YI(n)),{default:q(()=>[Ce(i.$slots,"default")]),_:3},16,["name"]))}});var Bc=Ke(q8,[["__file","collapse-transition.vue"]]);Bc.install=e=>{e.component(Bc.name,Bc)};const K8=Bc,X8=Je({mask:{type:Boolean,default:!0},customMaskEvent:{type:Boolean,default:!1},overlayClass:{type:Be([String,Array,Object])},zIndex:{type:Be([String,Number])}}),Z8={click:e=>e instanceof MouseEvent},Q8="overlay";var J8=ie({name:"ElOverlay",props:X8,emits:Z8,setup(e,{slots:t,emit:r}){const n=Oe(Q8),i=l=>{r("click",l)},{onClick:a,onMousedown:o,onMouseup:s}=XM(e.customMaskEvent?void 0:i);return()=>e.mask?Z("div",{class:[n.b(),e.overlayClass],style:{zIndex:e.zIndex},onClick:a,onMousedown:o,onMouseup:s},[Ce(t,"default")],Lc.STYLE|Lc.CLASS|Lc.PROPS,["onClick","onMouseup","onMousedown"]):Te("div",{class:e.overlayClass,style:{zIndex:e.zIndex,position:"fixed",top:"0px",right:"0px",bottom:"0px",left:"0px"}},[Ce(t,"default")])}});const e6=J8,HA=Symbol("dialogInjectionKey"),zA=Je({center:Boolean,alignCenter:Boolean,closeIcon:{type:vr},customClass:{type:String,default:""},draggable:Boolean,fullscreen:Boolean,showClose:{type:Boolean,default:!0},title:{type:String,default:""},ariaLevel:{type:String,default:"2"}}),t6={close:()=>!0},r6=["aria-level"],n6=["aria-label"],i6=["id"],a6=ie({name:"ElDialogContent"}),o6=ie({...a6,props:zA,emits:t6,setup(e){const t=e,{t:r}=Hs(),{Close:n}=W3,{dialogRef:i,headerRef:a,bodyId:o,ns:s,style:l}=Le(HA),{focusTrapRef:u}=Le(pA),f=k(()=>[s.b(),s.is("fullscreen",t.fullscreen),s.is("draggable",t.draggable),s.is("align-center",t.alignCenter),{[s.m("center")]:t.center},t.customClass]),c=Y3(u,i),h=k(()=>t.draggable);return K3(i,a,h),(d,v)=>(G(),ce("div",{ref:T(c),class:re(T(f)),style:ct(T(l)),tabindex:"-1"},[te("header",{ref_key:"headerRef",ref:a,class:re(T(s).e("header"))},[Ce(d.$slots,"header",{},()=>[te("span",{role:"heading","aria-level":d.ariaLevel,class:re(T(s).e("title"))},xe(d.title),11,r6)]),d.showClose?(G(),ce("button",{key:0,"aria-label":T(r)("el.dialog.close"),class:re(T(s).e("headerbtn")),type:"button",onClick:v[0]||(v[0]=p=>d.$emit("close"))},[Z(T(Bt),{class:re(T(s).e("close"))},{default:q(()=>[(G(),ve(Vt(d.closeIcon||T(n))))]),_:1},8,["class"])],10,n6)):Ae("v-if",!0)],2),te("div",{id:T(o),class:re(T(s).e("body"))},[Ce(d.$slots,"default")],10,i6),d.$slots.footer?(G(),ce("footer",{key:0,class:re(T(s).e("footer"))},[Ce(d.$slots,"footer")],2)):Ae("v-if",!0)],6))}});var s6=Ke(o6,[["__file","dialog-content.vue"]]);const l6=Je({...zA,appendToBody:Boolean,appendTo:{type:Be(String),default:"body"},beforeClose:{type:Be(Function)},destroyOnClose:Boolean,closeOnClickModal:{type:Boolean,default:!0},closeOnPressEscape:{type:Boolean,default:!0},lockScroll:{type:Boolean,default:!0},modal:{type:Boolean,default:!0},openDelay:{type:Number,default:0},closeDelay:{type:Number,default:0},top:{type:String},modelValue:Boolean,modalClass:String,width:{type:[String,Number]},zIndex:{type:Number},trapFocus:{type:Boolean,default:!1},headerAriaLevel:{type:String,default:"2"}}),u6={open:()=>!0,opened:()=>!0,close:()=>!0,closed:()=>!0,[wi]:e=>zr(e),openAutoFocus:()=>!0,closeAutoFocus:()=>!0},f6=(e,t)=>{var r;const i=it().emit,{nextZIndex:a}=zy();let o="";const s=xu(),l=xu(),u=$(!1),f=$(!1),c=$(!1),h=$((r=e.zIndex)!=null?r:a());let d,v;const p=hh("namespace",Bl),m=k(()=>{const N={},H=`--${p.value}-dialog`;return e.fullscreen||(e.top&&(N[`${H}-margin-top`]=e.top),e.width&&(N[`${H}-width`]=Zn(e.width))),N}),g=k(()=>e.alignCenter?{display:"flex"}:{});function y(){i("opened")}function _(){i("closed"),i(wi,!1),e.destroyOnClose&&(c.value=!1)}function b(){i("close")}function x(){v==null||v(),d==null||d(),e.openDelay&&e.openDelay>0?{stop:d}=hu(()=>M(),e.openDelay):M()}function w(){d==null||d(),v==null||v(),e.closeDelay&&e.closeDelay>0?{stop:v}=hu(()=>A(),e.closeDelay):A()}function S(){function N(H){H||(f.value=!0,u.value=!1)}e.beforeClose?e.beforeClose(N):w()}function C(){e.closeOnClickModal&&S()}function M(){At&&(u.value=!0)}function A(){u.value=!1}function P(){i("openAutoFocus")}function E(){i("closeAutoFocus")}function L(N){var H;((H=N.detail)==null?void 0:H.focusReason)==="pointer"&&N.preventDefault()}e.lockScroll&&t5(u);function O(){e.closeOnPressEscape&&S()}return be(()=>e.modelValue,N=>{N?(f.value=!1,x(),c.value=!0,h.value=MM(e.zIndex)?a():h.value++,Nt(()=>{i("open"),t.value&&(t.value.scrollTop=0)})):u.value&&w()}),be(()=>e.fullscreen,N=>{t.value&&(N?(o=t.value.style.transform,t.value.style.transform=""):t.value.style.transform=o)}),_t(()=>{e.modelValue&&(u.value=!0,c.value=!0,x())}),{afterEnter:y,afterLeave:_,beforeLeave:b,handleClose:S,onModalClick:C,close:w,doClose:A,onOpenAutoFocus:P,onCloseAutoFocus:E,onCloseRequested:O,onFocusoutPrevented:L,titleId:s,bodyId:l,closed:f,style:m,overlayDialogStyle:g,rendered:c,visible:u,zIndex:h}},c6=["aria-label","aria-labelledby","aria-describedby"],d6=ie({name:"ElDialog",inheritAttrs:!1}),h6=ie({...d6,props:l6,emits:u6,setup(e,{expose:t}){const r=e,n=Ns();bu({scope:"el-dialog",from:"the title slot",replacement:"the header slot",version:"3.0.0",ref:"https://element-plus.org/en-US/component/dialog.html#slots"},k(()=>!!n.title)),bu({scope:"el-dialog",from:"custom-class",replacement:"class",version:"2.3.0",ref:"https://element-plus.org/en-US/component/dialog.html#attributes",type:"Attribute"},k(()=>!!r.customClass));const i=Oe("dialog"),a=$(),o=$(),s=$(),{visible:l,titleId:u,bodyId:f,style:c,overlayDialogStyle:h,rendered:d,zIndex:v,afterEnter:p,afterLeave:m,beforeLeave:g,handleClose:y,onModalClick:_,onOpenAutoFocus:b,onCloseAutoFocus:x,onCloseRequested:w,onFocusoutPrevented:S}=f6(r,a);Dt(HA,{dialogRef:a,headerRef:o,bodyId:f,ns:i,rendered:d,style:c});const C=XM(_),M=k(()=>r.draggable&&!r.fullscreen);return t({visible:l,dialogContentRef:s}),(A,P)=>(G(),ve(MT,{to:A.appendTo,disabled:A.appendTo!=="body"?!1:!A.appendToBody},[Z(ti,{name:"dialog-fade",onAfterEnter:T(p),onAfterLeave:T(m),onBeforeLeave:T(g),persisted:""},{default:q(()=>[qt(Z(T(e6),{"custom-mask-event":"",mask:A.modal,"overlay-class":A.modalClass,"z-index":T(v)},{default:q(()=>[te("div",{role:"dialog","aria-modal":"true","aria-label":A.title||void 0,"aria-labelledby":A.title?void 0:T(u),"aria-describedby":T(f),class:re(`${T(i).namespace.value}-overlay-dialog`),style:ct(T(h)),onClick:P[0]||(P[0]=(...E)=>T(C).onClick&&T(C).onClick(...E)),onMousedown:P[1]||(P[1]=(...E)=>T(C).onMousedown&&T(C).onMousedown(...E)),onMouseup:P[2]||(P[2]=(...E)=>T(C).onMouseup&&T(C).onMouseup(...E))},[Z(T(mA),{loop:"",trapped:T(l),"focus-start-el":"container",onFocusAfterTrapped:T(b),onFocusAfterReleased:T(x),onFocusoutPrevented:T(S),onReleaseRequested:T(w)},{default:q(()=>[T(d)?(G(),ve(s6,ei({key:0,ref_key:"dialogContentRef",ref:s},A.$attrs,{"custom-class":A.customClass,center:A.center,"align-center":A.alignCenter,"close-icon":A.closeIcon,draggable:T(M),fullscreen:A.fullscreen,"show-close":A.showClose,title:A.title,"aria-level":A.headerAriaLevel,onClose:T(y)}),UI({header:q(()=>[A.$slots.title?Ce(A.$slots,"title",{key:1}):Ce(A.$slots,"header",{key:0,close:T(y),titleId:T(u),titleClass:T(i).e("title")})]),default:q(()=>[Ce(A.$slots,"default")]),_:2},[A.$slots.footer?{name:"footer",fn:q(()=>[Ce(A.$slots,"footer")])}:void 0]),1040,["custom-class","center","align-center","close-icon","draggable","fullscreen","show-close","title","aria-level","onClose"])):Ae("v-if",!0)]),_:3},8,["trapped","onFocusAfterTrapped","onFocusAfterReleased","onFocusoutPrevented","onReleaseRequested"])],46,c6)]),_:3},8,["mask","overlay-class","z-index"]),[[Kn,T(l)]])]),_:3},8,["onAfterEnter","onAfterLeave","onBeforeLeave"])],8,["to","disabled"]))}});var v6=Ke(h6,[["__file","dialog.vue"]]);const p6=Yt(v6),g6=Je({direction:{type:String,values:["horizontal","vertical"],default:"horizontal"},contentPosition:{type:String,values:["left","center","right"],default:"center"},borderStyle:{type:Be(String),default:"solid"}}),m6=ie({name:"ElDivider"}),y6=ie({...m6,props:g6,setup(e){const t=e,r=Oe("divider"),n=k(()=>r.cssVar({"border-style":t.borderStyle}));return(i,a)=>(G(),ce("div",{class:re([T(r).b(),T(r).m(i.direction)]),style:ct(T(n)),role:"separator"},[i.$slots.default&&i.direction!=="vertical"?(G(),ce("div",{key:0,class:re([T(r).e("text"),T(r).is(i.contentPosition)])},[Ce(i.$slots,"default")],2)):Ae("v-if",!0)],6))}});var _6=Ke(y6,[["__file","divider.vue"]]);const VA=Yt(_6);let b6=class{constructor(t,r){this.parent=t,this.domNode=r,this.subIndex=0,this.subIndex=0,this.init()}init(){this.subMenuItems=this.domNode.querySelectorAll("li"),this.addListeners()}gotoSubIndex(t){t===this.subMenuItems.length?t=0:t<0&&(t=this.subMenuItems.length-1),this.subMenuItems[t].focus(),this.subIndex=t}addListeners(){const t=this.parent.domNode;Array.prototype.forEach.call(this.subMenuItems,r=>{r.addEventListener("keydown",n=>{let i=!1;switch(n.code){case hr.down:{this.gotoSubIndex(this.subIndex+1),i=!0;break}case hr.up:{this.gotoSubIndex(this.subIndex-1),i=!0;break}case hr.tab:{Ac(t,"mouseleave");break}case hr.enter:case hr.space:{i=!0,n.currentTarget.click();break}}return i&&(n.preventDefault(),n.stopPropagation()),!1})})}},w6=class{constructor(t,r){this.domNode=t,this.submenu=null,this.submenu=null,this.init(r)}init(t){this.domNode.setAttribute("tabindex","0");const r=this.domNode.querySelector(`.${t}-menu`);r&&(this.submenu=new b6(this,r)),this.addListeners()}addListeners(){this.domNode.addEventListener("keydown",t=>{let r=!1;switch(t.code){case hr.down:{Ac(t.currentTarget,"mouseenter"),this.submenu&&this.submenu.gotoSubIndex(0),r=!0;break}case hr.up:{Ac(t.currentTarget,"mouseenter"),this.submenu&&this.submenu.gotoSubIndex(this.submenu.subMenuItems.length-1),r=!0;break}case hr.tab:{Ac(t.currentTarget,"mouseleave");break}case hr.enter:case hr.space:{r=!0,t.currentTarget.click();break}}r&&t.preventDefault()})}},S6=class{constructor(t,r){this.domNode=t,this.init(r)}init(t){const r=this.domNode.childNodes;Array.from(r).forEach(n=>{n.nodeType===1&&new w6(n,t)})}};const x6=ie({name:"ElMenuCollapseTransition",setup(){const e=Oe("menu");return{listeners:{onBeforeEnter:r=>r.style.opacity="0.2",onEnter(r,n){Za(r,`${e.namespace.value}-opacity-transition`),r.style.opacity="1",n()},onAfterEnter(r){so(r,`${e.namespace.value}-opacity-transition`),r.style.opacity=""},onBeforeLeave(r){r.dataset||(r.dataset={}),oo(r,e.m("collapse"))?(so(r,e.m("collapse")),r.dataset.oldOverflow=r.style.overflow,r.dataset.scrollWidth=r.clientWidth.toString(),Za(r,e.m("collapse"))):(Za(r,e.m("collapse")),r.dataset.oldOverflow=r.style.overflow,r.dataset.scrollWidth=r.clientWidth.toString(),so(r,e.m("collapse"))),r.style.width=`${r.scrollWidth}px`,r.style.overflow="hidden"},onLeave(r){Za(r,"horizontal-collapse-transition"),r.style.width=`${r.dataset.scrollWidth}px`}}}}});function C6(e,t,r,n,i,a){return G(),ve(ti,ei({mode:"out-in"},e.listeners),{default:q(()=>[Ce(e.$slots,"default")]),_:3},16)}var T6=Ke(x6,[["render",C6],["__file","menu-collapse-transition.vue"]]);function WA(e,t){const r=k(()=>{let i=e.parent;const a=[t.value];for(;i.type.name!=="ElMenu";)i.props.index&&a.unshift(i.props.index),i=i.parent;return a});return{parentMenu:k(()=>{let i=e.parent;for(;i&&!["ElMenu","ElSubMenu"].includes(i.type.name);)i=i.parent;return i}),indexPath:r}}function M6(e){return k(()=>{const r=e.backgroundColor;return r?new SA(r).shade(20).toString():""})}const GA=(e,t)=>{const r=Oe("menu");return k(()=>r.cssVarBlock({"text-color":e.textColor||"","hover-text-color":e.textColor||"","bg-color":e.backgroundColor||"","hover-bg-color":M6(e).value||"","active-color":e.activeTextColor||"",level:`${t}`}))},A6=Je({index:{type:String,required:!0},showTimeout:Number,hideTimeout:Number,popperClass:String,disabled:Boolean,popperAppendToBody:{type:Boolean,default:void 0},teleported:{type:Boolean,default:void 0},popperOffset:Number,expandCloseIcon:{type:vr},expandOpenIcon:{type:vr},collapseCloseIcon:{type:vr},collapseOpenIcon:{type:vr}}),Of="ElSubMenu";var jy=ie({name:Of,props:A6,setup(e,{slots:t,expose:r}){bu({from:"popper-append-to-body",replacement:"teleported",scope:Of,version:"2.3.0",ref:"https://element-plus.org/en-US/component/menu.html#submenu-attributes"},k(()=>e.popperAppendToBody!==void 0));const n=it(),{indexPath:i,parentMenu:a}=WA(n,k(()=>e.index)),o=Oe("menu"),s=Oe("sub-menu"),l=Le("rootMenu");l||bi(Of,"can not inject root menu");const u=Le(`subMenu:${a.value.uid}`);u||bi(Of,"can not inject sub menu");const f=$({}),c=$({});let h;const d=$(!1),v=$(),p=$(null),m=k(()=>C.value==="horizontal"&&y.value?"bottom-start":"right-start"),g=k(()=>C.value==="horizontal"&&y.value||C.value==="vertical"&&!l.props.collapse?e.expandCloseIcon&&e.expandOpenIcon?w.value?e.expandOpenIcon:e.expandCloseIcon:EM:e.collapseCloseIcon&&e.collapseOpenIcon?w.value?e.collapseOpenIcon:e.collapseCloseIcon:Ey),y=k(()=>u.level===0),_=k(()=>{var z;const ee=(z=e.teleported)!=null?z:e.popperAppendToBody;return ee===void 0?y.value:ee}),b=k(()=>l.props.collapse?`${o.namespace.value}-zoom-in-left`:`${o.namespace.value}-zoom-in-top`),x=k(()=>C.value==="horizontal"&&y.value?["bottom-start","bottom-end","top-start","top-end","right-start","left-start"]:["right-start","right","right-end","left-start","bottom-start","bottom-end","top-start","top-end"]),w=k(()=>l.openedMenus.includes(e.index)),S=k(()=>{let z=!1;return Object.values(f.value).forEach(ee=>{ee.active&&(z=!0)}),Object.values(c.value).forEach(ee=>{ee.active&&(z=!0)}),z}),C=k(()=>l.props.mode),M=Ln({index:e.index,indexPath:i,active:S}),A=GA(l.props,u.level+1),P=k(()=>{var z;return(z=e.popperOffset)!=null?z:l.props.popperOffset}),E=k(()=>{var z;return(z=e.popperClass)!=null?z:l.props.popperClass}),L=k(()=>{var z;return(z=e.showTimeout)!=null?z:l.props.showTimeout}),O=k(()=>{var z;return(z=e.hideTimeout)!=null?z:l.props.hideTimeout}),N=()=>{var z,ee,J;return(J=(ee=(z=p.value)==null?void 0:z.popperRef)==null?void 0:ee.popperInstanceRef)==null?void 0:J.destroy()},H=z=>{z||N()},V=()=>{l.props.menuTrigger==="hover"&&l.props.mode==="horizontal"||l.props.collapse&&l.props.mode==="vertical"||e.disabled||l.handleSubMenuClick({index:e.index,indexPath:i.value,active:S.value})},U=(z,ee=L.value)=>{var J;if(z.type!=="focus"){if(l.props.menuTrigger==="click"&&l.props.mode==="horizontal"||!l.props.collapse&&l.props.mode==="vertical"||e.disabled){u.mouseInChild.value=!0;return}u.mouseInChild.value=!0,h==null||h(),{stop:h}=hu(()=>{l.openMenu(e.index,i.value)},ee),_.value&&((J=a.value.vnode.el)==null||J.dispatchEvent(new MouseEvent("mouseenter")))}},F=(z=!1)=>{var ee;if(l.props.menuTrigger==="click"&&l.props.mode==="horizontal"||!l.props.collapse&&l.props.mode==="vertical"){u.mouseInChild.value=!1;return}h==null||h(),u.mouseInChild.value=!1,{stop:h}=hu(()=>!d.value&&l.closeMenu(e.index,i.value),O.value),_.value&&z&&((ee=u.handleMouseleave)==null||ee.call(u,!0))};be(()=>l.props.collapse,z=>H(!!z));{const z=J=>{c.value[J.index]=J},ee=J=>{delete c.value[J.index]};Dt(`subMenu:${n.uid}`,{addSubMenu:z,removeSubMenu:ee,handleMouseleave:F,mouseInChild:d,level:u.level+1})}return r({opened:w}),_t(()=>{l.addSubMenu(M),u.addSubMenu(M)}),tr(()=>{u.removeSubMenu(M),l.removeSubMenu(M)}),()=>{var z;const ee=[(z=t.title)==null?void 0:z.call(t),Te(Bt,{class:s.e("icon-arrow"),style:{transform:w.value?e.expandCloseIcon&&e.expandOpenIcon||e.collapseCloseIcon&&e.collapseOpenIcon&&l.props.collapse?"none":"rotateZ(180deg)":"none"}},{default:()=>ze(g.value)?Te(n.appContext.components[g.value]):Te(g.value)})],J=l.isMenuPopup?Te(Vs,{ref:p,visible:w.value,effect:"light",pure:!0,offset:P.value,showArrow:!1,persistent:!0,popperClass:E.value,placement:m.value,teleported:_.value,fallbackPlacements:x.value,transition:b.value,gpuAcceleration:!1},{content:()=>{var me;return Te("div",{class:[o.m(C.value),o.m("popup-container"),E.value],onMouseenter:we=>U(we,100),onMouseleave:()=>F(!0),onFocus:we=>U(we,100)},[Te("ul",{class:[o.b(),o.m("popup"),o.m(`popup-${m.value}`)],style:A.value},[(me=t.default)==null?void 0:me.call(t)])])},default:()=>Te("div",{class:s.e("title"),onClick:V},ee)}):Te(ft,{},[Te("div",{class:s.e("title"),ref:v,onClick:V},ee),Te(K8,{},{default:()=>{var me;return qt(Te("ul",{role:"menu",class:[o.b(),o.m("inline")],style:A.value},[(me=t.default)==null?void 0:me.call(t)]),[[Kn,w.value]])}})]);return Te("li",{class:[s.b(),s.is("active",S.value),s.is("opened",w.value),s.is("disabled",e.disabled)],role:"menuitem",ariaHaspopup:!0,ariaExpanded:w.value,onMouseenter:U,onMouseleave:()=>F(),onFocus:U},[J])}}});const P6=Je({mode:{type:String,values:["horizontal","vertical"],default:"vertical"},defaultActive:{type:String,default:""},defaultOpeneds:{type:Be(Array),default:()=>ja([])},uniqueOpened:Boolean,router:Boolean,menuTrigger:{type:String,values:["hover","click"],default:"hover"},collapse:Boolean,backgroundColor:String,textColor:String,activeTextColor:String,closeOnClickOutside:Boolean,collapseTransition:{type:Boolean,default:!0},ellipsis:{type:Boolean,default:!0},popperOffset:{type:Number,default:6},ellipsisIcon:{type:vr,default:()=>B3},popperEffect:{type:String,values:["dark","light"],default:"dark"},popperClass:String,showTimeout:{type:Number,default:300},hideTimeout:{type:Number,default:300}}),uv=e=>Array.isArray(e)&&e.every(t=>ze(t)),E6={close:(e,t)=>ze(e)&&uv(t),open:(e,t)=>ze(e)&&uv(t),select:(e,t,r,n)=>ze(e)&&uv(t)&&qe(r)&&(n===void 0||n instanceof Promise)};var L6=ie({name:"ElMenu",props:P6,emits:E6,setup(e,{emit:t,slots:r,expose:n}){const i=it(),a=i.appContext.config.globalProperties.$router,o=$(),s=Oe("menu"),l=Oe("sub-menu"),u=$(-1),f=$(e.defaultOpeneds&&!e.collapse?e.defaultOpeneds.slice(0):[]),c=$(e.defaultActive),h=$({}),d=$({}),v=k(()=>e.mode==="horizontal"||e.mode==="vertical"&&e.collapse),p=()=>{const L=c.value&&h.value[c.value];if(!L||e.mode==="horizontal"||e.collapse)return;L.indexPath.forEach(N=>{const H=d.value[N];H&&m(N,H.indexPath)})},m=(L,O)=>{f.value.includes(L)||(e.uniqueOpened&&(f.value=f.value.filter(N=>O.includes(N))),f.value.push(L),t("open",L,O))},g=L=>{const O=f.value.indexOf(L);O!==-1&&f.value.splice(O,1)},y=(L,O)=>{g(L),t("close",L,O)},_=({index:L,indexPath:O})=>{f.value.includes(L)?y(L,O):m(L,O)},b=L=>{(e.mode==="horizontal"||e.collapse)&&(f.value=[]);const{index:O,indexPath:N}=L;if(!(_s(O)||_s(N)))if(e.router&&a){const H=L.route||O,V=a.push(H).then(U=>(U||(c.value=O),U));t("select",O,N,{index:O,indexPath:N,route:H},V)}else c.value=O,t("select",O,N,{index:O,indexPath:N})},x=L=>{const O=h.value,N=O[L]||c.value&&O[c.value]||O[e.defaultActive];N?c.value=N.index:c.value=L},w=()=>{var L,O;if(!o.value)return-1;const N=Array.from((O=(L=o.value)==null?void 0:L.childNodes)!=null?O:[]).filter(J=>J.nodeName!=="#comment"&&(J.nodeName!=="#text"||J.nodeValue)),H=64,V=Number.parseInt(getComputedStyle(o.value).paddingLeft,10),U=Number.parseInt(getComputedStyle(o.value).paddingRight,10),F=o.value.clientWidth-V-U;let z=0,ee=0;return N.forEach((J,me)=>{z+=J.offsetWidth||0,z<=F-H&&(ee=me+1)}),ee===N.length?-1:ee},S=L=>d.value[L].indexPath,C=(L,O=33.34)=>{let N;return()=>{N&&clearTimeout(N),N=setTimeout(()=>{L()},O)}};let M=!0;const A=()=>{const L=()=>{u.value=-1,Nt(()=>{u.value=w()})};M?L():C(L)(),M=!1};be(()=>e.defaultActive,L=>{h.value[L]||(c.value=""),x(L)}),be(()=>e.collapse,L=>{L&&(f.value=[])}),be(h.value,p);let P;na(()=>{e.mode==="horizontal"&&e.ellipsis?P=ms(o,A).stop:P==null||P()});const E=$(!1);{const L=V=>{d.value[V.index]=V},O=V=>{delete d.value[V.index]};Dt("rootMenu",Ln({props:e,openedMenus:f,items:h,subMenus:d,activeIndex:c,isMenuPopup:v,addMenuItem:V=>{h.value[V.index]=V},removeMenuItem:V=>{delete h.value[V.index]},addSubMenu:L,removeSubMenu:O,openMenu:m,closeMenu:y,handleMenuItemClick:b,handleSubMenuClick:_})),Dt(`subMenu:${i.uid}`,{addSubMenu:L,removeSubMenu:O,mouseInChild:E,level:0})}return _t(()=>{e.mode==="horizontal"&&new S6(i.vnode.el,s.namespace.value)}),n({open:O=>{const{indexPath:N}=d.value[O];N.forEach(H=>m(H,N))},close:g,handleResize:A}),()=>{var L,O;let N=(O=(L=r.default)==null?void 0:L.call(r))!=null?O:[];const H=[];if(e.mode==="horizontal"&&o.value){const z=Dc(N),ee=u.value===-1?z:z.slice(0,u.value),J=u.value===-1?[]:z.slice(u.value);J!=null&&J.length&&e.ellipsis&&(N=ee,H.push(Te(jy,{index:"sub-menu-more",class:l.e("hide-arrow"),popperOffset:e.popperOffset},{title:()=>Te(Bt,{class:l.e("icon-more")},{default:()=>Te(e.ellipsisIcon)}),default:()=>J})))}const V=GA(e,0),U=e.closeOnClickOutside?[[CA,()=>{f.value.length&&(E.value||(f.value.forEach(z=>t("close",z,S(z))),f.value=[]))}]]:[],F=qt(Te("ul",{key:String(e.collapse),role:"menubar",ref:o,style:V.value,class:{[s.b()]:!0,[s.m(e.mode)]:!0,[s.m("collapse")]:e.collapse}},[...N,...H]),U);return e.collapseTransition&&e.mode==="vertical"?Te(T6,()=>F):F}}});const D6=Je({index:{type:Be([String,null]),default:null},route:{type:Be([String,Object])},disabled:Boolean}),I6={click:e=>ze(e.index)&&Array.isArray(e.indexPath)},fv="ElMenuItem",O6=ie({name:fv,components:{ElTooltip:Vs},props:D6,emits:I6,setup(e,{emit:t}){const r=it(),n=Le("rootMenu"),i=Oe("menu"),a=Oe("menu-item");n||bi(fv,"can not inject root menu");const{parentMenu:o,indexPath:s}=WA(r,wn(e,"index")),l=Le(`subMenu:${o.value.uid}`);l||bi(fv,"can not inject sub menu");const u=k(()=>e.index===n.activeIndex),f=Ln({index:e.index,indexPath:s,active:u}),c=()=>{e.disabled||(n.handleMenuItemClick({index:e.index,indexPath:s.value,route:e.route}),t("click",f))};return _t(()=>{l.addSubMenu(f),n.addMenuItem(f)}),tr(()=>{l.removeSubMenu(f),n.removeMenuItem(f)}),{parentMenu:o,rootMenu:n,active:u,nsMenu:i,nsMenuItem:a,handleClick:c}}});function R6(e,t,r,n,i,a){const o=xr("el-tooltip");return G(),ce("li",{class:re([e.nsMenuItem.b(),e.nsMenuItem.is("active",e.active),e.nsMenuItem.is("disabled",e.disabled)]),role:"menuitem",tabindex:"-1",onClick:t[0]||(t[0]=(...s)=>e.handleClick&&e.handleClick(...s))},[e.parentMenu.type.name==="ElMenu"&&e.rootMenu.props.collapse&&e.$slots.title?(G(),ve(o,{key:0,effect:e.rootMenu.props.popperEffect,placement:"right","fallback-placements":["left"],persistent:""},{content:q(()=>[Ce(e.$slots,"title")]),default:q(()=>[te("div",{class:re(e.nsMenu.be("tooltip","trigger"))},[Ce(e.$slots,"default")],2)]),_:3},8,["effect"])):(G(),ce(ft,{key:1},[Ce(e.$slots,"default"),Ce(e.$slots,"title")],64))],2)}var UA=Ke(O6,[["render",R6],["__file","menu-item.vue"]]);const k6={title:String},N6="ElMenuItemGroup",B6=ie({name:N6,props:k6,setup(){return{ns:Oe("menu-item-group")}}});function F6(e,t,r,n,i,a){return G(),ce("li",{class:re(e.ns.b())},[te("div",{class:re(e.ns.e("title"))},[e.$slots.title?Ce(e.$slots,"title",{key:1}):(G(),ce(ft,{key:0},[pt(xe(e.title),1)],64))],2),te("ul",null,[Ce(e.$slots,"default")])],2)}var YA=Ke(B6,[["render",F6],["__file","menu-item-group.vue"]]);const $6=Yt(L6,{MenuItem:UA,MenuItemGroup:YA,SubMenu:jy}),H6=pa(UA);pa(YA);const z6=pa(jy),V6=Je({icon:{type:vr,default:()=>D3},title:String,content:{type:String,default:""}}),W6={back:()=>!0},G6=["aria-label"],U6=ie({name:"ElPageHeader"}),Y6=ie({...U6,props:V6,emits:W6,setup(e,{emit:t}){const r=Ns(),{t:n}=Hs(),i=Oe("page-header"),a=k(()=>[i.b(),{[i.m("has-breadcrumb")]:!!r.breadcrumb,[i.m("has-extra")]:!!r.extra,[i.is("contentful")]:!!r.default}]);function o(){t("back")}return(s,l)=>(G(),ce("div",{class:re(T(a))},[s.$slots.breadcrumb?(G(),ce("div",{key:0,class:re(T(i).e("breadcrumb"))},[Ce(s.$slots,"breadcrumb")],2)):Ae("v-if",!0),te("div",{class:re(T(i).e("header"))},[te("div",{class:re(T(i).e("left"))},[te("div",{class:re(T(i).e("back")),role:"button",tabindex:"0",onClick:o},[s.icon||s.$slots.icon?(G(),ce("div",{key:0,"aria-label":s.title||T(n)("el.pageHeader.title"),class:re(T(i).e("icon"))},[Ce(s.$slots,"icon",{},()=>[s.icon?(G(),ve(T(Bt),{key:0},{default:q(()=>[(G(),ve(Vt(s.icon)))]),_:1})):Ae("v-if",!0)])],10,G6)):Ae("v-if",!0),te("div",{class:re(T(i).e("title"))},[Ce(s.$slots,"title",{},()=>[pt(xe(s.title||T(n)("el.pageHeader.title")),1)])],2)],2),Z(T(VA),{direction:"vertical"}),te("div",{class:re(T(i).e("content"))},[Ce(s.$slots,"content",{},()=>[pt(xe(s.content),1)])],2)],2),s.$slots.extra?(G(),ce("div",{key:0,class:re(T(i).e("extra"))},[Ce(s.$slots,"extra")],2)):Ae("v-if",!0)],2),s.$slots.default?(G(),ce("div",{key:1,class:re(T(i).e("main"))},[Ce(s.$slots,"default")],2)):Ae("v-if",!0)],2))}});var j6=Ke(Y6,[["__file","page-header.vue"]]);const q6=Yt(j6),K6=Je({title:String,confirmButtonText:String,cancelButtonText:String,confirmButtonType:{type:String,values:pg,default:"primary"},cancelButtonType:{type:String,values:pg,default:"text"},icon:{type:vr,default:()=>$3},iconColor:{type:String,default:"#f90"},hideIcon:{type:Boolean,default:!1},hideAfter:{type:Number,default:200},teleported:md.teleported,persistent:md.persistent,width:{type:[String,Number],default:150}}),X6={confirm:e=>e instanceof MouseEvent,cancel:e=>e instanceof MouseEvent},Z6=ie({name:"ElPopconfirm"}),Q6=ie({...Z6,props:K6,emits:X6,setup(e,{emit:t}){const r=e,{t:n}=Hs(),i=Oe("popconfirm"),a=$(),o=()=>{var h,d;(d=(h=a.value)==null?void 0:h.onClose)==null||d.call(h)},s=k(()=>({width:Zn(r.width)})),l=h=>{t("confirm",h),o()},u=h=>{t("cancel",h),o()},f=k(()=>r.confirmButtonText||n("el.popconfirm.confirmButtonText")),c=k(()=>r.cancelButtonText||n("el.popconfirm.cancelButtonText"));return(h,d)=>(G(),ve(T(Vs),ei({ref_key:"tooltipRef",ref:a,trigger:"click",effect:"light"},h.$attrs,{"popper-class":`${T(i).namespace.value}-popover`,"popper-style":T(s),teleported:h.teleported,"fallback-placements":["bottom","top","right","left"],"hide-after":h.hideAfter,persistent:h.persistent}),{content:q(()=>[te("div",{class:re(T(i).b())},[te("div",{class:re(T(i).e("main"))},[!h.hideIcon&&h.icon?(G(),ve(T(Bt),{key:0,class:re(T(i).e("icon")),style:ct({color:h.iconColor})},{default:q(()=>[(G(),ve(Vt(h.icon)))]),_:1},8,["class","style"])):Ae("v-if",!0),pt(" "+xe(h.title),1)],2),te("div",{class:re(T(i).e("action"))},[Z(T(yg),{size:"small",type:h.cancelButtonType==="text"?"":h.cancelButtonType,text:h.cancelButtonType==="text",onClick:u},{default:q(()=>[pt(xe(T(c)),1)]),_:1},8,["type","text"]),Z(T(yg),{size:"small",type:h.confirmButtonType==="text"?"":h.confirmButtonType,text:h.confirmButtonType==="text",onClick:l},{default:q(()=>[pt(xe(T(f)),1)]),_:1},8,["type","text"])],2)],2)]),default:q(()=>[h.$slots.reference?Ce(h.$slots,"reference",{key:0}):Ae("v-if",!0)]),_:3},16,["popper-class","popper-style","teleported","hide-after","persistent"]))}});var J6=Ke(Q6,[["__file","popconfirm.vue"]]);const eV=Yt(J6),tV=Je({modelValue:{type:[Boolean,String,Number],default:!1},disabled:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},size:{type:String,validator:j3},width:{type:[String,Number],default:""},inlinePrompt:{type:Boolean,default:!1},inactiveActionIcon:{type:vr},activeActionIcon:{type:vr},activeIcon:{type:vr},inactiveIcon:{type:vr},activeText:{type:String,default:""},inactiveText:{type:String,default:""},activeValue:{type:[Boolean,String,Number],default:!0},inactiveValue:{type:[Boolean,String,Number],default:!1},activeColor:{type:String,default:""},inactiveColor:{type:String,default:""},borderColor:{type:String,default:""},name:{type:String,default:""},validateEvent:{type:Boolean,default:!0},beforeChange:{type:Be(Function)},id:String,tabindex:{type:[String,Number]},value:{type:[Boolean,String,Number],default:!1},label:{type:String,default:void 0}}),rV={[wi]:e=>zr(e)||ze(e)||kt(e),[sg]:e=>zr(e)||ze(e)||kt(e),[lg]:e=>zr(e)||ze(e)||kt(e)},nV=["onClick"],iV=["id","aria-checked","aria-disabled","aria-label","name","true-value","false-value","disabled","tabindex","onKeydown"],aV=["aria-hidden"],oV=["aria-hidden"],sV=["aria-hidden"],Ag="ElSwitch",lV=ie({name:Ag}),uV=ie({...lV,props:tV,emits:rV,setup(e,{expose:t,emit:r}){const n=e,i=it(),{formItem:a}=tf(),o=xi(),s=Oe("switch");(C=>{C.forEach(M=>{bu({from:M[0],replacement:M[1],scope:Ag,version:"2.3.0",ref:"https://element-plus.org/en-US/component/switch.html#attributes",type:"Attribute"},k(()=>{var A;return!!((A=i.vnode.props)!=null&&A[M[2]])}))})})([['"value"','"model-value" or "v-model"',"value"],['"active-color"',"CSS var `--el-switch-on-color`","activeColor"],['"inactive-color"',"CSS var `--el-switch-off-color`","inactiveColor"],['"border-color"',"CSS var `--el-switch-border-color`","borderColor"]]);const{inputId:u}=Vy(n,{formItemContext:a}),f=vh(k(()=>n.loading)),c=$(n.modelValue!==!1),h=$(),d=$(),v=k(()=>[s.b(),s.m(o.value),s.is("disabled",f.value),s.is("checked",_.value)]),p=k(()=>[s.e("label"),s.em("label","left"),s.is("active",!_.value)]),m=k(()=>[s.e("label"),s.em("label","right"),s.is("active",_.value)]),g=k(()=>({width:Zn(n.width)}));be(()=>n.modelValue,()=>{c.value=!0}),be(()=>n.value,()=>{c.value=!1});const y=k(()=>c.value?n.modelValue:n.value),_=k(()=>y.value===n.activeValue);[n.activeValue,n.inactiveValue].includes(y.value)||(r(wi,n.inactiveValue),r(sg,n.inactiveValue),r(lg,n.inactiveValue)),be(_,C=>{var M;h.value.checked=C,n.validateEvent&&((M=a==null?void 0:a.validate)==null||M.call(a,"change").catch(A=>void 0))});const b=()=>{const C=_.value?n.inactiveValue:n.activeValue;r(wi,C),r(sg,C),r(lg,C),Nt(()=>{h.value.checked=_.value})},x=()=>{if(f.value)return;const{beforeChange:C}=n;if(!C){b();return}const M=C();[Qc(M),zr(M)].includes(!0)||bi(Ag,"beforeChange must return type `Promise` or `boolean`"),Qc(M)?M.then(P=>{P&&b()}).catch(P=>{}):M&&b()},w=k(()=>s.cssVarBlock({...n.activeColor?{"on-color":n.activeColor}:null,...n.inactiveColor?{"off-color":n.inactiveColor}:null,...n.borderColor?{"border-color":n.borderColor}:null})),S=()=>{var C,M;(M=(C=h.value)==null?void 0:C.focus)==null||M.call(C)};return _t(()=>{h.value.checked=_.value}),t({focus:S,checked:_}),(C,M)=>(G(),ce("div",{class:re(T(v)),style:ct(T(w)),onClick:ua(x,["prevent"])},[te("input",{id:T(u),ref_key:"input",ref:h,class:re(T(s).e("input")),type:"checkbox",role:"switch","aria-checked":T(_),"aria-disabled":T(f),"aria-label":C.label,name:C.name,"true-value":C.activeValue,"false-value":C.inactiveValue,disabled:T(f),tabindex:C.tabindex,onChange:b,onKeydown:iR(x,["enter"])},null,42,iV),!C.inlinePrompt&&(C.inactiveIcon||C.inactiveText)?(G(),ce("span",{key:0,class:re(T(p))},[C.inactiveIcon?(G(),ve(T(Bt),{key:0},{default:q(()=>[(G(),ve(Vt(C.inactiveIcon)))]),_:1})):Ae("v-if",!0),!C.inactiveIcon&&C.inactiveText?(G(),ce("span",{key:1,"aria-hidden":T(_)},xe(C.inactiveText),9,aV)):Ae("v-if",!0)],2)):Ae("v-if",!0),te("span",{ref_key:"core",ref:d,class:re(T(s).e("core")),style:ct(T(g))},[C.inlinePrompt?(G(),ce("div",{key:0,class:re(T(s).e("inner"))},[C.activeIcon||C.inactiveIcon?(G(),ve(T(Bt),{key:0,class:re(T(s).is("icon"))},{default:q(()=>[(G(),ve(Vt(T(_)?C.activeIcon:C.inactiveIcon)))]),_:1},8,["class"])):C.activeText||C.inactiveText?(G(),ce("span",{key:1,class:re(T(s).is("text")),"aria-hidden":!T(_)},xe(T(_)?C.activeText:C.inactiveText),11,oV)):Ae("v-if",!0)],2)):Ae("v-if",!0),te("div",{class:re(T(s).e("action"))},[C.loading?(G(),ve(T(Bt),{key:0,class:re(T(s).is("loading"))},{default:q(()=>[Z(T(Ly))]),_:1},8,["class"])):T(_)?Ce(C.$slots,"active-action",{key:1},()=>[C.activeActionIcon?(G(),ve(T(Bt),{key:0},{default:q(()=>[(G(),ve(Vt(C.activeActionIcon)))]),_:1})):Ae("v-if",!0)]):T(_)?Ae("v-if",!0):Ce(C.$slots,"inactive-action",{key:2},()=>[C.inactiveActionIcon?(G(),ve(T(Bt),{key:0},{default:q(()=>[(G(),ve(Vt(C.inactiveActionIcon)))]),_:1})):Ae("v-if",!0)])],2)],6),!C.inlinePrompt&&(C.activeIcon||C.activeText)?(G(),ce("span",{key:1,class:re(T(m))},[C.activeIcon?(G(),ve(T(Bt),{key:0},{default:q(()=>[(G(),ve(Vt(C.activeIcon)))]),_:1})):Ae("v-if",!0),!C.activeIcon&&C.activeText?(G(),ce("span",{key:1,"aria-hidden":!T(_)},xe(C.activeText),9,sV)):Ae("v-if",!0)],2)):Ae("v-if",!0)],14,nV))}});var fV=Ke(uV,[["__file","switch.vue"]]);const cV=Yt(fV),cv=function(e){var t;return(t=e.target)==null?void 0:t.closest("td")},dV=function(e,t,r,n,i){if(!t&&!n&&(!i||Array.isArray(i)&&!i.length))return e;typeof r=="string"?r=r==="descending"?-1:1:r=r&&r<0?-1:1;const a=n?null:function(s,l){return i?(Array.isArray(i)||(i=[i]),i.map(u=>typeof u=="string"?yu(s,u):u(s,l,e))):(t!=="$key"&&qe(s)&&"$value"in s&&(s=s.$value),[qe(s)?yu(s,t):s])},o=function(s,l){if(n)return n(s.value,l.value);for(let u=0,f=s.key.length;ul.key[u])return 1}return 0};return e.map((s,l)=>({value:s,index:l,key:a?a(s,l):null})).sort((s,l)=>{let u=o(s,l);return u||(u=s.index-l.index),u*+r}).map(s=>s.value)},jA=function(e,t){let r=null;return e.columns.forEach(n=>{n.id===t&&(r=n)}),r},hV=function(e,t){let r=null;for(let n=0;n{if(!e)throw new Error("Row is required when get row identity");if(typeof t=="string"){if(!t.includes("."))return`${e[t]}`;const r=t.split(".");let n=e;for(const i of r)n=n[i];return`${n}`}else if(typeof t=="function")return t.call(null,e)},eo=function(e,t){const r={};return(e||[]).forEach((n,i)=>{r[Jt(n,t)]={row:n,index:i}}),r};function vV(e,t){const r={};let n;for(n in e)r[n]=e[n];for(n in t)if(Ue(t,n)){const i=t[n];typeof i<"u"&&(r[n]=i)}return r}function qy(e){return e===""||e!==void 0&&(e=Number.parseInt(e,10),Number.isNaN(e)&&(e="")),e}function qA(e){return e===""||e!==void 0&&(e=qy(e),Number.isNaN(e)&&(e=80)),e}function pV(e){return typeof e=="number"?e:typeof e=="string"?/^\d+(?:px)?$/.test(e)?Number.parseInt(e,10):e:null}function gV(...e){return e.length===0?t=>t:e.length===1?e[0]:e.reduce((t,r)=>(...n)=>t(r(...n)))}function zl(e,t,r){let n=!1;const i=e.indexOf(t),a=i!==-1,o=s=>{s==="add"?e.push(t):e.splice(i,1),n=!0,_e(t.children)&&t.children.forEach(l=>{zl(e,l,r??!a)})};return zr(r)?r&&!a?o("add"):!r&&a&&o("remove"):o(a?"remove":"add"),n}function mV(e,t,r="children",n="hasChildren"){const i=o=>!(Array.isArray(o)&&o.length);function a(o,s,l){t(o,s,l),s.forEach(u=>{if(u[n]){t(u,null,l+1);return}const f=u[r];i(f)||a(u,f,l+1)})}e.forEach(o=>{if(o[n]){t(o,null,0);return}const s=o[r];i(s)||a(o,s,0)})}let Xr=null;function yV(e,t,r,n){if((Xr==null?void 0:Xr.trigger)===r)return;Xr==null||Xr();const i=n==null?void 0:n.refs.tableWrapper,a=i==null?void 0:i.dataset.prefix,o={strategy:"fixed",...e.popperOptions},s=Z(Vs,{content:t,virtualTriggering:!0,virtualRef:r,appendTo:i,placement:"top",transition:"none",offset:0,hideAfter:0,...e,popperOptions:o,onHide:()=>{Xr==null||Xr()}});s.appContext=n.appContext;const l=document.createElement("div");ld(s,l),s.component.exposed.onOpen();const u=i==null?void 0:i.querySelector(`.${a}-scrollbar__wrap`);Xr=()=>{ld(null,l),u==null||u.removeEventListener("scroll",Xr),Xr=null},Xr.trigger=r,u==null||u.addEventListener("scroll",Xr)}function KA(e){return e.children?v3(e.children,KA):[e]}function D1(e,t){return e+t.colSpan}const XA=(e,t,r,n)=>{let i=0,a=e;const o=r.states.columns.value;if(n){const l=KA(n[e]);i=o.slice(0,o.indexOf(l[0])).reduce(D1,0),a=i+l.reduce(D1,0)-1}else i=e;let s;switch(t){case"left":a=o.length-r.states.rightFixedLeafColumnsLength.value&&(s="right");break;default:a=o.length-r.states.rightFixedLeafColumnsLength.value&&(s="right")}return s?{direction:s,start:i,after:a}:{}},Ky=(e,t,r,n,i,a=0)=>{const o=[],{direction:s,start:l,after:u}=XA(t,r,n,i);if(s){const f=s==="left";o.push(`${e}-fixed-column--${s}`),f&&u+a===n.states.fixedLeafColumnsLength.value-1?o.push("is-last-column"):!f&&l-a===n.states.columns.value.length-n.states.rightFixedLeafColumnsLength.value&&o.push("is-first-column")}return o};function I1(e,t){return e+(t.realWidth===null||Number.isNaN(t.realWidth)?Number(t.width):t.realWidth)}const Xy=(e,t,r,n)=>{const{direction:i,start:a=0,after:o=0}=XA(e,t,r,n);if(!i)return;const s={},l=i==="left",u=r.states.columns.value;return l?s.left=u.slice(0,a).reduce(I1,0):s.right=u.slice(o+1).reverse().reduce(I1,0),s},As=(e,t)=>{e&&(Number.isNaN(e[t])||(e[t]=`${e[t]}px`))};function _V(e){const t=it(),r=$(!1),n=$([]);return{updateExpandRows:()=>{const l=e.data.value||[],u=e.rowKey.value;if(r.value)n.value=l.slice();else if(u){const f=eo(n.value,u);n.value=l.reduce((c,h)=>{const d=Jt(h,u);return f[d]&&c.push(h),c},[])}else n.value=[]},toggleRowExpansion:(l,u)=>{zl(n.value,l,u)&&t.emit("expand-change",l,n.value.slice())},setExpandRowKeys:l=>{t.store.assertRowKey();const u=e.data.value||[],f=e.rowKey.value,c=eo(u,f);n.value=l.reduce((h,d)=>{const v=c[d];return v&&h.push(v.row),h},[])},isRowExpanded:l=>{const u=e.rowKey.value;return u?!!eo(n.value,u)[Jt(l,u)]:n.value.includes(l)},states:{expandRows:n,defaultExpandAll:r}}}function bV(e){const t=it(),r=$(null),n=$(null),i=u=>{t.store.assertRowKey(),r.value=u,o(u)},a=()=>{r.value=null},o=u=>{const{data:f,rowKey:c}=e;let h=null;c.value&&(h=(T(f)||[]).find(d=>Jt(d,c.value)===u)),n.value=h,t.emit("current-change",n.value,null)};return{setCurrentRowKey:i,restoreCurrentRowKey:a,setCurrentRowByKey:o,updateCurrentRow:u=>{const f=n.value;if(u&&u!==f){n.value=u,t.emit("current-change",n.value,f);return}!u&&f&&(n.value=null,t.emit("current-change",null,f))},updateCurrentRowData:()=>{const u=e.rowKey.value,f=e.data.value||[],c=n.value;if(!f.includes(c)&&c){if(u){const h=Jt(c,u);o(h)}else n.value=null;n.value===null&&t.emit("current-change",null,c)}else r.value&&(o(r.value),a())},states:{_currentRowKey:r,currentRow:n}}}function wV(e){const t=$([]),r=$({}),n=$(16),i=$(!1),a=$({}),o=$("hasChildren"),s=$("children"),l=it(),u=k(()=>{if(!e.rowKey.value)return{};const g=e.data.value||[];return c(g)}),f=k(()=>{const g=e.rowKey.value,y=Object.keys(a.value),_={};return y.length&&y.forEach(b=>{if(a.value[b].length){const x={children:[]};a.value[b].forEach(w=>{const S=Jt(w,g);x.children.push(S),w[o.value]&&!_[S]&&(_[S]={children:[]})}),_[b]=x}}),_}),c=g=>{const y=e.rowKey.value,_={};return mV(g,(b,x,w)=>{const S=Jt(b,y);Array.isArray(x)?_[S]={children:x.map(C=>Jt(C,y)),level:w}:i.value&&(_[S]={children:[],lazy:!0,level:w})},s.value,o.value),_},h=(g=!1,y=(_=>(_=l.store)==null?void 0:_.states.defaultExpandAll.value)())=>{var _;const b=u.value,x=f.value,w=Object.keys(b),S={};if(w.length){const C=T(r),M=[],A=(E,L)=>{if(g)return t.value?y||t.value.includes(L):!!(y||E!=null&&E.expanded);{const O=y||t.value&&t.value.includes(L);return!!(E!=null&&E.expanded||O)}};w.forEach(E=>{const L=C[E],O={...b[E]};if(O.expanded=A(L,E),O.lazy){const{loaded:N=!1,loading:H=!1}=L||{};O.loaded=!!N,O.loading=!!H,M.push(E)}S[E]=O});const P=Object.keys(x);i.value&&P.length&&M.length&&P.forEach(E=>{const L=C[E],O=x[E].children;if(M.includes(E)){if(S[E].children.length!==0)throw new Error("[ElTable]children must be an empty array.");S[E].children=O}else{const{loaded:N=!1,loading:H=!1}=L||{};S[E]={lazy:!0,loaded:!!N,loading:!!H,expanded:A(L,E),children:O,level:""}}})}r.value=S,(_=l.store)==null||_.updateTableScrollY()};be(()=>t.value,()=>{h(!0)}),be(()=>u.value,()=>{h()}),be(()=>f.value,()=>{h()});const d=g=>{t.value=g,h()},v=(g,y)=>{l.store.assertRowKey();const _=e.rowKey.value,b=Jt(g,_),x=b&&r.value[b];if(b&&x&&"expanded"in x){const w=x.expanded;y=typeof y>"u"?!x.expanded:y,r.value[b].expanded=y,w!==y&&l.emit("expand-change",g,y),l.store.updateTableScrollY()}},p=g=>{l.store.assertRowKey();const y=e.rowKey.value,_=Jt(g,y),b=r.value[_];i.value&&b&&"loaded"in b&&!b.loaded?m(g,_,b):v(g,void 0)},m=(g,y,_)=>{const{load:b}=l.props;b&&!r.value[y].loaded&&(r.value[y].loading=!0,b(g,_,x=>{if(!Array.isArray(x))throw new TypeError("[ElTable] data must be an array");r.value[y].loading=!1,r.value[y].loaded=!0,r.value[y].expanded=!0,x.length&&(a.value[y]=x),l.emit("expand-change",g,!0)}))};return{loadData:m,loadOrToggle:p,toggleTreeExpansion:v,updateTreeExpandKeys:d,updateTreeData:h,normalize:c,states:{expandRowKeys:t,treeData:r,indent:n,lazy:i,lazyTreeNodeMap:a,lazyColumnIdentifier:o,childrenColumnName:s}}}const SV=(e,t)=>{const r=t.sortingColumn;return!r||typeof r.sortable=="string"?e:dV(e,t.sortProp,t.sortOrder,r.sortMethod,r.sortBy)},Fc=e=>{const t=[];return e.forEach(r=>{r.children&&r.children.length>0?t.push.apply(t,Fc(r.children)):t.push(r)}),t};function xV(){var e;const t=it(),{size:r}=Kd((e=t.proxy)==null?void 0:e.$props),n=$(null),i=$([]),a=$([]),o=$(!1),s=$([]),l=$([]),u=$([]),f=$([]),c=$([]),h=$([]),d=$([]),v=$([]),p=[],m=$(0),g=$(0),y=$(0),_=$(!1),b=$([]),x=$(!1),w=$(!1),S=$(null),C=$({}),M=$(null),A=$(null),P=$(null),E=$(null),L=$(null);be(i,()=>t.state&&V(!1),{deep:!0});const O=()=>{if(!n.value)throw new Error("[ElTable] prop row-key is required")},N=he=>{var Pe;(Pe=he.children)==null||Pe.forEach(We=>{We.fixed=he.fixed,N(We)})},H=()=>{s.value.forEach(et=>{N(et)}),f.value=s.value.filter(et=>et.fixed===!0||et.fixed==="left"),c.value=s.value.filter(et=>et.fixed==="right"),f.value.length>0&&s.value[0]&&s.value[0].type==="selection"&&!s.value[0].fixed&&(s.value[0].fixed=!0,f.value.unshift(s.value[0]));const he=s.value.filter(et=>!et.fixed);l.value=[].concat(f.value).concat(he).concat(c.value);const Pe=Fc(he),We=Fc(f.value),Ge=Fc(c.value);m.value=Pe.length,g.value=We.length,y.value=Ge.length,u.value=[].concat(We).concat(Pe).concat(Ge),o.value=f.value.length>0||c.value.length>0},V=(he,Pe=!1)=>{he&&H(),Pe?t.state.doLayout():t.state.debouncedUpdateLayout()},U=he=>b.value.includes(he),F=()=>{_.value=!1,b.value.length&&(b.value=[],t.emit("selection-change",[]))},z=()=>{let he;if(n.value){he=[];const Pe=eo(b.value,n.value),We=eo(i.value,n.value);for(const Ge in Pe)Ue(Pe,Ge)&&!We[Ge]&&he.push(Pe[Ge].row)}else he=b.value.filter(Pe=>!i.value.includes(Pe));if(he.length){const Pe=b.value.filter(We=>!he.includes(We));b.value=Pe,t.emit("selection-change",Pe.slice())}},ee=()=>(b.value||[]).slice(),J=(he,Pe=void 0,We=!0)=>{if(zl(b.value,he,Pe)){const et=(b.value||[]).slice();We&&t.emit("select",et,he),t.emit("selection-change",et)}},me=()=>{var he,Pe;const We=w.value?!_.value:!(_.value||b.value.length);_.value=We;let Ge=!1,et=0;const zt=(Pe=(he=t==null?void 0:t.store)==null?void 0:he.states)==null?void 0:Pe.rowKey.value;i.value.forEach((gt,Kt)=>{const Yr=Kt+et;S.value?S.value.call(null,gt,Yr)&&zl(b.value,gt,We)&&(Ge=!0):zl(b.value,gt,We)&&(Ge=!0),et+=Ie(Jt(gt,zt))}),Ge&&t.emit("selection-change",b.value?b.value.slice():[]),t.emit("select-all",b.value)},we=()=>{const he=eo(b.value,n.value);i.value.forEach(Pe=>{const We=Jt(Pe,n.value),Ge=he[We];Ge&&(b.value[Ge.index]=Pe)})},$e=()=>{var he,Pe,We;if(((he=i.value)==null?void 0:he.length)===0){_.value=!1;return}let Ge;n.value&&(Ge=eo(b.value,n.value));const et=function(Yr){return Ge?!!Ge[Jt(Yr,n.value)]:b.value.includes(Yr)};let zt=!0,gt=0,Kt=0;for(let Yr=0,AD=(i.value||[]).length;Yr{var Pe;if(!t||!t.store)return 0;const{treeData:We}=t.store.states;let Ge=0;const et=(Pe=We.value[he])==null?void 0:Pe.children;return et&&(Ge+=et.length,et.forEach(zt=>{Ge+=Ie(zt)})),Ge},B=(he,Pe)=>{Array.isArray(he)||(he=[he]);const We={};return he.forEach(Ge=>{C.value[Ge.id]=Pe,We[Ge.columnKey||Ge.id]=Pe}),We},Y=(he,Pe,We)=>{A.value&&A.value!==he&&(A.value.order=null),A.value=he,P.value=Pe,E.value=We},K=()=>{let he=T(a);Object.keys(C.value).forEach(Pe=>{const We=C.value[Pe];if(!We||We.length===0)return;const Ge=jA({columns:u.value},Pe);Ge&&Ge.filterMethod&&(he=he.filter(et=>We.some(zt=>Ge.filterMethod.call(null,zt,et,Ge))))}),M.value=he},Q=()=>{i.value=SV(M.value,{sortingColumn:A.value,sortProp:P.value,sortOrder:E.value})},oe=(he=void 0)=>{he&&he.filter||K(),Q()},pe=he=>{const{tableHeaderRef:Pe}=t.refs;if(!Pe)return;const We=Object.assign({},Pe.filterPanels),Ge=Object.keys(We);if(Ge.length)if(typeof he=="string"&&(he=[he]),Array.isArray(he)){const et=he.map(zt=>hV({columns:u.value},zt));Ge.forEach(zt=>{const gt=et.find(Kt=>Kt.id===zt);gt&&(gt.filteredValue=[])}),t.store.commit("filterChange",{column:et,values:[],silent:!0,multi:!0})}else Ge.forEach(et=>{const zt=u.value.find(gt=>gt.id===et);zt&&(zt.filteredValue=[])}),C.value={},t.store.commit("filterChange",{column:{},values:[],silent:!0})},D=()=>{A.value&&(Y(null,null,null),t.store.commit("changeSortCondition",{silent:!0}))},{setExpandRowKeys:I,toggleRowExpansion:W,updateExpandRows:X,states:j,isRowExpanded:le}=_V({data:i,rowKey:n}),{updateTreeExpandKeys:fe,toggleTreeExpansion:ae,updateTreeData:se,loadOrToggle:ne,states:de}=wV({data:i,rowKey:n}),{updateCurrentRowData:Me,updateCurrentRow:Se,setCurrentRowKey:ke,states:Ve}=bV({data:i,rowKey:n});return{assertRowKey:O,updateColumns:H,scheduleLayout:V,isSelected:U,clearSelection:F,cleanSelection:z,getSelectionRows:ee,toggleRowSelection:J,_toggleAllSelection:me,toggleAllSelection:null,updateSelectionByRowKey:we,updateAllSelected:$e,updateFilters:B,updateCurrentRow:Se,updateSort:Y,execFilter:K,execSort:Q,execQuery:oe,clearFilter:pe,clearSort:D,toggleRowExpansion:W,setExpandRowKeysAdapter:he=>{I(he),fe(he)},setCurrentRowKey:ke,toggleRowExpansionAdapter:(he,Pe)=>{u.value.some(({type:Ge})=>Ge==="expand")?W(he,Pe):ae(he,Pe)},isRowExpanded:le,updateExpandRows:X,updateCurrentRowData:Me,loadOrToggle:ne,updateTreeData:se,states:{tableSize:r,rowKey:n,data:i,_data:a,isComplex:o,_columns:s,originColumns:l,columns:u,fixedColumns:f,rightFixedColumns:c,leafColumns:h,fixedLeafColumns:d,rightFixedLeafColumns:v,updateOrderFns:p,leafColumnsLength:m,fixedLeafColumnsLength:g,rightFixedLeafColumnsLength:y,isAllSelected:_,selection:b,reserveSelection:x,selectOnIndeterminate:w,selectable:S,filters:C,filteredData:M,sortingColumn:A,sortProp:P,sortOrder:E,hoverRow:L,...j,...de,...Ve}}}function Pg(e,t){return e.map(r=>{var n;return r.id===t.id?t:((n=r.children)!=null&&n.length&&(r.children=Pg(r.children,t)),r)})}function Eg(e){e.forEach(t=>{var r,n;t.no=(r=t.getColumnIndex)==null?void 0:r.call(t),(n=t.children)!=null&&n.length&&Eg(t.children)}),e.sort((t,r)=>t.no-r.no)}function CV(){const e=it(),t=xV();return{ns:Oe("table"),...t,mutations:{setData(o,s){const l=T(o._data)!==s;o.data.value=s,o._data.value=s,e.store.execQuery(),e.store.updateCurrentRowData(),e.store.updateExpandRows(),e.store.updateTreeData(e.store.states.defaultExpandAll.value),T(o.reserveSelection)?(e.store.assertRowKey(),e.store.updateSelectionByRowKey()):l?e.store.clearSelection():e.store.cleanSelection(),e.store.updateAllSelected(),e.$ready&&e.store.scheduleLayout()},insertColumn(o,s,l,u){const f=T(o._columns);let c=[];l?(l&&!l.children&&(l.children=[]),l.children.push(s),c=Pg(f,l)):(f.push(s),c=f),Eg(c),o._columns.value=c,o.updateOrderFns.push(u),s.type==="selection"&&(o.selectable.value=s.selectable,o.reserveSelection.value=s.reserveSelection),e.$ready&&(e.store.updateColumns(),e.store.scheduleLayout())},updateColumnOrder(o,s){var l;((l=s.getColumnIndex)==null?void 0:l.call(s))!==s.no&&(Eg(o._columns.value),e.$ready&&e.store.updateColumns())},removeColumn(o,s,l,u){const f=T(o._columns)||[];if(l)l.children.splice(l.children.findIndex(h=>h.id===s.id),1),Nt(()=>{var h;((h=l.children)==null?void 0:h.length)===0&&delete l.children}),o._columns.value=Pg(f,l);else{const h=f.indexOf(s);h>-1&&(f.splice(h,1),o._columns.value=f)}const c=o.updateOrderFns.indexOf(u);c>-1&&o.updateOrderFns.splice(c,1),e.$ready&&(e.store.updateColumns(),e.store.scheduleLayout())},sort(o,s){const{prop:l,order:u,init:f}=s;if(l){const c=T(o.columns).find(h=>h.property===l);c&&(c.order=u,e.store.updateSort(c,l,u),e.store.commit("changeSortCondition",{init:f}))}},changeSortCondition(o,s){const{sortingColumn:l,sortProp:u,sortOrder:f}=o,c=T(l),h=T(u),d=T(f);d===null&&(o.sortingColumn.value=null,o.sortProp.value=null);const v={filter:!0};e.store.execQuery(v),(!s||!(s.silent||s.init))&&e.emit("sort-change",{column:c,prop:h,order:d}),e.store.updateTableScrollY()},filterChange(o,s){const{column:l,values:u,silent:f}=s,c=e.store.updateFilters(l,u);e.store.execQuery(),f||e.emit("filter-change",c),e.store.updateTableScrollY()},toggleAllSelection(){e.store.toggleAllSelection()},rowSelectedChanged(o,s){e.store.toggleRowSelection(s),e.store.updateAllSelected()},setHoverRow(o,s){o.hoverRow.value=s},setCurrentRow(o,s){e.store.updateCurrentRow(s)}},commit:function(o,...s){const l=e.store.mutations;if(l[o])l[o].apply(e,[e.store.states].concat(s));else throw new Error(`Action not found: ${o}`)},updateTableScrollY:function(){Nt(()=>e.layout.updateScrollY.apply(e.layout))}}}const Vl={rowKey:"rowKey",defaultExpandAll:"defaultExpandAll",selectOnIndeterminate:"selectOnIndeterminate",indent:"indent",lazy:"lazy",data:"data","treeProps.hasChildren":{key:"lazyColumnIdentifier",default:"hasChildren"},"treeProps.children":{key:"childrenColumnName",default:"children"}};function TV(e,t){if(!e)throw new Error("Table is required.");const r=CV();return r.toggleAllSelection=hd(r._toggleAllSelection,10),Object.keys(Vl).forEach(n=>{ZA(QA(t,n),n,r)}),MV(r,t),r}function MV(e,t){Object.keys(Vl).forEach(r=>{be(()=>QA(t,r),n=>{ZA(n,r,e)})})}function ZA(e,t,r){let n=e,i=Vl[t];typeof Vl[t]=="object"&&(i=i.key,n=n||Vl[t].default),r.states[i].value=n}function QA(e,t){if(t.includes(".")){const r=t.split(".");let n=e;return r.forEach(i=>{n=n[i]}),n}else return e[t]}class AV{constructor(t){this.observers=[],this.table=null,this.store=null,this.columns=[],this.fit=!0,this.showHeader=!0,this.height=$(null),this.scrollX=$(!1),this.scrollY=$(!1),this.bodyWidth=$(null),this.fixedWidth=$(null),this.rightFixedWidth=$(null),this.gutterWidth=0;for(const r in t)Ue(t,r)&&(Pt(this[r])?this[r].value=t[r]:this[r]=t[r]);if(!this.table)throw new Error("Table is required for Table Layout");if(!this.store)throw new Error("Store is required for Table Layout")}updateScrollY(){if(this.height.value===null)return!1;const r=this.table.refs.scrollBarRef;if(this.table.vnode.el&&(r!=null&&r.wrapRef)){let n=!0;const i=this.scrollY.value;return n=r.wrapRef.scrollHeight>r.wrapRef.clientHeight,this.scrollY.value=n,i!==n}return!1}setHeight(t,r="height"){if(!At)return;const n=this.table.vnode.el;if(t=pV(t),this.height.value=Number(t),!n&&(t||t===0))return Nt(()=>this.setHeight(t,r));typeof t=="number"?(n.style[r]=`${t}px`,this.updateElsHeight()):typeof t=="string"&&(n.style[r]=t,this.updateElsHeight())}setMaxHeight(t){this.setHeight(t,"max-height")}getFlattenColumns(){const t=[];return this.table.store.states.columns.value.forEach(n=>{n.isColumnGroup?t.push.apply(t,n.columns):t.push(n)}),t}updateElsHeight(){this.updateScrollY(),this.notifyObservers("scrollable")}headerDisplayNone(t){if(!t)return!0;let r=t;for(;r.tagName!=="DIV";){if(getComputedStyle(r).display==="none")return!0;r=r.parentElement}return!1}updateColumnsWidth(){if(!At)return;const t=this.fit,r=this.table.vnode.el.clientWidth;let n=0;const i=this.getFlattenColumns(),a=i.filter(l=>typeof l.width!="number");if(i.forEach(l=>{typeof l.width=="number"&&l.realWidth&&(l.realWidth=null)}),a.length>0&&t){if(i.forEach(l=>{n+=Number(l.width||l.minWidth||80)}),n<=r){this.scrollX.value=!1;const l=r-n;if(a.length===1)a[0].realWidth=Number(a[0].minWidth||80)+l;else{const u=a.reduce((h,d)=>h+Number(d.minWidth||80),0),f=l/u;let c=0;a.forEach((h,d)=>{if(d===0)return;const v=Math.floor(Number(h.minWidth||80)*f);c+=v,h.realWidth=Number(h.minWidth||80)+v}),a[0].realWidth=Number(a[0].minWidth||80)+l-c}}else this.scrollX.value=!0,a.forEach(l=>{l.realWidth=Number(l.minWidth)});this.bodyWidth.value=Math.max(n,r),this.table.state.resizeState.value.width=this.bodyWidth.value}else i.forEach(l=>{!l.width&&!l.minWidth?l.realWidth=80:l.realWidth=Number(l.width||l.minWidth),n+=l.realWidth}),this.scrollX.value=n>r,this.bodyWidth.value=n;const o=this.store.states.fixedColumns.value;if(o.length>0){let l=0;o.forEach(u=>{l+=Number(u.realWidth||u.width)}),this.fixedWidth.value=l}const s=this.store.states.rightFixedColumns.value;if(s.length>0){let l=0;s.forEach(u=>{l+=Number(u.realWidth||u.width)}),this.rightFixedWidth.value=l}this.notifyObservers("columns")}addObserver(t){this.observers.push(t)}removeObserver(t){const r=this.observers.indexOf(t);r!==-1&&this.observers.splice(r,1)}notifyObservers(t){this.observers.forEach(n=>{var i,a;switch(t){case"columns":(i=n.state)==null||i.onColumnsChange(this);break;case"scrollable":(a=n.state)==null||a.onScrollableChange(this);break;default:throw new Error(`Table Layout don't have event ${t}.`)}})}}const{CheckboxGroup:PV}=Ms,EV=ie({name:"ElTableFilterPanel",components:{ElCheckbox:Ms,ElCheckboxGroup:PV,ElScrollbar:uA,ElTooltip:Vs,ElIcon:Bt,ArrowDown:EM,ArrowUp:E3},directives:{ClickOutside:CA},props:{placement:{type:String,default:"bottom-start"},store:{type:Object},column:{type:Object},upDataColumn:{type:Function}},setup(e){const t=it(),{t:r}=Hs(),n=Oe("table-filter"),i=t==null?void 0:t.parent;i.filterPanels.value[e.column.id]||(i.filterPanels.value[e.column.id]=t);const a=$(!1),o=$(null),s=k(()=>e.column&&e.column.filters),l=k(()=>e.column.filterClassName?`${n.b()} ${e.column.filterClassName}`:n.b()),u=k({get:()=>{var x;return(((x=e.column)==null?void 0:x.filteredValue)||[])[0]},set:x=>{f.value&&(typeof x<"u"&&x!==null?f.value.splice(0,1,x):f.value.splice(0,1))}}),f=k({get(){return e.column?e.column.filteredValue||[]:[]},set(x){e.column&&e.upDataColumn("filteredValue",x)}}),c=k(()=>e.column?e.column.filterMultiple:!0),h=x=>x.value===u.value,d=()=>{a.value=!1},v=x=>{x.stopPropagation(),a.value=!a.value},p=()=>{a.value=!1},m=()=>{_(f.value),d()},g=()=>{f.value=[],_(f.value),d()},y=x=>{u.value=x,_(typeof x<"u"&&x!==null?f.value:[]),d()},_=x=>{e.store.commit("filterChange",{column:e.column,values:x}),e.store.updateAllSelected()};be(a,x=>{e.column&&e.upDataColumn("filterOpened",x)},{immediate:!0});const b=k(()=>{var x,w;return(w=(x=o.value)==null?void 0:x.popperRef)==null?void 0:w.contentRef});return{tooltipVisible:a,multiple:c,filterClassName:l,filteredValue:f,filterValue:u,filters:s,handleConfirm:m,handleReset:g,handleSelect:y,isActive:h,t:r,ns:n,showFilterPanel:v,hideFilterPanel:p,popperPaneRef:b,tooltip:o}}}),LV={key:0},DV=["disabled"],IV=["label","onClick"];function OV(e,t,r,n,i,a){const o=xr("el-checkbox"),s=xr("el-checkbox-group"),l=xr("el-scrollbar"),u=xr("arrow-up"),f=xr("arrow-down"),c=xr("el-icon"),h=xr("el-tooltip"),d=fT("click-outside");return G(),ve(h,{ref:"tooltip",visible:e.tooltipVisible,offset:0,placement:e.placement,"show-arrow":!1,"stop-popper-mouse-event":!1,teleported:"",effect:"light",pure:"","popper-class":e.filterClassName,persistent:""},{content:q(()=>[e.multiple?(G(),ce("div",LV,[te("div",{class:re(e.ns.e("content"))},[Z(l,{"wrap-class":e.ns.e("wrap")},{default:q(()=>[Z(s,{modelValue:e.filteredValue,"onUpdate:modelValue":t[0]||(t[0]=v=>e.filteredValue=v),class:re(e.ns.e("checkbox-group"))},{default:q(()=>[(G(!0),ce(ft,null,Hp(e.filters,v=>(G(),ve(o,{key:v.value,label:v.value},{default:q(()=>[pt(xe(v.text),1)]),_:2},1032,["label"]))),128))]),_:1},8,["modelValue","class"])]),_:1},8,["wrap-class"])],2),te("div",{class:re(e.ns.e("bottom"))},[te("button",{class:re({[e.ns.is("disabled")]:e.filteredValue.length===0}),disabled:e.filteredValue.length===0,type:"button",onClick:t[1]||(t[1]=(...v)=>e.handleConfirm&&e.handleConfirm(...v))},xe(e.t("el.table.confirmFilter")),11,DV),te("button",{type:"button",onClick:t[2]||(t[2]=(...v)=>e.handleReset&&e.handleReset(...v))},xe(e.t("el.table.resetFilter")),1)],2)])):(G(),ce("ul",{key:1,class:re(e.ns.e("list"))},[te("li",{class:re([e.ns.e("list-item"),{[e.ns.is("active")]:e.filterValue===void 0||e.filterValue===null}]),onClick:t[3]||(t[3]=v=>e.handleSelect(null))},xe(e.t("el.table.clearFilter")),3),(G(!0),ce(ft,null,Hp(e.filters,v=>(G(),ce("li",{key:v.value,class:re([e.ns.e("list-item"),e.ns.is("active",e.isActive(v))]),label:v.value,onClick:p=>e.handleSelect(v.value)},xe(v.text),11,IV))),128))],2))]),default:q(()=>[qt((G(),ce("span",{class:re([`${e.ns.namespace.value}-table__column-filter-trigger`,`${e.ns.namespace.value}-none-outline`]),onClick:t[4]||(t[4]=(...v)=>e.showFilterPanel&&e.showFilterPanel(...v))},[Z(c,null,{default:q(()=>[e.column.filterOpened?(G(),ve(u,{key:0})):(G(),ve(f,{key:1}))]),_:1})],2)),[[d,e.hideFilterPanel,e.popperPaneRef]])]),_:1},8,["visible","placement","popper-class"])}var RV=Ke(EV,[["render",OV],["__file","filter-panel.vue"]]);function JA(e){const t=it();eh(()=>{r.value.addObserver(t)}),_t(()=>{n(r.value),i(r.value)}),Uu(()=>{n(r.value),i(r.value)}),ks(()=>{r.value.removeObserver(t)});const r=k(()=>{const a=e.layout;if(!a)throw new Error("Can not find table layout.");return a}),n=a=>{var o;const s=((o=e.vnode.el)==null?void 0:o.querySelectorAll("colgroup > col"))||[];if(!s.length)return;const l=a.getFlattenColumns(),u={};l.forEach(f=>{u[f.id]=f});for(let f=0,c=s.length;f{var o,s;const l=((o=e.vnode.el)==null?void 0:o.querySelectorAll("colgroup > col[name=gutter]"))||[];for(let f=0,c=l.length;f{p.stopPropagation()},a=(p,m)=>{!m.filters&&m.sortable?v(p,m,!1):m.filterable&&!m.sortable&&i(p),n==null||n.emit("header-click",m,p)},o=(p,m)=>{n==null||n.emit("header-contextmenu",m,p)},s=$(null),l=$(!1),u=$({}),f=(p,m)=>{if(At&&!(m.children&&m.children.length>0)&&s.value&&e.border){l.value=!0;const g=n;t("set-drag-visible",!0);const _=(g==null?void 0:g.vnode.el).getBoundingClientRect().left,b=r.vnode.el.querySelector(`th.${m.id}`),x=b.getBoundingClientRect(),w=x.left-_+30;Za(b,"noclick"),u.value={startMouseLeft:p.clientX,startLeft:x.right-_,startColumnLeft:x.left-_,tableLeft:_};const S=g==null?void 0:g.refs.resizeProxy;S.style.left=`${u.value.startLeft}px`,document.onselectstart=function(){return!1},document.ondragstart=function(){return!1};const C=A=>{const P=A.clientX-u.value.startMouseLeft,E=u.value.startLeft+P;S.style.left=`${Math.max(w,E)}px`},M=()=>{if(l.value){const{startColumnLeft:A,startLeft:P}=u.value,L=Number.parseInt(S.style.left,10)-A;m.width=m.realWidth=L,g==null||g.emit("header-dragend",m.width,P-A,m,p),requestAnimationFrame(()=>{e.store.scheduleLayout(!1,!0)}),document.body.style.cursor="",l.value=!1,s.value=null,u.value={},t("set-drag-visible",!1)}document.removeEventListener("mousemove",C),document.removeEventListener("mouseup",M),document.onselectstart=null,document.ondragstart=null,setTimeout(()=>{so(b,"noclick")},0)};document.addEventListener("mousemove",C),document.addEventListener("mouseup",M)}},c=(p,m)=>{if(m.children&&m.children.length>0)return;const g=p.target;if(!mo(g))return;const y=g==null?void 0:g.closest("th");if(!(!m||!m.resizable)&&!l.value&&e.border){const _=y.getBoundingClientRect(),b=document.body.style;_.width>12&&_.right-p.pageX<8?(b.cursor="col-resize",oo(y,"is-sortable")&&(y.style.cursor="col-resize"),s.value=m):l.value||(b.cursor="",oo(y,"is-sortable")&&(y.style.cursor="pointer"),s.value=null)}},h=()=>{At&&(document.body.style.cursor="")},d=({order:p,sortOrders:m})=>{if(p==="")return m[0];const g=m.indexOf(p||null);return m[g>m.length-2?0:g+1]},v=(p,m,g)=>{var y;p.stopPropagation();const _=m.order===g?null:g||d(m),b=(y=p.target)==null?void 0:y.closest("th");if(b&&oo(b,"noclick")){so(b,"noclick");return}if(!m.sortable)return;const x=e.store.states;let w=x.sortProp.value,S;const C=x.sortingColumn.value;(C!==m||C===m&&C.order===null)&&(C&&(C.order=null),x.sortingColumn.value=m,w=m.property),_?S=m.order=_:S=m.order=null,x.sortProp.value=w,x.sortOrder.value=S,n==null||n.store.commit("changeSortCondition")};return{handleHeaderClick:a,handleHeaderContextMenu:o,handleMouseDown:f,handleMouseMove:c,handleMouseOut:h,handleSortClick:v,handleFilterClick:i}}function NV(e){const t=Le(ri),r=Oe("table");return{getHeaderRowStyle:s=>{const l=t==null?void 0:t.props.headerRowStyle;return typeof l=="function"?l.call(null,{rowIndex:s}):l},getHeaderRowClass:s=>{const l=[],u=t==null?void 0:t.props.headerRowClassName;return typeof u=="string"?l.push(u):typeof u=="function"&&l.push(u.call(null,{rowIndex:s})),l.join(" ")},getHeaderCellStyle:(s,l,u,f)=>{var c;let h=(c=t==null?void 0:t.props.headerCellStyle)!=null?c:{};typeof h=="function"&&(h=h.call(null,{rowIndex:s,columnIndex:l,row:u,column:f}));const d=Xy(l,f.fixed,e.store,u);return As(d,"left"),As(d,"right"),Object.assign({},h,d)},getHeaderCellClass:(s,l,u,f)=>{const c=Ky(r.b(),l,f.fixed,e.store,u),h=[f.id,f.order,f.headerAlign,f.className,f.labelClassName,...c];f.children||h.push("is-leaf"),f.sortable&&h.push("is-sortable");const d=t==null?void 0:t.props.headerCellClassName;return typeof d=="string"?h.push(d):typeof d=="function"&&h.push(d.call(null,{rowIndex:s,columnIndex:l,row:u,column:f})),h.push(r.e("cell")),h.filter(v=>!!v).join(" ")}}}const e2=e=>{const t=[];return e.forEach(r=>{r.children?(t.push(r),t.push.apply(t,e2(r.children))):t.push(r)}),t},BV=e=>{let t=1;const r=(a,o)=>{if(o&&(a.level=o.level+1,t{r(l,a),s+=l.colSpan}),a.colSpan=s}else a.colSpan=1};e.forEach(a=>{a.level=1,r(a,void 0)});const n=[];for(let a=0;a{a.children?(a.rowSpan=1,a.children.forEach(o=>o.isSubColumn=!0)):a.rowSpan=t-a.level+1,n[a.level-1].push(a)}),n};function FV(e){const t=Le(ri),r=k(()=>BV(e.store.states.originColumns.value));return{isGroup:k(()=>{const a=r.value.length>1;return a&&t&&(t.state.isGroup.value=!0),a}),toggleAllSelection:a=>{a.stopPropagation(),t==null||t.store.commit("toggleAllSelection")},columnRows:r}}var $V=ie({name:"ElTableHeader",components:{ElCheckbox:Ms},props:{fixed:{type:String,default:""},store:{required:!0,type:Object},border:Boolean,defaultSort:{type:Object,default:()=>({prop:"",order:""})}},setup(e,{emit:t}){const r=it(),n=Le(ri),i=Oe("table"),a=$({}),{onColumnsChange:o,onScrollableChange:s}=JA(n);_t(async()=>{await Nt(),await Nt();const{prop:w,order:S}=e.defaultSort;n==null||n.store.commit("sort",{prop:w,order:S,init:!0})});const{handleHeaderClick:l,handleHeaderContextMenu:u,handleMouseDown:f,handleMouseMove:c,handleMouseOut:h,handleSortClick:d,handleFilterClick:v}=kV(e,t),{getHeaderRowStyle:p,getHeaderRowClass:m,getHeaderCellStyle:g,getHeaderCellClass:y}=NV(e),{isGroup:_,toggleAllSelection:b,columnRows:x}=FV(e);return r.state={onColumnsChange:o,onScrollableChange:s},r.filterPanels=a,{ns:i,filterPanels:a,onColumnsChange:o,onScrollableChange:s,columnRows:x,getHeaderRowClass:m,getHeaderRowStyle:p,getHeaderCellClass:y,getHeaderCellStyle:g,handleHeaderClick:l,handleHeaderContextMenu:u,handleMouseDown:f,handleMouseMove:c,handleMouseOut:h,handleSortClick:d,handleFilterClick:v,isGroup:_,toggleAllSelection:b}},render(){const{ns:e,isGroup:t,columnRows:r,getHeaderCellStyle:n,getHeaderCellClass:i,getHeaderRowClass:a,getHeaderRowStyle:o,handleHeaderClick:s,handleHeaderContextMenu:l,handleMouseDown:u,handleMouseMove:f,handleSortClick:c,handleMouseOut:h,store:d,$parent:v}=this;let p=1;return Te("thead",{class:{[e.is("group")]:t}},r.map((m,g)=>Te("tr",{class:a(g),key:g,style:o(g)},m.map((y,_)=>(y.rowSpan>p&&(p=y.rowSpan),Te("th",{class:i(g,_,m,y),colspan:y.colSpan,key:`${y.id}-thead`,rowspan:y.rowSpan,style:n(g,_,m,y),onClick:b=>s(b,y),onContextmenu:b=>l(b,y),onMousedown:b=>u(b,y),onMousemove:b=>f(b,y),onMouseout:h},[Te("div",{class:["cell",y.filteredValue&&y.filteredValue.length>0?"highlight":""]},[y.renderHeader?y.renderHeader({column:y,$index:_,store:d,_self:v}):y.label,y.sortable&&Te("span",{onClick:b=>c(b,y),class:"caret-wrapper"},[Te("i",{onClick:b=>c(b,y,"ascending"),class:"sort-caret ascending"}),Te("i",{onClick:b=>c(b,y,"descending"),class:"sort-caret descending"})]),y.filterable&&Te(RV,{store:d,placement:y.filterPlacement||"bottom-start",column:y,upDataColumn:(b,x)=>{y[b]=x}})])]))))))}});function HV(e){const t=Le(ri),r=$(""),n=$(Te("div")),i=(d,v,p)=>{var m;const g=t,y=cv(d);let _;const b=(m=g==null?void 0:g.vnode.el)==null?void 0:m.dataset.prefix;y&&(_=L1({columns:e.store.states.columns.value},y,b),_&&(g==null||g.emit(`cell-${p}`,v,_,y,d))),g==null||g.emit(`row-${p}`,v,_,d)},a=(d,v)=>{i(d,v,"dblclick")},o=(d,v)=>{e.store.commit("setCurrentRow",v),i(d,v,"click")},s=(d,v)=>{i(d,v,"contextmenu")},l=hd(d=>{e.store.commit("setHoverRow",d)},30),u=hd(()=>{e.store.commit("setHoverRow",null)},30),f=d=>{const v=window.getComputedStyle(d,null),p=Number.parseInt(v.paddingLeft,10)||0,m=Number.parseInt(v.paddingRight,10)||0,g=Number.parseInt(v.paddingTop,10)||0,y=Number.parseInt(v.paddingBottom,10)||0;return{left:p,right:m,top:g,bottom:y}};return{handleDoubleClick:a,handleClick:o,handleContextMenu:s,handleMouseEnter:l,handleMouseLeave:u,handleCellMouseEnter:(d,v,p)=>{var m;const g=t,y=cv(d),_=(m=g==null?void 0:g.vnode.el)==null?void 0:m.dataset.prefix;if(y){const H=L1({columns:e.store.states.columns.value},y,_),V=g.hoverState={cell:y,column:H,row:v};g==null||g.emit("cell-mouse-enter",V.row,V.column,V.cell,d)}if(!p)return;const b=d.target.querySelector(".cell");if(!(oo(b,`${_}-tooltip`)&&b.childNodes.length))return;const x=document.createRange();x.setStart(b,0),x.setEnd(b,b.childNodes.length);let w=x.getBoundingClientRect().width,S=x.getBoundingClientRect().height;w-Math.floor(w)<.001&&(w=Math.floor(w)),S-Math.floor(S)<.001&&(S=Math.floor(S));const{top:A,left:P,right:E,bottom:L}=f(b),O=P+E,N=A+L;(w+O>b.offsetWidth||S+N>b.offsetHeight||b.scrollWidth>b.offsetWidth)&&yV(p,y.innerText||y.textContent,y,g)},handleCellMouseLeave:d=>{if(!cv(d))return;const p=t==null?void 0:t.hoverState;t==null||t.emit("cell-mouse-leave",p==null?void 0:p.row,p==null?void 0:p.column,p==null?void 0:p.cell,d)},tooltipContent:r,tooltipTrigger:n}}function zV(e){const t=Le(ri),r=Oe("table");return{getRowStyle:(u,f)=>{const c=t==null?void 0:t.props.rowStyle;return typeof c=="function"?c.call(null,{row:u,rowIndex:f}):c||null},getRowClass:(u,f)=>{const c=[r.e("row")];t!=null&&t.props.highlightCurrentRow&&u===e.store.states.currentRow.value&&c.push("current-row"),e.stripe&&f%2===1&&c.push(r.em("row","striped"));const h=t==null?void 0:t.props.rowClassName;return typeof h=="string"?c.push(h):typeof h=="function"&&c.push(h.call(null,{row:u,rowIndex:f})),c},getCellStyle:(u,f,c,h)=>{const d=t==null?void 0:t.props.cellStyle;let v=d??{};typeof d=="function"&&(v=d.call(null,{rowIndex:u,columnIndex:f,row:c,column:h}));const p=Xy(f,e==null?void 0:e.fixed,e.store);return As(p,"left"),As(p,"right"),Object.assign({},v,p)},getCellClass:(u,f,c,h,d)=>{const v=Ky(r.b(),f,e==null?void 0:e.fixed,e.store,void 0,d),p=[h.id,h.align,h.className,...v],m=t==null?void 0:t.props.cellClassName;return typeof m=="string"?p.push(m):typeof m=="function"&&p.push(m.call(null,{rowIndex:u,columnIndex:f,row:c,column:h})),p.push(r.e("cell")),p.filter(g=>!!g).join(" ")},getSpan:(u,f,c,h)=>{let d=1,v=1;const p=t==null?void 0:t.props.spanMethod;if(typeof p=="function"){const m=p({row:u,column:f,rowIndex:c,columnIndex:h});Array.isArray(m)?(d=m[0],v=m[1]):typeof m=="object"&&(d=m.rowspan,v=m.colspan)}return{rowspan:d,colspan:v}},getColspanRealWidth:(u,f,c)=>{if(f<1)return u[c].realWidth;const h=u.map(({realWidth:d,width:v})=>d||v).slice(c,c+f);return Number(h.reduce((d,v)=>Number(d)+Number(v),-1))}}}function VV(e){const t=Le(ri),r=Oe("table"),{handleDoubleClick:n,handleClick:i,handleContextMenu:a,handleMouseEnter:o,handleMouseLeave:s,handleCellMouseEnter:l,handleCellMouseLeave:u,tooltipContent:f,tooltipTrigger:c}=HV(e),{getRowStyle:h,getRowClass:d,getCellStyle:v,getCellClass:p,getSpan:m,getColspanRealWidth:g}=zV(e),y=k(()=>e.store.states.columns.value.findIndex(({type:S})=>S==="default")),_=(S,C)=>{const M=t.props.rowKey;return M?Jt(S,M):C},b=(S,C,M,A=!1)=>{const{tooltipEffect:P,tooltipOptions:E,store:L}=e,{indent:O,columns:N}=L.states,H=d(S,C);let V=!0;return M&&(H.push(r.em("row",`level-${M.level}`)),V=M.display),Te("tr",{style:[V?null:{display:"none"},h(S,C)],class:H,key:_(S,C),onDblclick:F=>n(F,S),onClick:F=>i(F,S),onContextmenu:F=>a(F,S),onMouseenter:()=>o(C),onMouseleave:s},N.value.map((F,z)=>{const{rowspan:ee,colspan:J}=m(S,F,C,z);if(!ee||!J)return null;const me=Object.assign({},F);me.realWidth=g(N.value,J,z);const we={store:e.store,_self:e.context||t,column:me,row:S,$index:C,cellIndex:z,expanded:A};z===y.value&&M&&(we.treeNode={indent:M.level*O.value,level:M.level},typeof M.expanded=="boolean"&&(we.treeNode.expanded=M.expanded,"loading"in M&&(we.treeNode.loading=M.loading),"noLazyChildren"in M&&(we.treeNode.noLazyChildren=M.noLazyChildren)));const $e=`${C},${z}`,Ie=me.columnKey||me.rawColumnKey||"",B=x(z,F,we),Y=F.showOverflowTooltip&&m3({effect:P},E,F.showOverflowTooltip);return Te("td",{style:v(C,z,S,F),class:p(C,z,S,F,J-1),key:`${Ie}${$e}`,rowspan:ee,colspan:J,onMouseenter:K=>l(K,S,Y),onMouseleave:u},[B])}))},x=(S,C,M)=>C.renderCell(M);return{wrappedRowRender:(S,C)=>{const M=e.store,{isRowExpanded:A,assertRowKey:P}=M,{treeData:E,lazyTreeNodeMap:L,childrenColumnName:O,rowKey:N}=M.states,H=M.states.columns.value;if(H.some(({type:U})=>U==="expand")){const U=A(S),F=b(S,C,void 0,U),z=t.renderExpanded;return U?z?[[F,Te("tr",{key:`expanded-row__${F.key}`},[Te("td",{colspan:H.length,class:`${r.e("cell")} ${r.e("expanded-cell")}`},[z({row:S,$index:C,store:M,expanded:U})])])]]:(console.error("[Element Error]renderExpanded is required."),F):[[F]]}else if(Object.keys(E.value).length){P();const U=Jt(S,N.value);let F=E.value[U],z=null;F&&(z={expanded:F.expanded,level:F.level,display:!0},typeof F.lazy=="boolean"&&(typeof F.loaded=="boolean"&&F.loaded&&(z.noLazyChildren=!(F.children&&F.children.length)),z.loading=F.loading));const ee=[b(S,C,z)];if(F){let J=0;const me=($e,Ie)=>{$e&&$e.length&&Ie&&$e.forEach(B=>{const Y={display:Ie.display&&Ie.expanded,level:Ie.level+1,expanded:!1,noLazyChildren:!1,loading:!1},K=Jt(B,N.value);if(K==null)throw new Error("For nested data item, row-key is required.");if(F={...E.value[K]},F&&(Y.expanded=F.expanded,F.level=F.level||Y.level,F.display=!!(F.expanded&&Y.display),typeof F.lazy=="boolean"&&(typeof F.loaded=="boolean"&&F.loaded&&(Y.noLazyChildren=!(F.children&&F.children.length)),Y.loading=F.loading)),J++,ee.push(b(B,C+J,Y)),F){const Q=L.value[K]||B[O.value];me(Q,F)}})};F.display=!0;const we=L.value[U]||S[O.value];me(we,F)}return ee}else return b(S,C,void 0)},tooltipContent:f,tooltipTrigger:c}}const WV={store:{required:!0,type:Object},stripe:Boolean,tooltipEffect:String,tooltipOptions:{type:Object},context:{default:()=>({}),type:Object},rowClassName:[String,Function],rowStyle:[Object,Function],fixed:{type:String,default:""},highlight:Boolean};var GV=ie({name:"ElTableBody",props:WV,setup(e){const t=it(),r=Le(ri),n=Oe("table"),{wrappedRowRender:i,tooltipContent:a,tooltipTrigger:o}=VV(e),{onColumnsChange:s,onScrollableChange:l}=JA(r);return be(e.store.states.hoverRow,(u,f)=>{!e.store.states.isComplex.value||!At||q3(()=>{const c=t==null?void 0:t.vnode.el,h=Array.from((c==null?void 0:c.children)||[]).filter(p=>p==null?void 0:p.classList.contains(`${n.e("row")}`)),d=h[f],v=h[u];d&&so(d,"hover-row"),v&&Za(v,"hover-row")})}),ks(()=>{var u;(u=Xr)==null||u()}),{ns:n,onColumnsChange:s,onScrollableChange:l,wrappedRowRender:i,tooltipContent:a,tooltipTrigger:o}},render(){const{wrappedRowRender:e,store:t}=this,r=t.states.data.value||[];return Te("tbody",{tabIndex:-1},[r.reduce((n,i)=>n.concat(e(i,n.length)),[])])}});function UV(){const e=Le(ri),t=e==null?void 0:e.store,r=k(()=>t.states.fixedLeafColumnsLength.value),n=k(()=>t.states.rightFixedColumns.value.length),i=k(()=>t.states.columns.value.length),a=k(()=>t.states.fixedColumns.value.length),o=k(()=>t.states.rightFixedColumns.value.length);return{leftFixedLeafCount:r,rightFixedLeafCount:n,columnsCount:i,leftFixedCount:a,rightFixedCount:o,columns:t.states.columns}}function YV(e){const{columns:t}=UV(),r=Oe("table");return{getCellClasses:(a,o)=>{const s=a[o],l=[r.e("cell"),s.id,s.align,s.labelClassName,...Ky(r.b(),o,s.fixed,e.store)];return s.className&&l.push(s.className),s.children||l.push(r.is("leaf")),l},getCellStyles:(a,o)=>{const s=Xy(o,a.fixed,e.store);return As(s,"left"),As(s,"right"),s},columns:t}}var jV=ie({name:"ElTableFooter",props:{fixed:{type:String,default:""},store:{required:!0,type:Object},summaryMethod:Function,sumText:String,border:Boolean,defaultSort:{type:Object,default:()=>({prop:"",order:""})}},setup(e){const{getCellClasses:t,getCellStyles:r,columns:n}=YV(e);return{ns:Oe("table"),getCellClasses:t,getCellStyles:r,columns:n}},render(){const{columns:e,getCellStyles:t,getCellClasses:r,summaryMethod:n,sumText:i}=this,a=this.store.states.data.value;let o=[];return n?o=n({columns:e,data:a}):e.forEach((s,l)=>{if(l===0){o[l]=i;return}const u=a.map(d=>Number(d[s.property])),f=[];let c=!0;u.forEach(d=>{if(!Number.isNaN(+d)){c=!1;const v=`${d}`.split(".")[1];f.push(v?v.length:0)}});const h=Math.max.apply(null,f);c?o[l]="":o[l]=u.reduce((d,v)=>{const p=Number(v);return Number.isNaN(+p)?d:Number.parseFloat((d+v).toFixed(Math.min(h,20)))},0)}),Te(Te("tfoot",[Te("tr",{},[...e.map((s,l)=>Te("td",{key:l,colspan:s.colSpan,rowspan:s.rowSpan,class:r(e,l),style:t(s,l)},[Te("div",{class:["cell",s.labelClassName]},[o[l]])]))])]))}});function qV(e){return{setCurrentRow:f=>{e.commit("setCurrentRow",f)},getSelectionRows:()=>e.getSelectionRows(),toggleRowSelection:(f,c)=>{e.toggleRowSelection(f,c,!1),e.updateAllSelected()},clearSelection:()=>{e.clearSelection()},clearFilter:f=>{e.clearFilter(f)},toggleAllSelection:()=>{e.commit("toggleAllSelection")},toggleRowExpansion:(f,c)=>{e.toggleRowExpansionAdapter(f,c)},clearSort:()=>{e.clearSort()},sort:(f,c)=>{e.commit("sort",{prop:f,order:c})}}}function KV(e,t,r,n){const i=$(!1),a=$(null),o=$(!1),s=F=>{o.value=F},l=$({width:null,height:null,headerHeight:null}),u=$(!1),f={display:"inline-block",verticalAlign:"middle"},c=$(),h=$(0),d=$(0),v=$(0),p=$(0),m=$(0);na(()=>{t.setHeight(e.height)}),na(()=>{t.setMaxHeight(e.maxHeight)}),be(()=>[e.currentRowKey,r.states.rowKey],([F,z])=>{!T(z)||!T(F)||r.setCurrentRowKey(`${F}`)},{immediate:!0}),be(()=>e.data,F=>{n.store.commit("setData",F)},{immediate:!0,deep:!0}),na(()=>{e.expandRowKeys&&r.setExpandRowKeysAdapter(e.expandRowKeys)});const g=()=>{n.store.commit("setHoverRow",null),n.hoverState&&(n.hoverState=null)},y=(F,z)=>{const{pixelX:ee,pixelY:J}=z;Math.abs(ee)>=Math.abs(J)&&(n.refs.bodyWrapper.scrollLeft+=z.pixelX/5)},_=k(()=>e.height||e.maxHeight||r.states.fixedColumns.value.length>0||r.states.rightFixedColumns.value.length>0),b=k(()=>({width:t.bodyWidth.value?`${t.bodyWidth.value}px`:""})),x=()=>{_.value&&t.updateElsHeight(),t.updateColumnsWidth(),requestAnimationFrame(M)};_t(async()=>{await Nt(),r.updateColumns(),A(),requestAnimationFrame(x);const F=n.vnode.el,z=n.refs.headerWrapper;e.flexible&&F&&F.parentElement&&(F.parentElement.style.minWidth="0"),l.value={width:c.value=F.offsetWidth,height:F.offsetHeight,headerHeight:e.showHeader&&z?z.offsetHeight:null},r.states.columns.value.forEach(ee=>{ee.filteredValue&&ee.filteredValue.length&&n.store.commit("filterChange",{column:ee,values:ee.filteredValue,silent:!0})}),n.$ready=!0});const w=(F,z)=>{if(!F)return;const ee=Array.from(F.classList).filter(J=>!J.startsWith("is-scrolling-"));ee.push(t.scrollX.value?z:"is-scrolling-none"),F.className=ee.join(" ")},S=F=>{const{tableWrapper:z}=n.refs;w(z,F)},C=F=>{const{tableWrapper:z}=n.refs;return!!(z&&z.classList.contains(F))},M=function(){if(!n.refs.scrollBarRef)return;if(!t.scrollX.value){const Ie="is-scrolling-none";C(Ie)||S(Ie);return}const F=n.refs.scrollBarRef.wrapRef;if(!F)return;const{scrollLeft:z,offsetWidth:ee,scrollWidth:J}=F,{headerWrapper:me,footerWrapper:we}=n.refs;me&&(me.scrollLeft=z),we&&(we.scrollLeft=z);const $e=J-ee-1;z>=$e?S("is-scrolling-right"):S(z===0?"is-scrolling-left":"is-scrolling-middle")},A=()=>{n.refs.scrollBarRef&&(n.refs.scrollBarRef.wrapRef&&xn(n.refs.scrollBarRef.wrapRef,"scroll",M,{passive:!0}),e.fit?ms(n.vnode.el,P):xn(window,"resize",P),ms(n.refs.bodyWrapper,()=>{var F,z;P(),(z=(F=n.refs)==null?void 0:F.scrollBarRef)==null||z.update()}))},P=()=>{var F,z,ee,J;const me=n.vnode.el;if(!n.$ready||!me)return;let we=!1;const{width:$e,height:Ie,headerHeight:B}=l.value,Y=c.value=me.offsetWidth;$e!==Y&&(we=!0);const K=me.offsetHeight;(e.height||_.value)&&Ie!==K&&(we=!0);const Q=e.tableLayout==="fixed"?n.refs.headerWrapper:(F=n.refs.tableHeaderRef)==null?void 0:F.$el;e.showHeader&&(Q==null?void 0:Q.offsetHeight)!==B&&(we=!0),h.value=((z=n.refs.tableWrapper)==null?void 0:z.scrollHeight)||0,v.value=(Q==null?void 0:Q.scrollHeight)||0,p.value=((ee=n.refs.footerWrapper)==null?void 0:ee.offsetHeight)||0,m.value=((J=n.refs.appendWrapper)==null?void 0:J.offsetHeight)||0,d.value=h.value-v.value-p.value-m.value,we&&(l.value={width:Y,height:K,headerHeight:e.showHeader&&(Q==null?void 0:Q.offsetHeight)||0},x())},E=xi(),L=k(()=>{const{bodyWidth:F,scrollY:z,gutterWidth:ee}=t;return F.value?`${F.value-(z.value?ee:0)}px`:""}),O=k(()=>e.maxHeight?"fixed":e.tableLayout),N=k(()=>{if(e.data&&e.data.length)return null;let F="100%";e.height&&d.value&&(F=`${d.value}px`);const z=c.value;return{width:z?`${z}px`:"",height:F}}),H=k(()=>e.height?{height:Number.isNaN(Number(e.height))?e.height:`${e.height}px`}:e.maxHeight?{maxHeight:Number.isNaN(Number(e.maxHeight))?e.maxHeight:`${e.maxHeight}px`}:{}),V=k(()=>e.height?{height:"100%"}:e.maxHeight?Number.isNaN(Number(e.maxHeight))?{maxHeight:`calc(${e.maxHeight} - ${v.value+p.value}px)`}:{maxHeight:`${e.maxHeight-v.value-p.value}px`}:{});return{isHidden:i,renderExpanded:a,setDragVisible:s,isGroup:u,handleMouseLeave:g,handleHeaderFooterMousewheel:y,tableSize:E,emptyBlockStyle:N,handleFixedMousewheel:(F,z)=>{const ee=n.refs.bodyWrapper;if(Math.abs(z.spinY)>0){const J=ee.scrollTop;z.pixelY<0&&J!==0&&F.preventDefault(),z.pixelY>0&&ee.scrollHeight-ee.clientHeight>J&&F.preventDefault(),ee.scrollTop+=Math.ceil(z.pixelY/5)}else ee.scrollLeft+=Math.ceil(z.pixelX/5)},resizeProxyVisible:o,bodyWidth:L,resizeState:l,doLayout:x,tableBodyStyles:b,tableLayout:O,scrollbarViewStyle:f,tableInnerStyle:H,scrollbarStyle:V}}function XV(e){const t=$(),r=()=>{const i=e.vnode.el.querySelector(".hidden-columns"),a={childList:!0,subtree:!0},o=e.store.states.updateOrderFns;t.value=new MutationObserver(()=>{o.forEach(s=>s())}),t.value.observe(i,a)};_t(()=>{r()}),ks(()=>{var n;(n=t.value)==null||n.disconnect()})}var ZV={data:{type:Array,default:()=>[]},size:dh,width:[String,Number],height:[String,Number],maxHeight:[String,Number],fit:{type:Boolean,default:!0},stripe:Boolean,border:Boolean,rowKey:[String,Function],showHeader:{type:Boolean,default:!0},showSummary:Boolean,sumText:String,summaryMethod:Function,rowClassName:[String,Function],rowStyle:[Object,Function],cellClassName:[String,Function],cellStyle:[Object,Function],headerRowClassName:[String,Function],headerRowStyle:[Object,Function],headerCellClassName:[String,Function],headerCellStyle:[Object,Function],highlightCurrentRow:Boolean,currentRowKey:[String,Number],emptyText:String,expandRowKeys:Array,defaultExpandAll:Boolean,defaultSort:Object,tooltipEffect:String,tooltipOptions:Object,spanMethod:Function,selectOnIndeterminate:{type:Boolean,default:!0},indent:{type:Number,default:16},treeProps:{type:Object,default:()=>({hasChildren:"hasChildren",children:"children"})},lazy:Boolean,load:Function,style:{type:Object,default:()=>({})},className:{type:String,default:""},tableLayout:{type:String,default:"fixed"},scrollbarAlwaysOn:{type:Boolean,default:!1},flexible:Boolean,showOverflowTooltip:[Boolean,Object]};function t2(e){const t=e.tableLayout==="auto";let r=e.columns||[];t&&r.every(i=>i.width===void 0)&&(r=[]);const n=i=>{const a={key:`${e.tableLayout}_${i.id}`,style:{},name:void 0};return t?a.style={width:`${i.width}px`}:a.name=i.id,a};return Te("colgroup",{},r.map(i=>Te("col",n(i))))}t2.props=["columns","tableLayout"];const QV=()=>{const e=$(),t=(a,o)=>{const s=e.value;s&&s.scrollTo(a,o)},r=(a,o)=>{const s=e.value;s&&kt(o)&&["Top","Left"].includes(a)&&s[`setScroll${a}`](o)};return{scrollBarRef:e,scrollTo:t,setScrollTop:a=>r("Top",a),setScrollLeft:a=>r("Left",a)}};let JV=1;const eW=ie({name:"ElTable",directives:{Mousewheel:d8},components:{TableHeader:$V,TableBody:GV,TableFooter:jV,ElScrollbar:uA,hColgroup:t2},props:ZV,emits:["select","select-all","selection-change","cell-mouse-enter","cell-mouse-leave","cell-contextmenu","cell-click","cell-dblclick","row-click","row-contextmenu","row-dblclick","header-click","header-contextmenu","sort-change","filter-change","current-change","header-dragend","expand-change"],setup(e){const{t}=Hs(),r=Oe("table"),n=it();Dt(ri,n);const i=TV(n,e);n.store=i;const a=new AV({store:n.store,table:n,fit:e.fit,showHeader:e.showHeader});n.layout=a;const o=k(()=>(i.states.data.value||[]).length===0),{setCurrentRow:s,getSelectionRows:l,toggleRowSelection:u,clearSelection:f,clearFilter:c,toggleAllSelection:h,toggleRowExpansion:d,clearSort:v,sort:p}=qV(i),{isHidden:m,renderExpanded:g,setDragVisible:y,isGroup:_,handleMouseLeave:b,handleHeaderFooterMousewheel:x,tableSize:w,emptyBlockStyle:S,handleFixedMousewheel:C,resizeProxyVisible:M,bodyWidth:A,resizeState:P,doLayout:E,tableBodyStyles:L,tableLayout:O,scrollbarViewStyle:N,tableInnerStyle:H,scrollbarStyle:V}=KV(e,a,i,n),{scrollBarRef:U,scrollTo:F,setScrollLeft:z,setScrollTop:ee}=QV(),J=hd(E,50),me=`${r.namespace.value}-table_${JV++}`;n.tableId=me,n.state={isGroup:_,resizeState:P,doLayout:E,debouncedUpdateLayout:J};const we=k(()=>e.sumText||t("el.table.sumText")),$e=k(()=>e.emptyText||t("el.table.emptyText"));return XV(n),{ns:r,layout:a,store:i,handleHeaderFooterMousewheel:x,handleMouseLeave:b,tableId:me,tableSize:w,isHidden:m,isEmpty:o,renderExpanded:g,resizeProxyVisible:M,resizeState:P,isGroup:_,bodyWidth:A,tableBodyStyles:L,emptyBlockStyle:S,debouncedUpdateLayout:J,handleFixedMousewheel:C,setCurrentRow:s,getSelectionRows:l,toggleRowSelection:u,clearSelection:f,clearFilter:c,toggleAllSelection:h,toggleRowExpansion:d,clearSort:v,doLayout:E,sort:p,t,setDragVisible:y,context:n,computedSumText:we,computedEmptyText:$e,tableLayout:O,scrollbarViewStyle:N,tableInnerStyle:H,scrollbarStyle:V,scrollBarRef:U,scrollTo:F,setScrollLeft:z,setScrollTop:ee}}}),tW=["data-prefix"],rW={ref:"hiddenColumns",class:"hidden-columns"};function nW(e,t,r,n,i,a){const o=xr("hColgroup"),s=xr("table-header"),l=xr("table-body"),u=xr("table-footer"),f=xr("el-scrollbar"),c=fT("mousewheel");return G(),ce("div",{ref:"tableWrapper",class:re([{[e.ns.m("fit")]:e.fit,[e.ns.m("striped")]:e.stripe,[e.ns.m("border")]:e.border||e.isGroup,[e.ns.m("hidden")]:e.isHidden,[e.ns.m("group")]:e.isGroup,[e.ns.m("fluid-height")]:e.maxHeight,[e.ns.m("scrollable-x")]:e.layout.scrollX.value,[e.ns.m("scrollable-y")]:e.layout.scrollY.value,[e.ns.m("enable-row-hover")]:!e.store.states.isComplex.value,[e.ns.m("enable-row-transition")]:(e.store.states.data.value||[]).length!==0&&(e.store.states.data.value||[]).length<100,"has-footer":e.showSummary},e.ns.m(e.tableSize),e.className,e.ns.b(),e.ns.m(`layout-${e.tableLayout}`)]),style:ct(e.style),"data-prefix":e.ns.namespace.value,onMouseleave:t[0]||(t[0]=(...h)=>e.handleMouseLeave&&e.handleMouseLeave(...h))},[te("div",{class:re(e.ns.e("inner-wrapper")),style:ct(e.tableInnerStyle)},[te("div",rW,[Ce(e.$slots,"default")],512),e.showHeader&&e.tableLayout==="fixed"?qt((G(),ce("div",{key:0,ref:"headerWrapper",class:re(e.ns.e("header-wrapper"))},[te("table",{ref:"tableHeader",class:re(e.ns.e("header")),style:ct(e.tableBodyStyles),border:"0",cellpadding:"0",cellspacing:"0"},[Z(o,{columns:e.store.states.columns.value,"table-layout":e.tableLayout},null,8,["columns","table-layout"]),Z(s,{ref:"tableHeaderRef",border:e.border,"default-sort":e.defaultSort,store:e.store,onSetDragVisible:e.setDragVisible},null,8,["border","default-sort","store","onSetDragVisible"])],6)],2)),[[c,e.handleHeaderFooterMousewheel]]):Ae("v-if",!0),te("div",{ref:"bodyWrapper",class:re(e.ns.e("body-wrapper"))},[Z(f,{ref:"scrollBarRef","view-style":e.scrollbarViewStyle,"wrap-style":e.scrollbarStyle,always:e.scrollbarAlwaysOn},{default:q(()=>[te("table",{ref:"tableBody",class:re(e.ns.e("body")),cellspacing:"0",cellpadding:"0",border:"0",style:ct({width:e.bodyWidth,tableLayout:e.tableLayout})},[Z(o,{columns:e.store.states.columns.value,"table-layout":e.tableLayout},null,8,["columns","table-layout"]),e.showHeader&&e.tableLayout==="auto"?(G(),ve(s,{key:0,ref:"tableHeaderRef",class:re(e.ns.e("body-header")),border:e.border,"default-sort":e.defaultSort,store:e.store,onSetDragVisible:e.setDragVisible},null,8,["class","border","default-sort","store","onSetDragVisible"])):Ae("v-if",!0),Z(l,{context:e.context,highlight:e.highlightCurrentRow,"row-class-name":e.rowClassName,"tooltip-effect":e.tooltipEffect,"tooltip-options":e.tooltipOptions,"row-style":e.rowStyle,store:e.store,stripe:e.stripe},null,8,["context","highlight","row-class-name","tooltip-effect","tooltip-options","row-style","store","stripe"]),e.showSummary&&e.tableLayout==="auto"?(G(),ve(u,{key:1,class:re(e.ns.e("body-footer")),border:e.border,"default-sort":e.defaultSort,store:e.store,"sum-text":e.computedSumText,"summary-method":e.summaryMethod},null,8,["class","border","default-sort","store","sum-text","summary-method"])):Ae("v-if",!0)],6),e.isEmpty?(G(),ce("div",{key:0,ref:"emptyBlock",style:ct(e.emptyBlockStyle),class:re(e.ns.e("empty-block"))},[te("span",{class:re(e.ns.e("empty-text"))},[Ce(e.$slots,"empty",{},()=>[pt(xe(e.computedEmptyText),1)])],2)],6)):Ae("v-if",!0),e.$slots.append?(G(),ce("div",{key:1,ref:"appendWrapper",class:re(e.ns.e("append-wrapper"))},[Ce(e.$slots,"append")],2)):Ae("v-if",!0)]),_:3},8,["view-style","wrap-style","always"])],2),e.showSummary&&e.tableLayout==="fixed"?qt((G(),ce("div",{key:1,ref:"footerWrapper",class:re(e.ns.e("footer-wrapper"))},[te("table",{class:re(e.ns.e("footer")),cellspacing:"0",cellpadding:"0",border:"0",style:ct(e.tableBodyStyles)},[Z(o,{columns:e.store.states.columns.value,"table-layout":e.tableLayout},null,8,["columns","table-layout"]),Z(u,{border:e.border,"default-sort":e.defaultSort,store:e.store,"sum-text":e.computedSumText,"summary-method":e.summaryMethod},null,8,["border","default-sort","store","sum-text","summary-method"])],6)],2)),[[Kn,!e.isEmpty],[c,e.handleHeaderFooterMousewheel]]):Ae("v-if",!0),e.border||e.isGroup?(G(),ce("div",{key:2,class:re(e.ns.e("border-left-patch"))},null,2)):Ae("v-if",!0)],6),qt(te("div",{ref:"resizeProxy",class:re(e.ns.e("column-resize-proxy"))},null,2),[[Kn,e.resizeProxyVisible]])],46,tW)}var iW=Ke(eW,[["render",nW],["__file","table.vue"]]);const aW={selection:"table-column--selection",expand:"table__expand-column"},oW={default:{order:""},selection:{width:48,minWidth:48,realWidth:48,order:""},expand:{width:48,minWidth:48,realWidth:48,order:""},index:{width:48,minWidth:48,realWidth:48,order:""}},sW=e=>aW[e]||"",lW={selection:{renderHeader({store:e,column:t}){function r(){return e.states.data.value&&e.states.data.value.length===0}return Te(Ms,{disabled:r(),size:e.states.tableSize.value,indeterminate:e.states.selection.value.length>0&&!e.states.isAllSelected.value,"onUpdate:modelValue":e.toggleAllSelection,modelValue:e.states.isAllSelected.value,ariaLabel:t.label})},renderCell({row:e,column:t,store:r,$index:n}){return Te(Ms,{disabled:t.selectable?!t.selectable.call(null,e,n):!1,size:r.states.tableSize.value,onChange:()=>{r.commit("rowSelectedChanged",e)},onClick:i=>i.stopPropagation(),modelValue:r.isSelected(e),ariaLabel:t.label})},sortable:!1,resizable:!1},index:{renderHeader({column:e}){return e.label||"#"},renderCell({column:e,$index:t}){let r=t+1;const n=e.index;return typeof n=="number"?r=t+n:typeof n=="function"&&(r=n(t)),Te("div",{},[r])},sortable:!1},expand:{renderHeader({column:e}){return e.label||""},renderCell({row:e,store:t,expanded:r}){const{ns:n}=t,i=[n.e("expand-icon")];return r&&i.push(n.em("expand-icon","expanded")),Te("div",{class:i,onClick:function(o){o.stopPropagation(),t.toggleRowExpansion(e)}},{default:()=>[Te(Bt,null,{default:()=>[Te(Ey)]})]})},sortable:!1,resizable:!1}};function uW({row:e,column:t,$index:r}){var n;const i=t.property,a=i&&Ec(e,i).value;return t&&t.formatter?t.formatter(e,t,a,r):((n=a==null?void 0:a.toString)==null?void 0:n.call(a))||""}function fW({row:e,treeNode:t,store:r},n=!1){const{ns:i}=r;if(!t)return n?[Te("span",{class:i.e("placeholder")})]:null;const a=[],o=function(s){s.stopPropagation(),!t.loading&&r.loadOrToggle(e)};if(t.indent&&a.push(Te("span",{class:i.e("indent"),style:{"padding-left":`${t.indent}px`}})),typeof t.expanded=="boolean"&&!t.noLazyChildren){const s=[i.e("expand-icon"),t.expanded?i.em("expand-icon","expanded"):""];let l=Ey;t.loading&&(l=Ly),a.push(Te("div",{class:s,onClick:o},{default:()=>[Te(Bt,{class:{[i.is("loading")]:t.loading}},{default:()=>[Te(l)]})]}))}else a.push(Te("span",{class:i.e("placeholder")}));return a}function O1(e,t){return e.reduce((r,n)=>(r[n]=n,r),t)}function cW(e,t){const r=it();return{registerComplexWatchers:()=>{const a=["fixed"],o={realWidth:"width",realMinWidth:"minWidth"},s=O1(a,o);Object.keys(s).forEach(l=>{const u=o[l];Ue(t,u)&&be(()=>t[u],f=>{let c=f;u==="width"&&l==="realWidth"&&(c=qy(f)),u==="minWidth"&&l==="realMinWidth"&&(c=qA(f)),r.columnConfig.value[u]=c,r.columnConfig.value[l]=c;const h=u==="fixed";e.value.store.scheduleLayout(h)})})},registerNormalWatchers:()=>{const a=["label","filters","filterMultiple","filteredValue","sortable","index","formatter","className","labelClassName","filterClassName","showOverflowTooltip"],o={property:"prop",align:"realAlign",headerAlign:"realHeaderAlign"},s=O1(a,o);Object.keys(s).forEach(l=>{const u=o[l];Ue(t,u)&&be(()=>t[u],f=>{r.columnConfig.value[l]=f})})}}}function dW(e,t,r){const n=it(),i=$(""),a=$(!1),o=$(),s=$(),l=Oe("table");na(()=>{o.value=e.align?`is-${e.align}`:null,o.value}),na(()=>{s.value=e.headerAlign?`is-${e.headerAlign}`:o.value,s.value});const u=k(()=>{let b=n.vnode.vParent||n.parent;for(;b&&!b.tableId&&!b.columnId;)b=b.vnode.vParent||b.parent;return b}),f=k(()=>{const{store:b}=n.parent;if(!b)return!1;const{treeData:x}=b.states,w=x.value;return w&&Object.keys(w).length>0}),c=$(qy(e.width)),h=$(qA(e.minWidth)),d=b=>(c.value&&(b.width=c.value),h.value&&(b.minWidth=h.value),!c.value&&h.value&&(b.width=void 0),b.minWidth||(b.minWidth=80),b.realWidth=Number(b.width===void 0?b.minWidth:b.width),b),v=b=>{const x=b.type,w=lW[x]||{};Object.keys(w).forEach(C=>{const M=w[C];C!=="className"&&M!==void 0&&(b[C]=M)});const S=sW(x);if(S){const C=`${T(l.namespace)}-${S}`;b.className=b.className?`${b.className} ${C}`:C}return b},p=b=>{Array.isArray(b)?b.forEach(w=>x(w)):x(b);function x(w){var S;((S=w==null?void 0:w.type)==null?void 0:S.name)==="ElTableColumn"&&(w.vParent=n)}};return{columnId:i,realAlign:o,isSubColumn:a,realHeaderAlign:s,columnOrTableParent:u,setColumnWidth:d,setColumnForcedProps:v,setColumnRenders:b=>{e.renderHeader||b.type!=="selection"&&(b.renderHeader=w=>(n.columnConfig.value.label,Ce(t,"header",w,()=>[b.label])));let x=b.renderCell;return b.type==="expand"?(b.renderCell=w=>Te("div",{class:"cell"},[x(w)]),r.value.renderExpanded=w=>t.default?t.default(w):t.default):(x=x||uW,b.renderCell=w=>{let S=null;if(t.default){const L=t.default(w);S=L.some(O=>O.type!==Mr)?L:x(w)}else S=x(w);const{columns:C}=r.value.store.states,M=C.value.findIndex(L=>L.type==="default"),A=f.value&&w.cellIndex===M,P=fW(w,A),E={class:"cell",style:{}};return b.showOverflowTooltip&&(E.class=`${E.class} ${T(l.namespace)}-tooltip`,E.style={width:`${(w.column.realWidth||Number(w.column.width))-1}px`}),p(S),Te("div",E,[P,S])}),b},getPropsData:(...b)=>b.reduce((x,w)=>(Array.isArray(w)&&w.forEach(S=>{x[S]=e[S]}),x),{}),getColumnElIndex:(b,x)=>Array.prototype.indexOf.call(b,x),updateColumnOrder:()=>{r.value.store.commit("updateColumnOrder",n.columnConfig.value)}}}var hW={type:{type:String,default:"default"},label:String,className:String,labelClassName:String,property:String,prop:String,width:{type:[String,Number],default:""},minWidth:{type:[String,Number],default:""},renderHeader:Function,sortable:{type:[Boolean,String],default:!1},sortMethod:Function,sortBy:[String,Function,Array],resizable:{type:Boolean,default:!0},columnKey:String,align:String,headerAlign:String,showOverflowTooltip:{type:[Boolean,Object],default:void 0},fixed:[Boolean,String],formatter:Function,selectable:Function,reserveSelection:Boolean,filterMethod:Function,filteredValue:Array,filters:Array,filterPlacement:String,filterMultiple:{type:Boolean,default:!0},filterClassName:String,index:[Number,Function],sortOrders:{type:Array,default:()=>["ascending","descending",null],validator:e=>e.every(t=>["ascending","descending",null].includes(t))}};let vW=1;var r2=ie({name:"ElTableColumn",components:{ElCheckbox:Ms},props:hW,setup(e,{slots:t}){const r=it(),n=$({}),i=k(()=>{let _=r.parent;for(;_&&!_.tableId;)_=_.parent;return _}),{registerNormalWatchers:a,registerComplexWatchers:o}=cW(i,e),{columnId:s,isSubColumn:l,realHeaderAlign:u,columnOrTableParent:f,setColumnWidth:c,setColumnForcedProps:h,setColumnRenders:d,getPropsData:v,getColumnElIndex:p,realAlign:m,updateColumnOrder:g}=dW(e,t,i),y=f.value;s.value=`${y.tableId||y.columnId}_column_${vW++}`,eh(()=>{l.value=i.value!==y;const _=e.type||"default",b=e.sortable===""?!0:e.sortable,x=bs(e.showOverflowTooltip)?y.props.showOverflowTooltip:e.showOverflowTooltip,w={...oW[_],id:s.value,type:_,property:e.prop||e.property,align:m,headerAlign:u,showOverflowTooltip:x,filterable:e.filters||e.filterMethod,filteredValue:[],filterPlacement:"",filterClassName:"",isColumnGroup:!1,isSubColumn:!1,filterOpened:!1,sortable:b,index:e.index,rawColumnKey:r.vnode.key};let P=v(["columnKey","label","className","labelClassName","type","renderHeader","formatter","fixed","resizable"],["sortMethod","sortBy","sortOrders"],["selectable","reserveSelection"],["filterMethod","filters","filterMultiple","filterOpened","filteredValue","filterPlacement","filterClassName"]);P=vV(w,P),P=gV(d,c,h)(P),n.value=P,a(),o()}),_t(()=>{var _;const b=f.value,x=l.value?b.vnode.el.children:(_=b.refs.hiddenColumns)==null?void 0:_.children,w=()=>p(x||[],r.vnode.el);n.value.getColumnIndex=w,w()>-1&&i.value.store.commit("insertColumn",n.value,l.value?b.columnConfig.value:null,g)}),tr(()=>{i.value.store.commit("removeColumn",n.value,l.value?y.columnConfig.value:null,g)}),r.columnId=s.value,r.columnConfig=n},render(){var e,t,r;try{const n=(t=(e=this.$slots).default)==null?void 0:t.call(e,{row:{},column:{},$index:-1}),i=[];if(Array.isArray(n))for(const o of n)((r=o.type)==null?void 0:r.name)==="ElTableColumn"||o.shapeFlag&2?i.push(o):o.type===ft&&Array.isArray(o.children)&&o.children.forEach(s=>{(s==null?void 0:s.patchFlag)!==1024&&!ze(s==null?void 0:s.children)&&i.push(s)});return Te("div",i)}catch{return Te("div",[])}}});const pW=Yt(iW,{TableColumn:r2}),gW=pa(r2),mW=Je({type:{type:String,values:["primary","success","info","warning","danger",""],default:""},size:{type:String,values:$s,default:""},truncated:{type:Boolean},lineClamp:{type:[String,Number]},tag:{type:String,default:"span"}}),yW=ie({name:"ElText"}),_W=ie({...yW,props:mW,setup(e){const t=e,r=xi(),n=Oe("text"),i=k(()=>[n.b(),n.m(t.type),n.m(r.value),n.is("truncated",t.truncated),n.is("line-clamp",!bs(t.lineClamp))]);return(a,o)=>(G(),ve(Vt(a.tag),{class:re(T(i)),style:ct({"-webkit-line-clamp":a.lineClamp})},{default:q(()=>[Ce(a.$slots,"default")]),_:3},8,["class","style"]))}});var bW=Ke(_W,[["__file","text.vue"]]);const wW=Yt(bW),n2=["success","info","warning","error"],wr=ja({customClass:"",center:!1,dangerouslyUseHTMLString:!1,duration:3e3,icon:void 0,id:"",message:"",onClose:void 0,showClose:!1,type:"info",offset:16,zIndex:0,grouping:!1,repeatNum:1,appendTo:At?document.body:void 0}),SW=Je({customClass:{type:String,default:wr.customClass},center:{type:Boolean,default:wr.center},dangerouslyUseHTMLString:{type:Boolean,default:wr.dangerouslyUseHTMLString},duration:{type:Number,default:wr.duration},icon:{type:vr,default:wr.icon},id:{type:String,default:wr.id},message:{type:Be([String,Object,Function]),default:wr.message},onClose:{type:Be(Function),required:!1},showClose:{type:Boolean,default:wr.showClose},type:{type:String,values:n2,default:wr.type},offset:{type:Number,default:wr.offset},zIndex:{type:Number,default:wr.zIndex},grouping:{type:Boolean,default:wr.grouping},repeatNum:{type:Number,default:wr.repeatNum}}),xW={destroy:()=>!0},Cn=Qm([]),CW=e=>{const t=Cn.findIndex(i=>i.id===e),r=Cn[t];let n;return t>0&&(n=Cn[t-1]),{current:r,prev:n}},TW=e=>{const{prev:t}=CW(e);return t?t.vm.exposed.bottom.value:0},MW=(e,t)=>Cn.findIndex(n=>n.id===e)>0?20:t,AW=["id"],PW=["innerHTML"],EW=ie({name:"ElMessage"}),LW=ie({...EW,props:SW,emits:xW,setup(e,{expose:t}){const r=e,{Close:n}=G3,{ns:i,zIndex:a}=m4("message"),{currentZIndex:o,nextZIndex:s}=a,l=$(),u=$(!1),f=$(0);let c;const h=k(()=>r.type?r.type==="error"?"danger":r.type:"info"),d=k(()=>{const S=r.type;return{[i.bm("icon",S)]:S&&Wb[S]}}),v=k(()=>r.icon||Wb[r.type]||""),p=k(()=>TW(r.id)),m=k(()=>MW(r.id,r.offset)+p.value),g=k(()=>f.value+m.value),y=k(()=>({top:`${m.value}px`,zIndex:o.value}));function _(){r.duration!==0&&({stop:c}=hu(()=>{x()},r.duration))}function b(){c==null||c()}function x(){u.value=!1}function w({code:S}){S===hr.esc&&x()}return _t(()=>{_(),s(),u.value=!0}),be(()=>r.repeatNum,()=>{b(),_()}),xn(document,"keydown",w),ms(l,()=>{f.value=l.value.getBoundingClientRect().height}),t({visible:u,bottom:g,close:x}),(S,C)=>(G(),ve(ti,{name:T(i).b("fade"),onBeforeLeave:S.onClose,onAfterLeave:C[0]||(C[0]=M=>S.$emit("destroy")),persisted:""},{default:q(()=>[qt(te("div",{id:S.id,ref_key:"messageRef",ref:l,class:re([T(i).b(),{[T(i).m(S.type)]:S.type},T(i).is("center",S.center),T(i).is("closable",S.showClose),S.customClass]),style:ct(T(y)),role:"alert",onMouseenter:b,onMouseleave:_},[S.repeatNum>1?(G(),ve(T(Nz),{key:0,value:S.repeatNum,type:T(h),class:re(T(i).e("badge"))},null,8,["value","type","class"])):Ae("v-if",!0),T(v)?(G(),ve(T(Bt),{key:1,class:re([T(i).e("icon"),T(d)])},{default:q(()=>[(G(),ve(Vt(T(v))))]),_:1},8,["class"])):Ae("v-if",!0),Ce(S.$slots,"default",{},()=>[S.dangerouslyUseHTMLString?(G(),ce(ft,{key:1},[Ae(" Caution here, message could've been compromised, never use user's input as message "),te("p",{class:re(T(i).e("content")),innerHTML:S.message},null,10,PW)],2112)):(G(),ce("p",{key:0,class:re(T(i).e("content"))},xe(S.message),3))]),S.showClose?(G(),ve(T(Bt),{key:2,class:re(T(i).e("closeBtn")),onClick:ua(x,["stop"])},{default:q(()=>[Z(T(n))]),_:1},8,["class","onClick"])):Ae("v-if",!0)],46,AW),[[Kn,u.value]])]),_:3},8,["name","onBeforeLeave"]))}});var DW=Ke(LW,[["__file","message.vue"]]);let IW=1;const i2=e=>{const t=!e||ze(e)||la(e)||De(e)?{message:e}:e,r={...wr,...t};if(!r.appendTo)r.appendTo=document.body;else if(ze(r.appendTo)){let n=document.querySelector(r.appendTo);mo(n)||(n=document.body),r.appendTo=n}return r},OW=e=>{const t=Cn.indexOf(e);if(t===-1)return;Cn.splice(t,1);const{handler:r}=e;r.close()},RW=({appendTo:e,...t},r)=>{const n=`message_${IW++}`,i=t.onClose,a=document.createElement("div"),o={...t,id:n,onClose:()=>{i==null||i(),OW(f)},onDestroy:()=>{ld(null,a)}},s=Z(DW,o,De(o.message)||la(o.message)?{default:De(o.message)?o.message:()=>o.message}:null);s.appContext=r||Ps._context,ld(s,a),e.appendChild(a.firstElementChild);const l=s.component,f={id:n,vnode:s,vm:l,handler:{close:()=>{l.exposed.visible.value=!1}},props:s.component.props};return f},Ps=(e={},t)=>{if(!At)return{close:()=>{}};if(kt(i1.max)&&Cn.length>=i1.max)return{close:()=>{}};const r=i2(e);if(r.grouping&&Cn.length){const i=Cn.find(({vnode:a})=>{var o;return((o=a.props)==null?void 0:o.message)===r.message});if(i)return i.props.repeatNum+=1,i.props.type=r.type,i.handler}const n=RW(r,t);return Cn.push(n),n.handler};n2.forEach(e=>{Ps[e]=(t={},r)=>{const n=i2(t);return Ps({...n,type:e},r)}});function kW(e){for(const t of Cn)(!e||e===t.props.type)&&t.handler.close()}Ps.closeAll=kW;Ps._context=null;const Wl=U3(Ps,"$message"),NW={id:"app"},BW={class:"grid-content header-color"},FW={class:"header-content"},$W=te("div",{class:"brand"},[te("a",{href:"#"},"frp")],-1),HW={class:"dark-switch"},zW=te("span",null,"Proxies",-1),VW={id:"content"},WW=te("footer",null,null,-1),GW=ie({__name:"App",setup(e){const t=XR(),r=$(t),n=mR(t),i=a=>{a==""&&window.open("https://github.com/fatedier/frp")};return(a,o)=>{const s=cV,l=H6,u=z6,f=$6,c=$A,h=xr("router-view"),d=FA;return G(),ce("div",NW,[te("header",BW,[te("div",FW,[$W,te("div",HW,[Z(s,{modelValue:r.value,"onUpdate:modelValue":o[0]||(o[0]=v=>r.value=v),"inline-prompt":"","active-text":"Dark","inactive-text":"Light",onChange:T(n),style:{"--el-switch-on-color":"#444452","--el-switch-off-color":"#589ef8"}},null,8,["modelValue","onChange"])])])]),te("section",null,[Z(d,null,{default:q(()=>[Z(c,{id:"side-nav",xs:24,md:4},{default:q(()=>[Z(f,{"default-active":"/",mode:"vertical",theme:"light",router:"false",onSelect:i},{default:q(()=>[Z(l,{index:"/"},{default:q(()=>[pt("Overview")]),_:1}),Z(u,{index:"/proxies"},{title:q(()=>[zW]),default:q(()=>[Z(l,{index:"/proxies/tcp"},{default:q(()=>[pt("TCP")]),_:1}),Z(l,{index:"/proxies/udp"},{default:q(()=>[pt("UDP")]),_:1}),Z(l,{index:"/proxies/http"},{default:q(()=>[pt("HTTP")]),_:1}),Z(l,{index:"/proxies/https"},{default:q(()=>[pt("HTTPS")]),_:1}),Z(l,{index:"/proxies/tcpmux"},{default:q(()=>[pt("TCPMUX")]),_:1}),Z(l,{index:"/proxies/stcp"},{default:q(()=>[pt("STCP")]),_:1}),Z(l,{index:"/proxies/sudp"},{default:q(()=>[pt("SUDP")]),_:1})]),_:1}),Z(l,{index:""},{default:q(()=>[pt("Help")]),_:1})]),_:1})]),_:1}),Z(c,{xs:24,md:20},{default:q(()=>[te("div",VW,[Z(h)])]),_:1})]),_:1})]),WW])}}});/*! * vue-router v4.2.5 * (c) 2023 Eduardo San Martin Morote * @license MIT - */const Ko=typeof window<"u";function UW(e){return e.__esModule||e[Symbol.toStringTag]==="Module"}const lt=Object.assign;function dv(e,t){const r={};for(const n in t){const i=t[n];r[n]=En(i)?i.map(e):e(i)}return r}const Gl=()=>{},En=Array.isArray,YW=/\/$/,jW=e=>e.replace(YW,"");function hv(e,t,r="/"){let n,i={},a="",o="";const s=t.indexOf("#");let l=t.indexOf("?");return s=0&&(l=-1),l>-1&&(n=t.slice(0,l),a=t.slice(l+1,s>-1?s:t.length),i=e(a)),s>-1&&(n=n||t.slice(0,s),o=t.slice(s,t.length)),n=ZW(n??t,r),{fullPath:n+(a&&"?")+a+o,path:n,query:i,hash:o}}function qW(e,t){const r=t.query?e(t.query):"";return t.path+(r&&"?")+r+(t.hash||"")}function R1(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function KW(e,t,r){const n=t.matched.length-1,i=r.matched.length-1;return n>-1&&n===i&&As(t.matched[n],r.matched[i])&&a2(t.params,r.params)&&e(t.query)===e(r.query)&&t.hash===r.hash}function As(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function a2(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const r in e)if(!XW(e[r],t[r]))return!1;return!0}function XW(e,t){return En(e)?k1(e,t):En(t)?k1(t,e):e===t}function k1(e,t){return En(t)?e.length===t.length&&e.every((r,n)=>r===t[n]):e.length===1&&e[0]===t}function ZW(e,t){if(e.startsWith("/"))return e;if(!e)return t;const r=t.split("/"),n=e.split("/"),i=n[n.length-1];(i===".."||i===".")&&n.push("");let a=r.length-1,o,s;for(o=0;o1&&a--;else break;return r.slice(0,a).join("/")+"/"+n.slice(o-(o===n.length?1:0)).join("/")}var Tu;(function(e){e.pop="pop",e.push="push"})(Tu||(Tu={}));var Ul;(function(e){e.back="back",e.forward="forward",e.unknown=""})(Ul||(Ul={}));function QW(e){if(!e)if(Ko){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),jW(e)}const JW=/^[^#]+#/;function eG(e,t){return e.replace(JW,"#")+t}function tG(e,t){const r=document.documentElement.getBoundingClientRect(),n=e.getBoundingClientRect();return{behavior:t.behavior,left:n.left-r.left-(t.left||0),top:n.top-r.top-(t.top||0)}}const gh=()=>({left:window.pageXOffset,top:window.pageYOffset});function rG(e){let t;if("el"in e){const r=e.el,n=typeof r=="string"&&r.startsWith("#"),i=typeof r=="string"?n?document.getElementById(r.slice(1)):document.querySelector(r):r;if(!i)return;t=tG(i,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.pageXOffset,t.top!=null?t.top:window.pageYOffset)}function N1(e,t){return(history.state?history.state.position-t:-1)+e}const Lg=new Map;function nG(e,t){Lg.set(e,t)}function iG(e){const t=Lg.get(e);return Lg.delete(e),t}let aG=()=>location.protocol+"//"+location.host;function o2(e,t){const{pathname:r,search:n,hash:i}=t,a=e.indexOf("#");if(a>-1){let s=i.includes(e.slice(a))?e.slice(a).length:1,l=i.slice(s);return l[0]!=="/"&&(l="/"+l),R1(l,"")}return R1(r,e)+n+i}function oG(e,t,r,n){let i=[],a=[],o=null;const s=({state:h})=>{const d=o2(e,location),v=r.value,p=t.value;let m=0;if(h){if(r.value=d,t.value=h,o&&o===v){o=null;return}m=p?h.position-p.position:0}else n(d);i.forEach(g=>{g(r.value,v,{delta:m,type:Tu.pop,direction:m?m>0?Ul.forward:Ul.back:Ul.unknown})})};function l(){o=r.value}function u(h){i.push(h);const d=()=>{const v=i.indexOf(h);v>-1&&i.splice(v,1)};return a.push(d),d}function f(){const{history:h}=window;h.state&&h.replaceState(lt({},h.state,{scroll:gh()}),"")}function c(){for(const h of a)h();a=[],window.removeEventListener("popstate",s),window.removeEventListener("beforeunload",f)}return window.addEventListener("popstate",s),window.addEventListener("beforeunload",f,{passive:!0}),{pauseListeners:l,listen:u,destroy:c}}function B1(e,t,r,n=!1,i=!1){return{back:e,current:t,forward:r,replaced:n,position:window.history.length,scroll:i?gh():null}}function sG(e){const{history:t,location:r}=window,n={value:o2(e,r)},i={value:t.state};i.value||a(n.value,{back:null,current:n.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function a(l,u,f){const c=e.indexOf("#"),h=c>-1?(r.host&&document.querySelector("base")?e:e.slice(c))+l:aG()+e+l;try{t[f?"replaceState":"pushState"](u,"",h),i.value=u}catch(d){console.error(d),r[f?"replace":"assign"](h)}}function o(l,u){const f=lt({},t.state,B1(i.value.back,l,i.value.forward,!0),u,{position:i.value.position});a(l,f,!0),n.value=l}function s(l,u){const f=lt({},i.value,t.state,{forward:l,scroll:gh()});a(f.current,f,!0);const c=lt({},B1(n.value,l,null),{position:f.position+1},u);a(l,c,!1),n.value=l}return{location:n,state:i,push:s,replace:o}}function lG(e){e=QW(e);const t=sG(e),r=oG(e,t.state,t.location,t.replace);function n(a,o=!0){o||r.pauseListeners(),history.go(a)}const i=lt({location:"",base:e,go:n,createHref:eG.bind(null,e)},t,r);return Object.defineProperty(i,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(i,"state",{enumerable:!0,get:()=>t.state.value}),i}function uG(e){return e=location.host?e||location.pathname+location.search:"",e.includes("#")||(e+="#"),lG(e)}function fG(e){return typeof e=="string"||e&&typeof e=="object"}function s2(e){return typeof e=="string"||typeof e=="symbol"}const Ri={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0},l2=Symbol("");var F1;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(F1||(F1={}));function Ps(e,t){return lt(new Error,{type:e,[l2]:!0},t)}function li(e,t){return e instanceof Error&&l2 in e&&(t==null||!!(e.type&t))}const $1="[^/]+?",cG={sensitive:!1,strict:!1,start:!0,end:!0},dG=/[.+*?^${}()[\]/\\]/g;function hG(e,t){const r=lt({},cG,t),n=[];let i=r.start?"^":"";const a=[];for(const u of e){const f=u.length?[]:[90];r.strict&&!u.length&&(i+="/");for(let c=0;ct.length?t.length===1&&t[0]===80?1:-1:0}function pG(e,t){let r=0;const n=e.score,i=t.score;for(;r0&&t[t.length-1]<0}const gG={type:0,value:""},mG=/[a-zA-Z0-9_]/;function yG(e){if(!e)return[[]];if(e==="/")return[[gG]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(d){throw new Error(`ERR (${r})/"${u}": ${d}`)}let r=0,n=r;const i=[];let a;function o(){a&&i.push(a),a=[]}let s=0,l,u="",f="";function c(){u&&(r===0?a.push({type:0,value:u}):r===1||r===2||r===3?(a.length>1&&(l==="*"||l==="+")&&t(`A repeatable param (${u}) must be alone in its segment. eg: '/:ids+.`),a.push({type:1,value:u,regexp:f,repeatable:l==="*"||l==="+",optional:l==="*"||l==="?"})):t("Invalid state to consume buffer"),u="")}function h(){u+=l}for(;s{o(y)}:Gl}function o(f){if(s2(f)){const c=n.get(f);c&&(n.delete(f),r.splice(r.indexOf(c),1),c.children.forEach(o),c.alias.forEach(o))}else{const c=r.indexOf(f);c>-1&&(r.splice(c,1),f.record.name&&n.delete(f.record.name),f.children.forEach(o),f.alias.forEach(o))}}function s(){return r}function l(f){let c=0;for(;c=0&&(f.record.path!==r[c].record.path||!u2(f,r[c]));)c++;r.splice(c,0,f),f.record.name&&!V1(f)&&n.set(f.record.name,f)}function u(f,c){let h,d={},v,p;if("name"in f&&f.name){if(h=n.get(f.name),!h)throw Ps(1,{location:f});p=h.record.name,d=lt(z1(c.params,h.keys.filter(y=>!y.optional).map(y=>y.name)),f.params&&z1(f.params,h.keys.map(y=>y.name))),v=h.stringify(d)}else if("path"in f)v=f.path,h=r.find(y=>y.re.test(v)),h&&(d=h.parse(v),p=h.record.name);else{if(h=c.name?n.get(c.name):r.find(y=>y.re.test(c.path)),!h)throw Ps(1,{location:f,currentLocation:c});p=h.record.name,d=lt({},c.params,f.params),v=h.stringify(d)}const m=[];let g=h;for(;g;)m.unshift(g.record),g=g.parent;return{name:p,path:v,params:d,matched:m,meta:xG(m)}}return e.forEach(f=>a(f)),{addRoute:a,resolve:u,removeRoute:o,getRoutes:s,getRecordMatcher:i}}function z1(e,t){const r={};for(const n of t)n in e&&(r[n]=e[n]);return r}function wG(e){return{path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:void 0,beforeEnter:e.beforeEnter,props:SG(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}}}function SG(e){const t={},r=e.props||!1;if("component"in e)t.default=r;else for(const n in e.components)t[n]=typeof r=="object"?r[n]:r;return t}function V1(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function xG(e){return e.reduce((t,r)=>lt(t,r.meta),{})}function W1(e,t){const r={};for(const n in e)r[n]=n in t?t[n]:e[n];return r}function u2(e,t){return t.children.some(r=>r===e||u2(e,r))}const f2=/#/g,CG=/&/g,TG=/\//g,MG=/=/g,AG=/\?/g,c2=/\+/g,PG=/%5B/g,EG=/%5D/g,d2=/%5E/g,LG=/%60/g,h2=/%7B/g,DG=/%7C/g,v2=/%7D/g,IG=/%20/g;function Zy(e){return encodeURI(""+e).replace(DG,"|").replace(PG,"[").replace(EG,"]")}function OG(e){return Zy(e).replace(h2,"{").replace(v2,"}").replace(d2,"^")}function Dg(e){return Zy(e).replace(c2,"%2B").replace(IG,"+").replace(f2,"%23").replace(CG,"%26").replace(LG,"`").replace(h2,"{").replace(v2,"}").replace(d2,"^")}function RG(e){return Dg(e).replace(MG,"%3D")}function kG(e){return Zy(e).replace(f2,"%23").replace(AG,"%3F")}function NG(e){return e==null?"":kG(e).replace(TG,"%2F")}function yd(e){try{return decodeURIComponent(""+e)}catch{}return""+e}function BG(e){const t={};if(e===""||e==="?")return t;const n=(e[0]==="?"?e.slice(1):e).split("&");for(let i=0;ia&&Dg(a)):[n&&Dg(n)]).forEach(a=>{a!==void 0&&(t+=(t.length?"&":"")+r,a!=null&&(t+="="+a))})}return t}function FG(e){const t={};for(const r in e){const n=e[r];n!==void 0&&(t[r]=En(n)?n.map(i=>i==null?null:""+i):n==null?n:""+n)}return t}const $G=Symbol(""),U1=Symbol(""),Qy=Symbol(""),p2=Symbol(""),Ig=Symbol("");function el(){let e=[];function t(n){return e.push(n),()=>{const i=e.indexOf(n);i>-1&&e.splice(i,1)}}function r(){e=[]}return{add:t,list:()=>e.slice(),reset:r}}function Xi(e,t,r,n,i){const a=n&&(n.enterCallbacks[i]=n.enterCallbacks[i]||[]);return()=>new Promise((o,s)=>{const l=c=>{c===!1?s(Ps(4,{from:r,to:t})):c instanceof Error?s(c):fG(c)?s(Ps(2,{from:t,to:c})):(a&&n.enterCallbacks[i]===a&&typeof c=="function"&&a.push(c),o())},u=e.call(n&&n.instances[i],t,r,l);let f=Promise.resolve(u);e.length<3&&(f=f.then(l)),f.catch(c=>s(c))})}function vv(e,t,r,n){const i=[];for(const a of e)for(const o in a.components){let s=a.components[o];if(!(t!=="beforeRouteEnter"&&!a.instances[o]))if(HG(s)){const u=(s.__vccOpts||s)[t];u&&i.push(Xi(u,r,n,a,o))}else{let l=s();i.push(()=>l.then(u=>{if(!u)return Promise.reject(new Error(`Couldn't resolve component "${o}" at "${a.path}"`));const f=UW(u)?u.default:u;a.components[o]=f;const h=(f.__vccOpts||f)[t];return h&&Xi(h,r,n,a,o)()}))}}return i}function HG(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function Y1(e){const t=Le(Qy),r=Le(p2),n=k(()=>t.resolve(T(e.to))),i=k(()=>{const{matched:l}=n.value,{length:u}=l,f=l[u-1],c=r.matched;if(!f||!c.length)return-1;const h=c.findIndex(As.bind(null,f));if(h>-1)return h;const d=j1(l[u-2]);return u>1&&j1(f)===d&&c[c.length-1].path!==d?c.findIndex(As.bind(null,l[u-2])):h}),a=k(()=>i.value>-1&&GG(r.params,n.value.params)),o=k(()=>i.value>-1&&i.value===r.matched.length-1&&a2(r.params,n.value.params));function s(l={}){return WG(l)?t[T(e.replace)?"replace":"push"](T(e.to)).catch(Gl):Promise.resolve()}return{route:n,href:k(()=>n.value.href),isActive:a,isExactActive:o,navigate:s}}const zG=ie({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink:Y1,setup(e,{slots:t}){const r=Ln(Y1(e)),{options:n}=Le(Qy),i=k(()=>({[q1(e.activeClass,n.linkActiveClass,"router-link-active")]:r.isActive,[q1(e.exactActiveClass,n.linkExactActiveClass,"router-link-exact-active")]:r.isExactActive}));return()=>{const a=t.default&&t.default(r);return e.custom?a:Te("a",{"aria-current":r.isExactActive?e.ariaCurrentValue:null,href:r.href,onClick:r.navigate,class:i.value},a)}}}),VG=zG;function WG(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function GG(e,t){for(const r in t){const n=t[r],i=e[r];if(typeof n=="string"){if(n!==i)return!1}else if(!En(i)||i.length!==n.length||n.some((a,o)=>a!==i[o]))return!1}return!0}function j1(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const q1=(e,t,r)=>e??t??r,UG=ie({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:r}){const n=Le(Ig),i=k(()=>e.route||n.value),a=Le(U1,0),o=k(()=>{let u=T(a);const{matched:f}=i.value;let c;for(;(c=f[u])&&!c.components;)u++;return u}),s=k(()=>i.value.matched[o.value]);Dt(U1,k(()=>o.value+1)),Dt($G,s),Dt(Ig,i);const l=$();return we(()=>[l.value,s.value,e.name],([u,f,c],[h,d,v])=>{f&&(f.instances[c]=u,d&&d!==f&&u&&u===h&&(f.leaveGuards.size||(f.leaveGuards=d.leaveGuards),f.updateGuards.size||(f.updateGuards=d.updateGuards))),u&&f&&(!d||!As(f,d)||!h)&&(f.enterCallbacks[c]||[]).forEach(p=>p(u))},{flush:"post"}),()=>{const u=i.value,f=e.name,c=s.value,h=c&&c.components[f];if(!h)return K1(r.default,{Component:h,route:u});const d=c.props[f],v=d?d===!0?u.params:typeof d=="function"?d(u):d:null,m=Te(h,lt({},v,t,{onVnodeUnmounted:g=>{g.component.isUnmounted&&(c.instances[f]=null)},ref:l}));return K1(r.default,{Component:m,route:u})||m}}});function K1(e,t){if(!e)return null;const r=e(t);return r.length===1?r[0]:r}const YG=UG;function jG(e){const t=bG(e.routes,e),r=e.parseQuery||BG,n=e.stringifyQuery||G1,i=e.history,a=el(),o=el(),s=el(),l=ty(Ri);let u=Ri;Ko&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const f=dv.bind(null,B=>""+B),c=dv.bind(null,NG),h=dv.bind(null,yd);function d(B,Y){let K,Q;return s2(B)?(K=t.getRecordMatcher(B),Q=Y):Q=B,t.addRoute(Q,K)}function v(B){const Y=t.getRecordMatcher(B);Y&&t.removeRoute(Y)}function p(){return t.getRoutes().map(B=>B.record)}function m(B){return!!t.getRecordMatcher(B)}function g(B,Y){if(Y=lt({},Y||l.value),typeof B=="string"){const I=hv(r,B,Y.path),W=t.resolve({path:I.path},Y),X=i.createHref(I.fullPath);return lt(I,W,{params:h(W.params),hash:yd(I.hash),redirectedFrom:void 0,href:X})}let K;if("path"in B)K=lt({},B,{path:hv(r,B.path,Y.path).path});else{const I=lt({},B.params);for(const W in I)I[W]==null&&delete I[W];K=lt({},B,{params:c(I)}),Y.params=c(Y.params)}const Q=t.resolve(K,Y),oe=B.hash||"";Q.params=f(h(Q.params));const pe=qW(n,lt({},B,{hash:OG(oe),path:Q.path})),D=i.createHref(pe);return lt({fullPath:pe,hash:oe,query:n===G1?FG(B.query):B.query||{}},Q,{redirectedFrom:void 0,href:D})}function y(B){return typeof B=="string"?hv(r,B,l.value.path):lt({},B)}function _(B,Y){if(u!==B)return Ps(8,{from:Y,to:B})}function b(B){return S(B)}function x(B){return b(lt(y(B),{replace:!0}))}function w(B){const Y=B.matched[B.matched.length-1];if(Y&&Y.redirect){const{redirect:K}=Y;let Q=typeof K=="function"?K(B):K;return typeof Q=="string"&&(Q=Q.includes("?")||Q.includes("#")?Q=y(Q):{path:Q},Q.params={}),lt({query:B.query,hash:B.hash,params:"path"in Q?{}:B.params},Q)}}function S(B,Y){const K=u=g(B),Q=l.value,oe=B.state,pe=B.force,D=B.replace===!0,I=w(K);if(I)return S(lt(y(I),{state:typeof I=="object"?lt({},oe,I.state):oe,force:pe,replace:D}),Y||K);const W=K;W.redirectedFrom=Y;let X;return!pe&&KW(n,Q,K)&&(X=Ps(16,{to:W,from:Q}),te(Q,Q,!0,!1)),(X?Promise.resolve(X):A(W,Q)).catch(q=>li(q)?li(q,2)?q:z(q):U(q,W,Q)).then(q=>{if(q){if(li(q,2))return S(lt({replace:D},y(q.to),{state:typeof q.to=="object"?lt({},oe,q.to.state):oe,force:pe}),Y||W)}else q=E(W,Q,!0,D,oe);return P(W,Q,q),q})}function C(B,Y){const K=_(B,Y);return K?Promise.reject(K):Promise.resolve()}function M(B){const Y=Se.values().next().value;return Y&&typeof Y.runWithContext=="function"?Y.runWithContext(B):B()}function A(B,Y){let K;const[Q,oe,pe]=qG(B,Y);K=vv(Q.reverse(),"beforeRouteLeave",B,Y);for(const I of Q)I.leaveGuards.forEach(W=>{K.push(Xi(W,B,Y))});const D=C.bind(null,B,Y);return K.push(D),Ie(K).then(()=>{K=[];for(const I of a.list())K.push(Xi(I,B,Y));return K.push(D),Ie(K)}).then(()=>{K=vv(oe,"beforeRouteUpdate",B,Y);for(const I of oe)I.updateGuards.forEach(W=>{K.push(Xi(W,B,Y))});return K.push(D),Ie(K)}).then(()=>{K=[];for(const I of pe)if(I.beforeEnter)if(En(I.beforeEnter))for(const W of I.beforeEnter)K.push(Xi(W,B,Y));else K.push(Xi(I.beforeEnter,B,Y));return K.push(D),Ie(K)}).then(()=>(B.matched.forEach(I=>I.enterCallbacks={}),K=vv(pe,"beforeRouteEnter",B,Y),K.push(D),Ie(K))).then(()=>{K=[];for(const I of o.list())K.push(Xi(I,B,Y));return K.push(D),Ie(K)}).catch(I=>li(I,8)?I:Promise.reject(I))}function P(B,Y,K){s.list().forEach(Q=>M(()=>Q(B,Y,K)))}function E(B,Y,K,Q,oe){const pe=_(B,Y);if(pe)return pe;const D=Y===Ri,I=Ko?history.state:{};K&&(Q||D?i.replace(B.fullPath,lt({scroll:D&&I&&I.scroll},oe)):i.push(B.fullPath,oe)),l.value=B,te(B,Y,K,D),z()}let L;function O(){L||(L=i.listen((B,Y,K)=>{if(!$e.listening)return;const Q=g(B),oe=w(Q);if(oe){S(lt(oe,{replace:!0}),Q).catch(Gl);return}u=Q;const pe=l.value;Ko&&nG(N1(pe.fullPath,K.delta),gh()),A(Q,pe).catch(D=>li(D,12)?D:li(D,2)?(S(D.to,Q).then(I=>{li(I,20)&&!K.delta&&K.type===Tu.pop&&i.go(-1,!1)}).catch(Gl),Promise.reject()):(K.delta&&i.go(-K.delta,!1),U(D,Q,pe))).then(D=>{D=D||E(Q,pe,!1),D&&(K.delta&&!li(D,8)?i.go(-K.delta,!1):K.type===Tu.pop&&li(D,20)&&i.go(-1,!1)),P(Q,pe,D)}).catch(Gl)}))}let N=el(),H=el(),V;function U(B,Y,K){z(B);const Q=H.list();return Q.length?Q.forEach(oe=>oe(B,Y,K)):console.error(B),Promise.reject(B)}function F(){return V&&l.value!==Ri?Promise.resolve():new Promise((B,Y)=>{N.add([B,Y])})}function z(B){return V||(V=!B,O(),N.list().forEach(([Y,K])=>B?K(B):Y()),N.reset()),B}function te(B,Y,K,Q){const{scrollBehavior:oe}=e;if(!Ko||!oe)return Promise.resolve();const pe=!K&&iG(N1(B.fullPath,0))||(Q||!K)&&history.state&&history.state.scroll||null;return kt().then(()=>oe(B,Y,pe)).then(D=>D&&rG(D)).catch(D=>U(D,B,Y))}const J=B=>i.go(B);let me;const Se=new Set,$e={currentRoute:l,listening:!0,addRoute:d,removeRoute:v,hasRoute:m,getRoutes:p,resolve:g,options:e,push:b,replace:x,go:J,back:()=>J(-1),forward:()=>J(1),beforeEach:a.add,beforeResolve:o.add,afterEach:s.add,onError:H.add,isReady:F,install(B){const Y=this;B.component("RouterLink",VG),B.component("RouterView",YG),B.config.globalProperties.$router=Y,Object.defineProperty(B.config.globalProperties,"$route",{enumerable:!0,get:()=>T(l)}),Ko&&!me&&l.value===Ri&&(me=!0,b(i.location).catch(oe=>{}));const K={};for(const oe in Ri)Object.defineProperty(K,oe,{get:()=>l.value[oe],enumerable:!0});B.provide(Qy,Y),B.provide(p2,Qm(K)),B.provide(Ig,l);const Q=B.unmount;Se.add(B),B.unmount=function(){Se.delete(B),Se.size<1&&(u=Ri,L&&L(),L=null,l.value=Ri,me=!1,V=!1),Q()}}};function Ie(B){return B.reduce((Y,K)=>Y.then(()=>M(K)),Promise.resolve())}return $e}function qG(e,t){const r=[],n=[],i=[],a=Math.max(t.matched.length,e.matched.length);for(let o=0;oAs(u,s))?n.push(s):r.push(s));const l=e.matched[o];l&&(t.matched.find(u=>As(u,l))||i.push(l))}return[r,n,i]}var Og={exports:{}};(function(e,t){var r=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(n){return typeof n}:function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol?"symbol":typeof n};(function(n,i){r(t)==="object"?e.exports=i():n.Humanize=i()})(a8,function(){var n=[{name:"second",value:1e3},{name:"minute",value:6e4},{name:"hour",value:36e5},{name:"day",value:864e5},{name:"week",value:6048e5}],i={P:Math.pow(2,50),T:Math.pow(2,40),G:Math.pow(2,30),M:Math.pow(2,20)},a=function(c){return typeof c<"u"&&c!==null},o=function(c){return c!==c},s=function(c){return isFinite(c)&&!o(parseFloat(c))},l=function(c){var h=Object.prototype.toString.call(c);return h==="[object Array]"},u={intword:function(c,h){var d=arguments.length<=2||arguments[2]===void 0?2:arguments[2];return u.compactInteger(c,d)},compactInteger:function(c){var h=arguments.length<=1||arguments[1]===void 0?0:arguments[1];h=Math.max(h,0);var d=parseInt(c,10),v=d<0?"-":"",p=Math.abs(d),m=String(p),g=m.length,y=[13,10,7,4],_=["T","B","M","k"];if(p<1e3)return""+v+m;if(g>y[0]+3)return d.toExponential(h).replace("e+","x10^");for(var b=void 0,x=0;x=w){b=w;break}}var S=g-b+1,C=m.split(""),M=C.slice(0,S),A=C.slice(S,S+h+1),P=M.join(""),E=A.join("");E.length=v)return u.formatNumber(c/v,h,"")+" "+d+"B"}return c>=1024?u.formatNumber(c/1024,0)+" KB":u.formatNumber(c,0)+u.pluralize(c," byte")},filesize:function(){return u.fileSize.apply(u,arguments)},formatNumber:function(c){var h=arguments.length<=1||arguments[1]===void 0?0:arguments[1],d=arguments.length<=2||arguments[2]===void 0?",":arguments[2],v=arguments.length<=3||arguments[3]===void 0?".":arguments[3],p=function(S,C,M){return M?S.substr(0,M)+C:""},m=function(S,C,M){return S.substr(M).replace(/(\d{3})(?=\d)/g,"$1"+C)},g=function(S,C,M){return M?C+u.toFixed(Math.abs(S),M).split(".")[1]:""},y=u.normalizePrecision(h),_=c<0&&"-"||"",b=String(parseInt(u.toFixed(Math.abs(c||0),y),10)),x=b.length>3?b.length%3:0;return _+p(b,d,x)+m(b,d,x)+g(c,v,y)},toFixed:function(c,h){h=a(h)?h:u.normalizePrecision(h,0);var d=Math.pow(10,h);return(Math.round(c*d)/d).toFixed(h)},normalizePrecision:function(c,h){return c=Math.round(Math.abs(c)),o(c)?h:c},ordinal:function(c){var h=parseInt(c,10);if(h===0)return c;var d=h%100;if([11,12,13].indexOf(d)>=0)return h+"th";var v=h%10,p=void 0;switch(v){case 1:p="st";break;case 2:p="nd";break;case 3:p="rd";break;default:p="th"}return""+h+p},times:function(c){var h=arguments.length<=1||arguments[1]===void 0?{}:arguments[1];if(s(c)&&c>=0){var d=parseFloat(c),v=["never","once","twice"];if(a(h[d]))return String(h[d]);var p=a(v[d])&&v[d].toString();return p||d.toString()+" times"}return null},pluralize:function(c,h,d){return a(c)&&a(h)?(d=a(d)?d:h+"s",parseInt(c,10)===1?h:d):null},truncate:function(c){var h=arguments.length<=1||arguments[1]===void 0?100:arguments[1],d=arguments.length<=2||arguments[2]===void 0?"...":arguments[2];return c.length>h?c.substring(0,h-d.length)+d:c},truncateWords:function(c,h){for(var d=c.split(" "),v="",p=0;ph?v+"...":null},truncatewords:function(){return u.truncateWords.apply(u,arguments)},boundedNumber:function(c){var h=arguments.length<=1||arguments[1]===void 0?100:arguments[1],d=arguments.length<=2||arguments[2]===void 0?"+":arguments[2],v=void 0;return s(c)&&s(h)&&c>h&&(v=h+d),(v||c).toString()},truncatenumber:function(){return u.boundedNumber.apply(u,arguments)},oxford:function(c,h,d){var v=c.length,p=void 0;if(v<2)return String(c);if(v===2)return c.join(" and ");if(a(h)&&v>h){var m=v-h;p=h,d=a(d)?d:", and "+m+" "+u.pluralize(m,"other")}else p=-1,d=", and "+c[v-1];return c.slice(0,p).join(", ")+d},dictionary:function(c){var h=arguments.length<=1||arguments[1]===void 0?" is ":arguments[1],d=arguments.length<=2||arguments[2]===void 0?", ":arguments[2],v="";if(a(c)&&(typeof c>"u"?"undefined":r(c))==="object"&&!l(c)){var p=[];for(var m in c)if(c.hasOwnProperty(m)){var g=c[m];p.push(""+m+h+g)}return p.join(d)}return v},frequency:function(c,h){if(!l(c))return null;var d=c.length,v=u.times(d);return d===0?v+" "+h:h+" "+v},pace:function(c,h){var d=arguments.length<=2||arguments[2]===void 0?"time":arguments[2];if(c===0||h===0)return"No "+u.pluralize(0,d);for(var v="Approximately",p=void 0,m=void 0,g=c/h,y=0;y1){p=_.name;break}}p||(v="Less than",m=1,p=n[n.length-1].name);var b=Math.round(m);return d=u.pluralize(b,d),v+" "+b+" "+d+" per "+p},nl2br:function(c){var h=arguments.length<=1||arguments[1]===void 0?"
":arguments[1];return c.replace(/\n/g,h)},br2nl:function(c){var h=arguments.length<=1||arguments[1]===void 0?`\r + */const Zo=typeof window<"u";function UW(e){return e.__esModule||e[Symbol.toStringTag]==="Module"}const lt=Object.assign;function dv(e,t){const r={};for(const n in t){const i=t[n];r[n]=En(i)?i.map(e):e(i)}return r}const Gl=()=>{},En=Array.isArray,YW=/\/$/,jW=e=>e.replace(YW,"");function hv(e,t,r="/"){let n,i={},a="",o="";const s=t.indexOf("#");let l=t.indexOf("?");return s=0&&(l=-1),l>-1&&(n=t.slice(0,l),a=t.slice(l+1,s>-1?s:t.length),i=e(a)),s>-1&&(n=n||t.slice(0,s),o=t.slice(s,t.length)),n=ZW(n??t,r),{fullPath:n+(a&&"?")+a+o,path:n,query:i,hash:o}}function qW(e,t){const r=t.query?e(t.query):"";return t.path+(r&&"?")+r+(t.hash||"")}function R1(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||"/"}function KW(e,t,r){const n=t.matched.length-1,i=r.matched.length-1;return n>-1&&n===i&&Es(t.matched[n],r.matched[i])&&a2(t.params,r.params)&&e(t.query)===e(r.query)&&t.hash===r.hash}function Es(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function a2(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(const r in e)if(!XW(e[r],t[r]))return!1;return!0}function XW(e,t){return En(e)?k1(e,t):En(t)?k1(t,e):e===t}function k1(e,t){return En(t)?e.length===t.length&&e.every((r,n)=>r===t[n]):e.length===1&&e[0]===t}function ZW(e,t){if(e.startsWith("/"))return e;if(!e)return t;const r=t.split("/"),n=e.split("/"),i=n[n.length-1];(i===".."||i===".")&&n.push("");let a=r.length-1,o,s;for(o=0;o1&&a--;else break;return r.slice(0,a).join("/")+"/"+n.slice(o-(o===n.length?1:0)).join("/")}var Tu;(function(e){e.pop="pop",e.push="push"})(Tu||(Tu={}));var Ul;(function(e){e.back="back",e.forward="forward",e.unknown=""})(Ul||(Ul={}));function QW(e){if(!e)if(Zo){const t=document.querySelector("base");e=t&&t.getAttribute("href")||"/",e=e.replace(/^\w+:\/\/[^\/]+/,"")}else e="/";return e[0]!=="/"&&e[0]!=="#"&&(e="/"+e),jW(e)}const JW=/^[^#]+#/;function eG(e,t){return e.replace(JW,"#")+t}function tG(e,t){const r=document.documentElement.getBoundingClientRect(),n=e.getBoundingClientRect();return{behavior:t.behavior,left:n.left-r.left-(t.left||0),top:n.top-r.top-(t.top||0)}}const gh=()=>({left:window.pageXOffset,top:window.pageYOffset});function rG(e){let t;if("el"in e){const r=e.el,n=typeof r=="string"&&r.startsWith("#"),i=typeof r=="string"?n?document.getElementById(r.slice(1)):document.querySelector(r):r;if(!i)return;t=tG(i,e)}else t=e;"scrollBehavior"in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left!=null?t.left:window.pageXOffset,t.top!=null?t.top:window.pageYOffset)}function N1(e,t){return(history.state?history.state.position-t:-1)+e}const Lg=new Map;function nG(e,t){Lg.set(e,t)}function iG(e){const t=Lg.get(e);return Lg.delete(e),t}let aG=()=>location.protocol+"//"+location.host;function o2(e,t){const{pathname:r,search:n,hash:i}=t,a=e.indexOf("#");if(a>-1){let s=i.includes(e.slice(a))?e.slice(a).length:1,l=i.slice(s);return l[0]!=="/"&&(l="/"+l),R1(l,"")}return R1(r,e)+n+i}function oG(e,t,r,n){let i=[],a=[],o=null;const s=({state:h})=>{const d=o2(e,location),v=r.value,p=t.value;let m=0;if(h){if(r.value=d,t.value=h,o&&o===v){o=null;return}m=p?h.position-p.position:0}else n(d);i.forEach(g=>{g(r.value,v,{delta:m,type:Tu.pop,direction:m?m>0?Ul.forward:Ul.back:Ul.unknown})})};function l(){o=r.value}function u(h){i.push(h);const d=()=>{const v=i.indexOf(h);v>-1&&i.splice(v,1)};return a.push(d),d}function f(){const{history:h}=window;h.state&&h.replaceState(lt({},h.state,{scroll:gh()}),"")}function c(){for(const h of a)h();a=[],window.removeEventListener("popstate",s),window.removeEventListener("beforeunload",f)}return window.addEventListener("popstate",s),window.addEventListener("beforeunload",f,{passive:!0}),{pauseListeners:l,listen:u,destroy:c}}function B1(e,t,r,n=!1,i=!1){return{back:e,current:t,forward:r,replaced:n,position:window.history.length,scroll:i?gh():null}}function sG(e){const{history:t,location:r}=window,n={value:o2(e,r)},i={value:t.state};i.value||a(n.value,{back:null,current:n.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function a(l,u,f){const c=e.indexOf("#"),h=c>-1?(r.host&&document.querySelector("base")?e:e.slice(c))+l:aG()+e+l;try{t[f?"replaceState":"pushState"](u,"",h),i.value=u}catch(d){console.error(d),r[f?"replace":"assign"](h)}}function o(l,u){const f=lt({},t.state,B1(i.value.back,l,i.value.forward,!0),u,{position:i.value.position});a(l,f,!0),n.value=l}function s(l,u){const f=lt({},i.value,t.state,{forward:l,scroll:gh()});a(f.current,f,!0);const c=lt({},B1(n.value,l,null),{position:f.position+1},u);a(l,c,!1),n.value=l}return{location:n,state:i,push:s,replace:o}}function lG(e){e=QW(e);const t=sG(e),r=oG(e,t.state,t.location,t.replace);function n(a,o=!0){o||r.pauseListeners(),history.go(a)}const i=lt({location:"",base:e,go:n,createHref:eG.bind(null,e)},t,r);return Object.defineProperty(i,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(i,"state",{enumerable:!0,get:()=>t.state.value}),i}function uG(e){return e=location.host?e||location.pathname+location.search:"",e.includes("#")||(e+="#"),lG(e)}function fG(e){return typeof e=="string"||e&&typeof e=="object"}function s2(e){return typeof e=="string"||typeof e=="symbol"}const Ri={path:"/",name:void 0,params:{},query:{},hash:"",fullPath:"/",matched:[],meta:{},redirectedFrom:void 0},l2=Symbol("");var F1;(function(e){e[e.aborted=4]="aborted",e[e.cancelled=8]="cancelled",e[e.duplicated=16]="duplicated"})(F1||(F1={}));function Ls(e,t){return lt(new Error,{type:e,[l2]:!0},t)}function li(e,t){return e instanceof Error&&l2 in e&&(t==null||!!(e.type&t))}const $1="[^/]+?",cG={sensitive:!1,strict:!1,start:!0,end:!0},dG=/[.+*?^${}()[\]/\\]/g;function hG(e,t){const r=lt({},cG,t),n=[];let i=r.start?"^":"";const a=[];for(const u of e){const f=u.length?[]:[90];r.strict&&!u.length&&(i+="/");for(let c=0;ct.length?t.length===1&&t[0]===80?1:-1:0}function pG(e,t){let r=0;const n=e.score,i=t.score;for(;r0&&t[t.length-1]<0}const gG={type:0,value:""},mG=/[a-zA-Z0-9_]/;function yG(e){if(!e)return[[]];if(e==="/")return[[gG]];if(!e.startsWith("/"))throw new Error(`Invalid path "${e}"`);function t(d){throw new Error(`ERR (${r})/"${u}": ${d}`)}let r=0,n=r;const i=[];let a;function o(){a&&i.push(a),a=[]}let s=0,l,u="",f="";function c(){u&&(r===0?a.push({type:0,value:u}):r===1||r===2||r===3?(a.length>1&&(l==="*"||l==="+")&&t(`A repeatable param (${u}) must be alone in its segment. eg: '/:ids+.`),a.push({type:1,value:u,regexp:f,repeatable:l==="*"||l==="+",optional:l==="*"||l==="?"})):t("Invalid state to consume buffer"),u="")}function h(){u+=l}for(;s{o(y)}:Gl}function o(f){if(s2(f)){const c=n.get(f);c&&(n.delete(f),r.splice(r.indexOf(c),1),c.children.forEach(o),c.alias.forEach(o))}else{const c=r.indexOf(f);c>-1&&(r.splice(c,1),f.record.name&&n.delete(f.record.name),f.children.forEach(o),f.alias.forEach(o))}}function s(){return r}function l(f){let c=0;for(;c=0&&(f.record.path!==r[c].record.path||!u2(f,r[c]));)c++;r.splice(c,0,f),f.record.name&&!V1(f)&&n.set(f.record.name,f)}function u(f,c){let h,d={},v,p;if("name"in f&&f.name){if(h=n.get(f.name),!h)throw Ls(1,{location:f});p=h.record.name,d=lt(z1(c.params,h.keys.filter(y=>!y.optional).map(y=>y.name)),f.params&&z1(f.params,h.keys.map(y=>y.name))),v=h.stringify(d)}else if("path"in f)v=f.path,h=r.find(y=>y.re.test(v)),h&&(d=h.parse(v),p=h.record.name);else{if(h=c.name?n.get(c.name):r.find(y=>y.re.test(c.path)),!h)throw Ls(1,{location:f,currentLocation:c});p=h.record.name,d=lt({},c.params,f.params),v=h.stringify(d)}const m=[];let g=h;for(;g;)m.unshift(g.record),g=g.parent;return{name:p,path:v,params:d,matched:m,meta:xG(m)}}return e.forEach(f=>a(f)),{addRoute:a,resolve:u,removeRoute:o,getRoutes:s,getRecordMatcher:i}}function z1(e,t){const r={};for(const n of t)n in e&&(r[n]=e[n]);return r}function wG(e){return{path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:void 0,beforeEnter:e.beforeEnter,props:SG(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:"components"in e?e.components||null:e.component&&{default:e.component}}}function SG(e){const t={},r=e.props||!1;if("component"in e)t.default=r;else for(const n in e.components)t[n]=typeof r=="object"?r[n]:r;return t}function V1(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function xG(e){return e.reduce((t,r)=>lt(t,r.meta),{})}function W1(e,t){const r={};for(const n in e)r[n]=n in t?t[n]:e[n];return r}function u2(e,t){return t.children.some(r=>r===e||u2(e,r))}const f2=/#/g,CG=/&/g,TG=/\//g,MG=/=/g,AG=/\?/g,c2=/\+/g,PG=/%5B/g,EG=/%5D/g,d2=/%5E/g,LG=/%60/g,h2=/%7B/g,DG=/%7C/g,v2=/%7D/g,IG=/%20/g;function Zy(e){return encodeURI(""+e).replace(DG,"|").replace(PG,"[").replace(EG,"]")}function OG(e){return Zy(e).replace(h2,"{").replace(v2,"}").replace(d2,"^")}function Dg(e){return Zy(e).replace(c2,"%2B").replace(IG,"+").replace(f2,"%23").replace(CG,"%26").replace(LG,"`").replace(h2,"{").replace(v2,"}").replace(d2,"^")}function RG(e){return Dg(e).replace(MG,"%3D")}function kG(e){return Zy(e).replace(f2,"%23").replace(AG,"%3F")}function NG(e){return e==null?"":kG(e).replace(TG,"%2F")}function yd(e){try{return decodeURIComponent(""+e)}catch{}return""+e}function BG(e){const t={};if(e===""||e==="?")return t;const n=(e[0]==="?"?e.slice(1):e).split("&");for(let i=0;ia&&Dg(a)):[n&&Dg(n)]).forEach(a=>{a!==void 0&&(t+=(t.length?"&":"")+r,a!=null&&(t+="="+a))})}return t}function FG(e){const t={};for(const r in e){const n=e[r];n!==void 0&&(t[r]=En(n)?n.map(i=>i==null?null:""+i):n==null?n:""+n)}return t}const $G=Symbol(""),U1=Symbol(""),Qy=Symbol(""),p2=Symbol(""),Ig=Symbol("");function el(){let e=[];function t(n){return e.push(n),()=>{const i=e.indexOf(n);i>-1&&e.splice(i,1)}}function r(){e=[]}return{add:t,list:()=>e.slice(),reset:r}}function Xi(e,t,r,n,i){const a=n&&(n.enterCallbacks[i]=n.enterCallbacks[i]||[]);return()=>new Promise((o,s)=>{const l=c=>{c===!1?s(Ls(4,{from:r,to:t})):c instanceof Error?s(c):fG(c)?s(Ls(2,{from:t,to:c})):(a&&n.enterCallbacks[i]===a&&typeof c=="function"&&a.push(c),o())},u=e.call(n&&n.instances[i],t,r,l);let f=Promise.resolve(u);e.length<3&&(f=f.then(l)),f.catch(c=>s(c))})}function vv(e,t,r,n){const i=[];for(const a of e)for(const o in a.components){let s=a.components[o];if(!(t!=="beforeRouteEnter"&&!a.instances[o]))if(HG(s)){const u=(s.__vccOpts||s)[t];u&&i.push(Xi(u,r,n,a,o))}else{let l=s();i.push(()=>l.then(u=>{if(!u)return Promise.reject(new Error(`Couldn't resolve component "${o}" at "${a.path}"`));const f=UW(u)?u.default:u;a.components[o]=f;const h=(f.__vccOpts||f)[t];return h&&Xi(h,r,n,a,o)()}))}}return i}function HG(e){return typeof e=="object"||"displayName"in e||"props"in e||"__vccOpts"in e}function Y1(e){const t=Le(Qy),r=Le(p2),n=k(()=>t.resolve(T(e.to))),i=k(()=>{const{matched:l}=n.value,{length:u}=l,f=l[u-1],c=r.matched;if(!f||!c.length)return-1;const h=c.findIndex(Es.bind(null,f));if(h>-1)return h;const d=j1(l[u-2]);return u>1&&j1(f)===d&&c[c.length-1].path!==d?c.findIndex(Es.bind(null,l[u-2])):h}),a=k(()=>i.value>-1&&GG(r.params,n.value.params)),o=k(()=>i.value>-1&&i.value===r.matched.length-1&&a2(r.params,n.value.params));function s(l={}){return WG(l)?t[T(e.replace)?"replace":"push"](T(e.to)).catch(Gl):Promise.resolve()}return{route:n,href:k(()=>n.value.href),isActive:a,isExactActive:o,navigate:s}}const zG=ie({name:"RouterLink",compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:"page"}},useLink:Y1,setup(e,{slots:t}){const r=Ln(Y1(e)),{options:n}=Le(Qy),i=k(()=>({[q1(e.activeClass,n.linkActiveClass,"router-link-active")]:r.isActive,[q1(e.exactActiveClass,n.linkExactActiveClass,"router-link-exact-active")]:r.isExactActive}));return()=>{const a=t.default&&t.default(r);return e.custom?a:Te("a",{"aria-current":r.isExactActive?e.ariaCurrentValue:null,href:r.href,onClick:r.navigate,class:i.value},a)}}}),VG=zG;function WG(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&!(e.button!==void 0&&e.button!==0)){if(e.currentTarget&&e.currentTarget.getAttribute){const t=e.currentTarget.getAttribute("target");if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function GG(e,t){for(const r in t){const n=t[r],i=e[r];if(typeof n=="string"){if(n!==i)return!1}else if(!En(i)||i.length!==n.length||n.some((a,o)=>a!==i[o]))return!1}return!0}function j1(e){return e?e.aliasOf?e.aliasOf.path:e.path:""}const q1=(e,t,r)=>e??t??r,UG=ie({name:"RouterView",inheritAttrs:!1,props:{name:{type:String,default:"default"},route:Object},compatConfig:{MODE:3},setup(e,{attrs:t,slots:r}){const n=Le(Ig),i=k(()=>e.route||n.value),a=Le(U1,0),o=k(()=>{let u=T(a);const{matched:f}=i.value;let c;for(;(c=f[u])&&!c.components;)u++;return u}),s=k(()=>i.value.matched[o.value]);Dt(U1,k(()=>o.value+1)),Dt($G,s),Dt(Ig,i);const l=$();return be(()=>[l.value,s.value,e.name],([u,f,c],[h,d,v])=>{f&&(f.instances[c]=u,d&&d!==f&&u&&u===h&&(f.leaveGuards.size||(f.leaveGuards=d.leaveGuards),f.updateGuards.size||(f.updateGuards=d.updateGuards))),u&&f&&(!d||!Es(f,d)||!h)&&(f.enterCallbacks[c]||[]).forEach(p=>p(u))},{flush:"post"}),()=>{const u=i.value,f=e.name,c=s.value,h=c&&c.components[f];if(!h)return K1(r.default,{Component:h,route:u});const d=c.props[f],v=d?d===!0?u.params:typeof d=="function"?d(u):d:null,m=Te(h,lt({},v,t,{onVnodeUnmounted:g=>{g.component.isUnmounted&&(c.instances[f]=null)},ref:l}));return K1(r.default,{Component:m,route:u})||m}}});function K1(e,t){if(!e)return null;const r=e(t);return r.length===1?r[0]:r}const YG=UG;function jG(e){const t=bG(e.routes,e),r=e.parseQuery||BG,n=e.stringifyQuery||G1,i=e.history,a=el(),o=el(),s=el(),l=ty(Ri);let u=Ri;Zo&&e.scrollBehavior&&"scrollRestoration"in history&&(history.scrollRestoration="manual");const f=dv.bind(null,B=>""+B),c=dv.bind(null,NG),h=dv.bind(null,yd);function d(B,Y){let K,Q;return s2(B)?(K=t.getRecordMatcher(B),Q=Y):Q=B,t.addRoute(Q,K)}function v(B){const Y=t.getRecordMatcher(B);Y&&t.removeRoute(Y)}function p(){return t.getRoutes().map(B=>B.record)}function m(B){return!!t.getRecordMatcher(B)}function g(B,Y){if(Y=lt({},Y||l.value),typeof B=="string"){const I=hv(r,B,Y.path),W=t.resolve({path:I.path},Y),X=i.createHref(I.fullPath);return lt(I,W,{params:h(W.params),hash:yd(I.hash),redirectedFrom:void 0,href:X})}let K;if("path"in B)K=lt({},B,{path:hv(r,B.path,Y.path).path});else{const I=lt({},B.params);for(const W in I)I[W]==null&&delete I[W];K=lt({},B,{params:c(I)}),Y.params=c(Y.params)}const Q=t.resolve(K,Y),oe=B.hash||"";Q.params=f(h(Q.params));const pe=qW(n,lt({},B,{hash:OG(oe),path:Q.path})),D=i.createHref(pe);return lt({fullPath:pe,hash:oe,query:n===G1?FG(B.query):B.query||{}},Q,{redirectedFrom:void 0,href:D})}function y(B){return typeof B=="string"?hv(r,B,l.value.path):lt({},B)}function _(B,Y){if(u!==B)return Ls(8,{from:Y,to:B})}function b(B){return S(B)}function x(B){return b(lt(y(B),{replace:!0}))}function w(B){const Y=B.matched[B.matched.length-1];if(Y&&Y.redirect){const{redirect:K}=Y;let Q=typeof K=="function"?K(B):K;return typeof Q=="string"&&(Q=Q.includes("?")||Q.includes("#")?Q=y(Q):{path:Q},Q.params={}),lt({query:B.query,hash:B.hash,params:"path"in Q?{}:B.params},Q)}}function S(B,Y){const K=u=g(B),Q=l.value,oe=B.state,pe=B.force,D=B.replace===!0,I=w(K);if(I)return S(lt(y(I),{state:typeof I=="object"?lt({},oe,I.state):oe,force:pe,replace:D}),Y||K);const W=K;W.redirectedFrom=Y;let X;return!pe&&KW(n,Q,K)&&(X=Ls(16,{to:W,from:Q}),ee(Q,Q,!0,!1)),(X?Promise.resolve(X):A(W,Q)).catch(j=>li(j)?li(j,2)?j:z(j):U(j,W,Q)).then(j=>{if(j){if(li(j,2))return S(lt({replace:D},y(j.to),{state:typeof j.to=="object"?lt({},oe,j.to.state):oe,force:pe}),Y||W)}else j=E(W,Q,!0,D,oe);return P(W,Q,j),j})}function C(B,Y){const K=_(B,Y);return K?Promise.reject(K):Promise.resolve()}function M(B){const Y=we.values().next().value;return Y&&typeof Y.runWithContext=="function"?Y.runWithContext(B):B()}function A(B,Y){let K;const[Q,oe,pe]=qG(B,Y);K=vv(Q.reverse(),"beforeRouteLeave",B,Y);for(const I of Q)I.leaveGuards.forEach(W=>{K.push(Xi(W,B,Y))});const D=C.bind(null,B,Y);return K.push(D),Ie(K).then(()=>{K=[];for(const I of a.list())K.push(Xi(I,B,Y));return K.push(D),Ie(K)}).then(()=>{K=vv(oe,"beforeRouteUpdate",B,Y);for(const I of oe)I.updateGuards.forEach(W=>{K.push(Xi(W,B,Y))});return K.push(D),Ie(K)}).then(()=>{K=[];for(const I of pe)if(I.beforeEnter)if(En(I.beforeEnter))for(const W of I.beforeEnter)K.push(Xi(W,B,Y));else K.push(Xi(I.beforeEnter,B,Y));return K.push(D),Ie(K)}).then(()=>(B.matched.forEach(I=>I.enterCallbacks={}),K=vv(pe,"beforeRouteEnter",B,Y),K.push(D),Ie(K))).then(()=>{K=[];for(const I of o.list())K.push(Xi(I,B,Y));return K.push(D),Ie(K)}).catch(I=>li(I,8)?I:Promise.reject(I))}function P(B,Y,K){s.list().forEach(Q=>M(()=>Q(B,Y,K)))}function E(B,Y,K,Q,oe){const pe=_(B,Y);if(pe)return pe;const D=Y===Ri,I=Zo?history.state:{};K&&(Q||D?i.replace(B.fullPath,lt({scroll:D&&I&&I.scroll},oe)):i.push(B.fullPath,oe)),l.value=B,ee(B,Y,K,D),z()}let L;function O(){L||(L=i.listen((B,Y,K)=>{if(!$e.listening)return;const Q=g(B),oe=w(Q);if(oe){S(lt(oe,{replace:!0}),Q).catch(Gl);return}u=Q;const pe=l.value;Zo&&nG(N1(pe.fullPath,K.delta),gh()),A(Q,pe).catch(D=>li(D,12)?D:li(D,2)?(S(D.to,Q).then(I=>{li(I,20)&&!K.delta&&K.type===Tu.pop&&i.go(-1,!1)}).catch(Gl),Promise.reject()):(K.delta&&i.go(-K.delta,!1),U(D,Q,pe))).then(D=>{D=D||E(Q,pe,!1),D&&(K.delta&&!li(D,8)?i.go(-K.delta,!1):K.type===Tu.pop&&li(D,20)&&i.go(-1,!1)),P(Q,pe,D)}).catch(Gl)}))}let N=el(),H=el(),V;function U(B,Y,K){z(B);const Q=H.list();return Q.length?Q.forEach(oe=>oe(B,Y,K)):console.error(B),Promise.reject(B)}function F(){return V&&l.value!==Ri?Promise.resolve():new Promise((B,Y)=>{N.add([B,Y])})}function z(B){return V||(V=!B,O(),N.list().forEach(([Y,K])=>B?K(B):Y()),N.reset()),B}function ee(B,Y,K,Q){const{scrollBehavior:oe}=e;if(!Zo||!oe)return Promise.resolve();const pe=!K&&iG(N1(B.fullPath,0))||(Q||!K)&&history.state&&history.state.scroll||null;return Nt().then(()=>oe(B,Y,pe)).then(D=>D&&rG(D)).catch(D=>U(D,B,Y))}const J=B=>i.go(B);let me;const we=new Set,$e={currentRoute:l,listening:!0,addRoute:d,removeRoute:v,hasRoute:m,getRoutes:p,resolve:g,options:e,push:b,replace:x,go:J,back:()=>J(-1),forward:()=>J(1),beforeEach:a.add,beforeResolve:o.add,afterEach:s.add,onError:H.add,isReady:F,install(B){const Y=this;B.component("RouterLink",VG),B.component("RouterView",YG),B.config.globalProperties.$router=Y,Object.defineProperty(B.config.globalProperties,"$route",{enumerable:!0,get:()=>T(l)}),Zo&&!me&&l.value===Ri&&(me=!0,b(i.location).catch(oe=>{}));const K={};for(const oe in Ri)Object.defineProperty(K,oe,{get:()=>l.value[oe],enumerable:!0});B.provide(Qy,Y),B.provide(p2,Qm(K)),B.provide(Ig,l);const Q=B.unmount;we.add(B),B.unmount=function(){we.delete(B),we.size<1&&(u=Ri,L&&L(),L=null,l.value=Ri,me=!1,V=!1),Q()}}};function Ie(B){return B.reduce((Y,K)=>Y.then(()=>M(K)),Promise.resolve())}return $e}function qG(e,t){const r=[],n=[],i=[],a=Math.max(t.matched.length,e.matched.length);for(let o=0;oEs(u,s))?n.push(s):r.push(s));const l=e.matched[o];l&&(t.matched.find(u=>Es(u,l))||i.push(l))}return[r,n,i]}var Og={exports:{}};(function(e,t){var r=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(n){return typeof n}:function(n){return n&&typeof Symbol=="function"&&n.constructor===Symbol?"symbol":typeof n};(function(n,i){r(t)==="object"?e.exports=i():n.Humanize=i()})(a8,function(){var n=[{name:"second",value:1e3},{name:"minute",value:6e4},{name:"hour",value:36e5},{name:"day",value:864e5},{name:"week",value:6048e5}],i={P:Math.pow(2,50),T:Math.pow(2,40),G:Math.pow(2,30),M:Math.pow(2,20)},a=function(c){return typeof c<"u"&&c!==null},o=function(c){return c!==c},s=function(c){return isFinite(c)&&!o(parseFloat(c))},l=function(c){var h=Object.prototype.toString.call(c);return h==="[object Array]"},u={intword:function(c,h){var d=arguments.length<=2||arguments[2]===void 0?2:arguments[2];return u.compactInteger(c,d)},compactInteger:function(c){var h=arguments.length<=1||arguments[1]===void 0?0:arguments[1];h=Math.max(h,0);var d=parseInt(c,10),v=d<0?"-":"",p=Math.abs(d),m=String(p),g=m.length,y=[13,10,7,4],_=["T","B","M","k"];if(p<1e3)return""+v+m;if(g>y[0]+3)return d.toExponential(h).replace("e+","x10^");for(var b=void 0,x=0;x=w){b=w;break}}var S=g-b+1,C=m.split(""),M=C.slice(0,S),A=C.slice(S,S+h+1),P=M.join(""),E=A.join("");E.length=v)return u.formatNumber(c/v,h,"")+" "+d+"B"}return c>=1024?u.formatNumber(c/1024,0)+" KB":u.formatNumber(c,0)+u.pluralize(c," byte")},filesize:function(){return u.fileSize.apply(u,arguments)},formatNumber:function(c){var h=arguments.length<=1||arguments[1]===void 0?0:arguments[1],d=arguments.length<=2||arguments[2]===void 0?",":arguments[2],v=arguments.length<=3||arguments[3]===void 0?".":arguments[3],p=function(S,C,M){return M?S.substr(0,M)+C:""},m=function(S,C,M){return S.substr(M).replace(/(\d{3})(?=\d)/g,"$1"+C)},g=function(S,C,M){return M?C+u.toFixed(Math.abs(S),M).split(".")[1]:""},y=u.normalizePrecision(h),_=c<0&&"-"||"",b=String(parseInt(u.toFixed(Math.abs(c||0),y),10)),x=b.length>3?b.length%3:0;return _+p(b,d,x)+m(b,d,x)+g(c,v,y)},toFixed:function(c,h){h=a(h)?h:u.normalizePrecision(h,0);var d=Math.pow(10,h);return(Math.round(c*d)/d).toFixed(h)},normalizePrecision:function(c,h){return c=Math.round(Math.abs(c)),o(c)?h:c},ordinal:function(c){var h=parseInt(c,10);if(h===0)return c;var d=h%100;if([11,12,13].indexOf(d)>=0)return h+"th";var v=h%10,p=void 0;switch(v){case 1:p="st";break;case 2:p="nd";break;case 3:p="rd";break;default:p="th"}return""+h+p},times:function(c){var h=arguments.length<=1||arguments[1]===void 0?{}:arguments[1];if(s(c)&&c>=0){var d=parseFloat(c),v=["never","once","twice"];if(a(h[d]))return String(h[d]);var p=a(v[d])&&v[d].toString();return p||d.toString()+" times"}return null},pluralize:function(c,h,d){return a(c)&&a(h)?(d=a(d)?d:h+"s",parseInt(c,10)===1?h:d):null},truncate:function(c){var h=arguments.length<=1||arguments[1]===void 0?100:arguments[1],d=arguments.length<=2||arguments[2]===void 0?"...":arguments[2];return c.length>h?c.substring(0,h-d.length)+d:c},truncateWords:function(c,h){for(var d=c.split(" "),v="",p=0;ph?v+"...":null},truncatewords:function(){return u.truncateWords.apply(u,arguments)},boundedNumber:function(c){var h=arguments.length<=1||arguments[1]===void 0?100:arguments[1],d=arguments.length<=2||arguments[2]===void 0?"+":arguments[2],v=void 0;return s(c)&&s(h)&&c>h&&(v=h+d),(v||c).toString()},truncatenumber:function(){return u.boundedNumber.apply(u,arguments)},oxford:function(c,h,d){var v=c.length,p=void 0;if(v<2)return String(c);if(v===2)return c.join(" and ");if(a(h)&&v>h){var m=v-h;p=h,d=a(d)?d:", and "+m+" "+u.pluralize(m,"other")}else p=-1,d=", and "+c[v-1];return c.slice(0,p).join(", ")+d},dictionary:function(c){var h=arguments.length<=1||arguments[1]===void 0?" is ":arguments[1],d=arguments.length<=2||arguments[2]===void 0?", ":arguments[2],v="";if(a(c)&&(typeof c>"u"?"undefined":r(c))==="object"&&!l(c)){var p=[];for(var m in c)if(c.hasOwnProperty(m)){var g=c[m];p.push(""+m+h+g)}return p.join(d)}return v},frequency:function(c,h){if(!l(c))return null;var d=c.length,v=u.times(d);return d===0?v+" "+h:h+" "+v},pace:function(c,h){var d=arguments.length<=2||arguments[2]===void 0?"time":arguments[2];if(c===0||h===0)return"No "+u.pluralize(0,d);for(var v="Approximately",p=void 0,m=void 0,g=c/h,y=0;y1){p=_.name;break}}p||(v="Less than",m=1,p=n[n.length-1].name);var b=Math.round(m);return d=u.pluralize(b,d),v+" "+b+" "+d+" per "+p},nl2br:function(c){var h=arguments.length<=1||arguments[1]===void 0?"
":arguments[1];return c.replace(/\n/g,h)},br2nl:function(c){var h=arguments.length<=1||arguments[1]===void 0?`\r `:arguments[1];return c.replace(/\/g,h)},capitalize:function(c){var h=arguments.length<=1||arguments[1]===void 0?!1:arguments[1];return""+c.charAt(0).toUpperCase()+(h?c.slice(1).toLowerCase():c.slice(1))},capitalizeAll:function(c){return c.replace(/(?:^|\s)\S/g,function(h){return h.toUpperCase()})},titleCase:function(c){var h=/\b(a|an|and|at|but|by|de|en|for|if|in|of|on|or|the|to|via|vs?\.?)\b/i,d=/\S+[A-Z]+\S*/,v=/\s+/,p=/-/,m=void 0;return m=function(y){for(var _=arguments.length<=1||arguments[1]===void 0?!1:arguments[1],b=arguments.length<=2||arguments[2]===void 0?!0:arguments[2],x=[],w=y.split(_?p:v),S=0;S"u"&&typeof self<"u"?He.worker=!0:typeof navigator>"u"?(He.node=!0,He.svgSupported=!0):ZG(navigator.userAgent,He);function ZG(e,t){var r=t.browser,n=e.match(/Firefox\/([\d.]+)/),i=e.match(/MSIE\s([\d.]+)/)||e.match(/Trident\/.+?rv:(([\d.]+))/),a=e.match(/Edge?\/([\d.]+)/),o=/micromessenger/i.test(e);n&&(r.firefox=!0,r.version=n[1]),i&&(r.ie=!0,r.version=i[1]),a&&(r.edge=!0,r.version=a[1],r.newEdge=+a[1].split(".")[0]>18),o&&(r.weChat=!0),t.svgSupported=typeof SVGRect<"u",t.touchEventsSupported="ontouchstart"in window&&!r.ie&&!r.edge,t.pointerEventsSupported="onpointerdown"in window&&(r.edge||r.ie&&+r.version>=11),t.domSupported=typeof document<"u";var s=document.documentElement.style;t.transform3dSupported=(r.ie&&"transition"in s||r.edge||"WebKitCSSMatrix"in window&&"m11"in new WebKitCSSMatrix||"MozPerspective"in s)&&!("OTransition"in s),t.transformSupported=t.transform3dSupported||r.ie&&+r.version>=9}var Jy=12,QG="sans-serif",_o=Jy+"px "+QG,JG=20,eU=100,tU="007LLmW'55;N0500LLLLLLLLLL00NNNLzWW\\\\WQb\\0FWLg\\bWb\\WQ\\WrWWQ000CL5LLFLL0LL**F*gLLLL5F0LF\\FFF5.5N";function rU(e){var t={};if(typeof JSON>"u")return t;for(var r=0;r=0)s=o*r.length;else for(var l=0;l>1)%2;s.cssText=["position: absolute","visibility: hidden","padding: 0","margin: 0","border-width: 0","user-select: none","width:0","height:0",n[l]+":0",i[u]+":0",n[1-l]+":auto",i[1-u]+":auto",""].join("!important;"),e.appendChild(o),r.push(o)}return r}function AU(e,t,r){for(var n=r?"invTrans":"trans",i=t[n],a=t.srcCoords,o=[],s=[],l=!0,u=0;u<4;u++){var f=e[u].getBoundingClientRect(),c=2*u,h=f.left,d=f.top;o.push(h,d),l=l&&a&&h===a[c]&&d===a[c+1],s.push(e[u].offsetLeft,e[u].offsetTop)}return l&&i?i:(t.srcCoords=o,t[n]=r?J1(s,o):J1(o,s))}function x2(e){return e.nodeName.toUpperCase()==="CANVAS"}var PU=/([&<>"'])/g,EU={"&":"&","<":"<",">":">",'"':""","'":"'"};function tn(e){return e==null?"":(e+"").replace(PU,function(t,r){return EU[r]})}var LU=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,yv=[],DU=He.browser.firefox&&+He.browser.version.split(".")[0]<39;function zg(e,t,r,n){return r=r||{},n?tw(e,t,r):DU&&t.layerX!=null&&t.layerX!==t.offsetX?(r.zrX=t.layerX,r.zrY=t.layerY):t.offsetX!=null?(r.zrX=t.offsetX,r.zrY=t.offsetY):tw(e,t,r),r}function tw(e,t,r){if(He.domSupported&&e.getBoundingClientRect){var n=t.clientX,i=t.clientY;if(x2(e)){var a=e.getBoundingClientRect();r.zrX=n-a.left,r.zrY=i-a.top;return}else if(Hg(yv,e,n,i)){r.zrX=yv[0],r.zrY=yv[1];return}}r.zrX=r.zrY=0}function i0(e){return e||window.event}function Qr(e,t,r){if(t=i0(t),t.zrX!=null)return t;var n=t.type,i=n&&n.indexOf("touch")>=0;if(i){var o=n!=="touchend"?t.targetTouches[0]:t.changedTouches[0];o&&zg(e,o,t,r)}else{zg(e,t,t,r);var a=IU(t);t.zrDelta=a?a/120:-(t.detail||0)/3}var s=t.button;return t.which==null&&s!==void 0&&LU.test(t.type)&&(t.which=s&1?1:s&2?3:s&4?2:0),t}function IU(e){var t=e.wheelDelta;if(t)return t;var r=e.deltaX,n=e.deltaY;if(r==null||n==null)return t;var i=Math.abs(n!==0?n:r),a=n>0?-1:n<0?1:r>0?-1:1;return 3*i*a}function OU(e,t,r,n){e.addEventListener(t,r,n)}function RU(e,t,r,n){e.removeEventListener(t,r,n)}var C2=function(e){e.preventDefault(),e.stopPropagation(),e.cancelBubble=!0},kU=function(){function e(){this._track=[]}return e.prototype.recognize=function(t,r,n){return this._doTrack(t,r,n),this._recognize(t)},e.prototype.clear=function(){return this._track.length=0,this},e.prototype._doTrack=function(t,r,n){var i=t.touches;if(i){for(var a={points:[],touches:[],target:r,event:t},o=0,s=i.length;o1&&n&&n.length>1){var a=rw(n)/rw(i);!isFinite(a)&&(a=1),t.pinchScale=a;var o=NU(n);return t.pinchX=o[0],t.pinchY=o[1],{type:"pinch",target:e[0].target,event:t}}}}};function Pu(){return[1,0,0,1,0,0]}function a0(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=1,e[4]=0,e[5]=0,e}function BU(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e}function ls(e,t,r){var n=t[0]*r[0]+t[2]*r[1],i=t[1]*r[0]+t[3]*r[1],a=t[0]*r[2]+t[2]*r[3],o=t[1]*r[2]+t[3]*r[3],s=t[0]*r[4]+t[2]*r[5]+t[4],l=t[1]*r[4]+t[3]*r[5]+t[5];return e[0]=n,e[1]=i,e[2]=a,e[3]=o,e[4]=s,e[5]=l,e}function Vg(e,t,r){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4]+r[0],e[5]=t[5]+r[1],e}function o0(e,t,r){var n=t[0],i=t[2],a=t[4],o=t[1],s=t[3],l=t[5],u=Math.sin(r),f=Math.cos(r);return e[0]=n*f+o*u,e[1]=-n*u+o*f,e[2]=i*f+s*u,e[3]=-i*u+f*s,e[4]=f*a+u*l,e[5]=f*l-u*a,e}function FU(e,t,r){var n=r[0],i=r[1];return e[0]=t[0]*n,e[1]=t[1]*i,e[2]=t[2]*n,e[3]=t[3]*i,e[4]=t[4]*n,e[5]=t[5]*i,e}function bh(e,t){var r=t[0],n=t[2],i=t[4],a=t[1],o=t[3],s=t[5],l=r*o-a*n;return l?(l=1/l,e[0]=o*l,e[1]=-a*l,e[2]=-n*l,e[3]=r*l,e[4]=(n*s-o*i)*l,e[5]=(a*i-r*s)*l,e):null}var $U=function(){function e(t,r){this.x=t||0,this.y=r||0}return e.prototype.copy=function(t){return this.x=t.x,this.y=t.y,this},e.prototype.clone=function(){return new e(this.x,this.y)},e.prototype.set=function(t,r){return this.x=t,this.y=r,this},e.prototype.equal=function(t){return t.x===this.x&&t.y===this.y},e.prototype.add=function(t){return this.x+=t.x,this.y+=t.y,this},e.prototype.scale=function(t){this.x*=t,this.y*=t},e.prototype.scaleAndAdd=function(t,r){this.x+=t.x*r,this.y+=t.y*r},e.prototype.sub=function(t){return this.x-=t.x,this.y-=t.y,this},e.prototype.dot=function(t){return this.x*t.x+this.y*t.y},e.prototype.len=function(){return Math.sqrt(this.x*this.x+this.y*this.y)},e.prototype.lenSquare=function(){return this.x*this.x+this.y*this.y},e.prototype.normalize=function(){var t=this.len();return this.x/=t,this.y/=t,this},e.prototype.distance=function(t){var r=this.x-t.x,n=this.y-t.y;return Math.sqrt(r*r+n*n)},e.prototype.distanceSquare=function(t){var r=this.x-t.x,n=this.y-t.y;return r*r+n*n},e.prototype.negate=function(){return this.x=-this.x,this.y=-this.y,this},e.prototype.transform=function(t){if(t){var r=this.x,n=this.y;return this.x=t[0]*r+t[2]*n+t[4],this.y=t[1]*r+t[3]*n+t[5],this}},e.prototype.toArray=function(t){return t[0]=this.x,t[1]=this.y,t},e.prototype.fromArray=function(t){this.x=t[0],this.y=t[1]},e.set=function(t,r,n){t.x=r,t.y=n},e.copy=function(t,r){t.x=r.x,t.y=r.y},e.len=function(t){return Math.sqrt(t.x*t.x+t.y*t.y)},e.lenSquare=function(t){return t.x*t.x+t.y*t.y},e.dot=function(t,r){return t.x*r.x+t.y*r.y},e.add=function(t,r,n){t.x=r.x+n.x,t.y=r.y+n.y},e.sub=function(t,r,n){t.x=r.x-n.x,t.y=r.y-n.y},e.scale=function(t,r,n){t.x=r.x*n,t.y=r.y*n},e.scaleAndAdd=function(t,r,n,i){t.x=r.x+n.x*i,t.y=r.y+n.y*i},e.lerp=function(t,r,n,i){var a=1-i;t.x=a*r.x+i*n.x,t.y=a*r.y+i*n.y},e}();const Fe=$U;var kf=Math.min,Nf=Math.max,wa=new Fe,Sa=new Fe,xa=new Fe,Ca=new Fe,tl=new Fe,rl=new Fe,nt=function(){function e(t,r,n,i){n<0&&(t=t+n,n=-n),i<0&&(r=r+i,i=-i),this.x=t,this.y=r,this.width=n,this.height=i}return e.prototype.union=function(t){var r=kf(t.x,this.x),n=kf(t.y,this.y);isFinite(this.x)&&isFinite(this.width)?this.width=Nf(t.x+t.width,this.x+this.width)-r:this.width=t.width,isFinite(this.y)&&isFinite(this.height)?this.height=Nf(t.y+t.height,this.y+this.height)-n:this.height=t.height,this.x=r,this.y=n},e.prototype.applyTransform=function(t){e.applyTransform(this,this,t)},e.prototype.calculateTransform=function(t){var r=this,n=t.width/r.width,i=t.height/r.height,a=Pu();return Vg(a,a,[-r.x,-r.y]),FU(a,a,[n,i]),Vg(a,a,[t.x,t.y]),a},e.prototype.intersect=function(t,r){if(!t)return!1;t instanceof e||(t=e.create(t));var n=this,i=n.x,a=n.x+n.width,o=n.y,s=n.y+n.height,l=t.x,u=t.x+t.width,f=t.y,c=t.y+t.height,h=!(av&&(v=_,pv&&(v=b,g=n.x&&t<=n.x+n.width&&r>=n.y&&r<=n.y+n.height},e.prototype.clone=function(){return new e(this.x,this.y,this.width,this.height)},e.prototype.copy=function(t){e.copy(this,t)},e.prototype.plain=function(){return{x:this.x,y:this.y,width:this.width,height:this.height}},e.prototype.isFinite=function(){return isFinite(this.x)&&isFinite(this.y)&&isFinite(this.width)&&isFinite(this.height)},e.prototype.isZero=function(){return this.width===0||this.height===0},e.create=function(t){return new e(t.x,t.y,t.width,t.height)},e.copy=function(t,r){t.x=r.x,t.y=r.y,t.width=r.width,t.height=r.height},e.applyTransform=function(t,r,n){if(!n){t!==r&&e.copy(t,r);return}if(n[1]<1e-5&&n[1]>-1e-5&&n[2]<1e-5&&n[2]>-1e-5){var i=n[0],a=n[3],o=n[4],s=n[5];t.x=r.x*i+o,t.y=r.y*a+s,t.width=r.width*i,t.height=r.height*a,t.width<0&&(t.x+=t.width,t.width=-t.width),t.height<0&&(t.y+=t.height,t.height=-t.height);return}wa.x=xa.x=r.x,wa.y=Ca.y=r.y,Sa.x=Ca.x=r.x+r.width,Sa.y=xa.y=r.y+r.height,wa.transform(n),Ca.transform(n),Sa.transform(n),xa.transform(n),t.x=kf(wa.x,Sa.x,xa.x,Ca.x),t.y=kf(wa.y,Sa.y,xa.y,Ca.y);var l=Nf(wa.x,Sa.x,xa.x,Ca.x),u=Nf(wa.y,Sa.y,xa.y,Ca.y);t.width=l-t.x,t.height=u-t.y},e}(),T2="silent";function HU(e,t,r){return{type:e,event:r,target:t.target,topTarget:t.topTarget,cancelBubble:!1,offsetX:r.zrX,offsetY:r.zrY,gestureEvent:r.gestureEvent,pinchX:r.pinchX,pinchY:r.pinchY,pinchScale:r.pinchScale,wheelDelta:r.zrDelta,zrByTouch:r.zrByTouch,which:r.which,stop:zU}}function zU(){C2(this.event)}var VU=function(e){ge(t,e);function t(){var r=e!==null&&e.apply(this,arguments)||this;return r.handler=null,r}return t.prototype.dispose=function(){},t.prototype.setCursor=function(){},t}(ii),nl=function(){function e(t,r){this.x=t,this.y=r}return e}(),WU=["click","dblclick","mousewheel","mouseout","mouseup","mousedown","mousemove","contextmenu"],bv=new nt(0,0,0,0),M2=function(e){ge(t,e);function t(r,n,i,a,o){var s=e.call(this)||this;return s._hovered=new nl(0,0),s.storage=r,s.painter=n,s.painterRoot=a,s._pointerSize=o,i=i||new VU,s.proxy=null,s.setHandlerProxy(i),s._draggingMgr=new SU(s),s}return t.prototype.setHandlerProxy=function(r){this.proxy&&this.proxy.dispose(),r&&(R(WU,function(n){r.on&&r.on(n,this[n],this)},this),r.handler=this),this.proxy=r},t.prototype.mousemove=function(r){var n=r.zrX,i=r.zrY,a=A2(this,n,i),o=this._hovered,s=o.target;s&&!s.__zr&&(o=this.findHover(o.x,o.y),s=o.target);var l=this._hovered=a?new nl(n,i):this.findHover(n,i),u=l.target,f=this.proxy;f.setCursor&&f.setCursor(u?u.cursor:"default"),s&&u!==s&&this.dispatchToElement(o,"mouseout",r),this.dispatchToElement(l,"mousemove",r),u&&u!==s&&this.dispatchToElement(l,"mouseover",r)},t.prototype.mouseout=function(r){var n=r.zrEventControl;n!=="only_globalout"&&this.dispatchToElement(this._hovered,"mouseout",r),n!=="no_globalout"&&this.trigger("globalout",{type:"globalout",event:r})},t.prototype.resize=function(){this._hovered=new nl(0,0)},t.prototype.dispatch=function(r,n){var i=this[r];i&&i.call(this,n)},t.prototype.dispose=function(){this.proxy.dispose(),this.storage=null,this.proxy=null,this.painter=null},t.prototype.setCursorStyle=function(r){var n=this.proxy;n.setCursor&&n.setCursor(r)},t.prototype.dispatchToElement=function(r,n,i){r=r||{};var a=r.target;if(!(a&&a.silent)){for(var o="on"+n,s=HU(n,r,i);a&&(a[o]&&(s.cancelBubble=!!a[o].call(a,s)),a.trigger(n,s),a=a.__hostTarget?a.__hostTarget:a.parent,!s.cancelBubble););s.cancelBubble||(this.trigger(n,s),this.painter&&this.painter.eachOtherLayer&&this.painter.eachOtherLayer(function(l){typeof l[o]=="function"&&l[o].call(l,s),l.trigger&&l.trigger(n,s)}))}},t.prototype.findHover=function(r,n,i){var a=this.storage.getDisplayList(),o=new nl(r,n);if(nw(a,o,r,n,i),this._pointerSize&&!o.target){for(var s=[],l=this._pointerSize,u=l/2,f=new nt(r-u,n-u,l,l),c=a.length-1;c>=0;c--){var h=a[c];h!==i&&!h.ignore&&!h.ignoreCoarsePointer&&(!h.parent||!h.parent.ignoreCoarsePointer)&&(bv.copy(h.getBoundingRect()),h.transform&&bv.applyTransform(h.transform),bv.intersect(f)&&s.push(h))}if(s.length)for(var d=4,v=Math.PI/12,p=Math.PI*2,m=0;m4)return;this._downPoint=null}this.dispatchToElement(a,e,t)}});function GU(e,t,r){if(e[e.rectHover?"rectContain":"contain"](t,r)){for(var n=e,i=void 0,a=!1;n;){if(n.ignoreClip&&(a=!0),!a){var o=n.getClipPath();if(o&&!o.contain(t,r))return!1;n.silent&&(i=!0)}var s=n.__hostTarget;n=s||n.parent}return i?T2:!0}return!1}function nw(e,t,r,n,i){for(var a=e.length-1;a>=0;a--){var o=e[a],s=void 0;if(o!==i&&!o.ignore&&(s=GU(o,r,n))&&(!t.topTarget&&(t.topTarget=o),s!==T2)){t.target=o;break}}}function A2(e,t,r){var n=e.painter;return t<0||t>n.getWidth()||r<0||r>n.getHeight()}const UU=M2;var P2=32,il=7;function YU(e){for(var t=0;e>=P2;)t|=e&1,e>>=1;return e+t}function iw(e,t,r,n){var i=t+1;if(i===r)return 1;if(n(e[i++],e[t])<0){for(;i=0;)i++;return i-t}function jU(e,t,r){for(r--;t>>1,i(a,e[l])<0?s=l:o=l+1;var u=n-o;switch(u){case 3:e[o+3]=e[o+2];case 2:e[o+2]=e[o+1];case 1:e[o+1]=e[o];break;default:for(;u>0;)e[o+u]=e[o+u-1],u--}e[o]=a}}function wv(e,t,r,n,i,a){var o=0,s=0,l=1;if(a(e,t[r+i])>0){for(s=n-i;l0;)o=l,l=(l<<1)+1,l<=0&&(l=s);l>s&&(l=s),o+=i,l+=i}else{for(s=i+1;ls&&(l=s);var u=o;o=i-l,l=i-u}for(o++;o>>1);a(e,t[r+f])>0?o=f+1:l=f}return l}function Sv(e,t,r,n,i,a){var o=0,s=0,l=1;if(a(e,t[r+i])<0){for(s=i+1;ls&&(l=s);var u=o;o=i-l,l=i-u}else{for(s=n-i;l=0;)o=l,l=(l<<1)+1,l<=0&&(l=s);l>s&&(l=s),o+=i,l+=i}for(o++;o>>1);a(e,t[r+f])<0?l=f:o=f+1}return l}function qU(e,t){var r=il,n,i,a=0;e.length;var o=[];n=[],i=[];function s(d,v){n[a]=d,i[a]=v,a+=1}function l(){for(;a>1;){var d=a-2;if(d>=1&&i[d-1]<=i[d]+i[d+1]||d>=2&&i[d-2]<=i[d]+i[d-1])i[d-1]i[d+1])break;f(d)}}function u(){for(;a>1;){var d=a-2;d>0&&i[d-1]=il||S>=il);if(C)break;x<0&&(x=0),x+=2}if(r=x,r<1&&(r=1),v===1){for(g=0;g=0;g--)e[w+g]=e[x+g];e[b]=o[_];return}for(var S=r;;){var C=0,M=0,A=!1;do if(t(o[_],e[y])<0){if(e[b--]=e[y--],C++,M=0,--v===0){A=!0;break}}else if(e[b--]=o[_--],M++,C=0,--m===1){A=!0;break}while((C|M)=0;g--)e[w+g]=e[x+g];if(v===0){A=!0;break}}if(e[b--]=o[_--],--m===1){A=!0;break}if(M=m-wv(e[y],o,0,m,m-1,t),M!==0){for(b-=M,_-=M,m-=M,w=b+1,x=_+1,g=0;g=il||M>=il);if(A)break;S<0&&(S=0),S+=2}if(r=S,r<1&&(r=1),m===1){for(b-=v,y-=v,w=b+1,x=y+1,g=v-1;g>=0;g--)e[w+g]=e[x+g];e[b]=o[_]}else{if(m===0)throw new Error;for(x=b-(m-1),g=0;gs&&(l=s),aw(e,r,r+l,r+a,t),a=l}o.pushRun(r,a),o.mergeRuns(),i-=a,r+=a}while(i!==0);o.forceMergeRuns()}}var Br=1,Cl=2,Xo=4,ow=!1;function xv(){ow||(ow=!0,console.warn("z / z2 / zlevel of displayable is invalid, which may cause unexpected errors"))}function sw(e,t){return e.zlevel===t.zlevel?e.z===t.z?e.z2-t.z2:e.z-t.z:e.zlevel-t.zlevel}var KU=function(){function e(){this._roots=[],this._displayList=[],this._displayListLen=0,this.displayableSortFunc=sw}return e.prototype.traverse=function(t,r){for(var n=0;n0&&(f.__clipPaths=[]),isNaN(f.z)&&(xv(),f.z=0),isNaN(f.z2)&&(xv(),f.z2=0),isNaN(f.zlevel)&&(xv(),f.zlevel=0),this._displayList[this._displayListLen++]=f}var c=t.getDecalElement&&t.getDecalElement();c&&this._updateAndAddDisplayable(c,r,n);var h=t.getTextGuideLine();h&&this._updateAndAddDisplayable(h,r,n);var d=t.getTextContent();d&&this._updateAndAddDisplayable(d,r,n)}},e.prototype.addRoot=function(t){t.__zr&&t.__zr.storage===this||this._roots.push(t)},e.prototype.delRoot=function(t){if(t instanceof Array){for(var r=0,n=t.length;r=0&&this._roots.splice(i,1)},e.prototype.delAllRoots=function(){this._roots=[],this._displayList=[],this._displayListLen=0},e.prototype.getRoots=function(){return this._roots},e.prototype.dispose=function(){this._displayList=null,this._roots=null},e}(),E2;E2=He.hasGlobalWindow&&(window.requestAnimationFrame&&window.requestAnimationFrame.bind(window)||window.msRequestAnimationFrame&&window.msRequestAnimationFrame.bind(window)||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame)||function(e){return setTimeout(e,16)};const Wg=E2;var ql={linear:function(e){return e},quadraticIn:function(e){return e*e},quadraticOut:function(e){return e*(2-e)},quadraticInOut:function(e){return(e*=2)<1?.5*e*e:-.5*(--e*(e-2)-1)},cubicIn:function(e){return e*e*e},cubicOut:function(e){return--e*e*e+1},cubicInOut:function(e){return(e*=2)<1?.5*e*e*e:.5*((e-=2)*e*e+2)},quarticIn:function(e){return e*e*e*e},quarticOut:function(e){return 1- --e*e*e*e},quarticInOut:function(e){return(e*=2)<1?.5*e*e*e*e:-.5*((e-=2)*e*e*e-2)},quinticIn:function(e){return e*e*e*e*e},quinticOut:function(e){return--e*e*e*e*e+1},quinticInOut:function(e){return(e*=2)<1?.5*e*e*e*e*e:.5*((e-=2)*e*e*e*e+2)},sinusoidalIn:function(e){return 1-Math.cos(e*Math.PI/2)},sinusoidalOut:function(e){return Math.sin(e*Math.PI/2)},sinusoidalInOut:function(e){return .5*(1-Math.cos(Math.PI*e))},exponentialIn:function(e){return e===0?0:Math.pow(1024,e-1)},exponentialOut:function(e){return e===1?1:1-Math.pow(2,-10*e)},exponentialInOut:function(e){return e===0?0:e===1?1:(e*=2)<1?.5*Math.pow(1024,e-1):.5*(-Math.pow(2,-10*(e-1))+2)},circularIn:function(e){return 1-Math.sqrt(1-e*e)},circularOut:function(e){return Math.sqrt(1- --e*e)},circularInOut:function(e){return(e*=2)<1?-.5*(Math.sqrt(1-e*e)-1):.5*(Math.sqrt(1-(e-=2)*e)+1)},elasticIn:function(e){var t,r=.1,n=.4;return e===0?0:e===1?1:(!r||r<1?(r=1,t=n/4):t=n*Math.asin(1/r)/(2*Math.PI),-(r*Math.pow(2,10*(e-=1))*Math.sin((e-t)*(2*Math.PI)/n)))},elasticOut:function(e){var t,r=.1,n=.4;return e===0?0:e===1?1:(!r||r<1?(r=1,t=n/4):t=n*Math.asin(1/r)/(2*Math.PI),r*Math.pow(2,-10*e)*Math.sin((e-t)*(2*Math.PI)/n)+1)},elasticInOut:function(e){var t,r=.1,n=.4;return e===0?0:e===1?1:(!r||r<1?(r=1,t=n/4):t=n*Math.asin(1/r)/(2*Math.PI),(e*=2)<1?-.5*(r*Math.pow(2,10*(e-=1))*Math.sin((e-t)*(2*Math.PI)/n)):r*Math.pow(2,-10*(e-=1))*Math.sin((e-t)*(2*Math.PI)/n)*.5+1)},backIn:function(e){var t=1.70158;return e*e*((t+1)*e-t)},backOut:function(e){var t=1.70158;return--e*e*((t+1)*e+t)+1},backInOut:function(e){var t=2.5949095;return(e*=2)<1?.5*(e*e*((t+1)*e-t)):.5*((e-=2)*e*((t+1)*e+t)+2)},bounceIn:function(e){return 1-ql.bounceOut(1-e)},bounceOut:function(e){return e<1/2.75?7.5625*e*e:e<2/2.75?7.5625*(e-=1.5/2.75)*e+.75:e<2.5/2.75?7.5625*(e-=2.25/2.75)*e+.9375:7.5625*(e-=2.625/2.75)*e+.984375},bounceInOut:function(e){return e<.5?ql.bounceIn(e*2)*.5:ql.bounceOut(e*2-1)*.5+.5}},Bf=Math.pow,ia=Math.sqrt,wd=1e-8,L2=1e-4,lw=ia(3),Ff=1/3,Vn=Ws(),rn=Ws(),us=Ws();function Ji(e){return e>-wd&&ewd||e<-wd}function Zt(e,t,r,n,i){var a=1-i;return a*a*(a*e+3*i*t)+i*i*(i*n+3*a*r)}function uw(e,t,r,n,i){var a=1-i;return 3*(((t-e)*a+2*(r-t)*i)*a+(n-r)*i*i)}function I2(e,t,r,n,i,a){var o=n+3*(t-r)-e,s=3*(r-t*2+e),l=3*(t-e),u=e-i,f=s*s-3*o*l,c=s*l-9*o*u,h=l*l-3*s*u,d=0;if(Ji(f)&&Ji(c))if(Ji(s))a[0]=0;else{var v=-l/s;v>=0&&v<=1&&(a[d++]=v)}else{var p=c*c-4*f*h;if(Ji(p)){var m=c/f,v=-s/o+m,g=-m/2;v>=0&&v<=1&&(a[d++]=v),g>=0&&g<=1&&(a[d++]=g)}else if(p>0){var y=ia(p),_=f*s+1.5*o*(-c+y),b=f*s+1.5*o*(-c-y);_<0?_=-Bf(-_,Ff):_=Bf(_,Ff),b<0?b=-Bf(-b,Ff):b=Bf(b,Ff);var v=(-s-(_+b))/(3*o);v>=0&&v<=1&&(a[d++]=v)}else{var x=(2*f*s-3*o*c)/(2*ia(f*f*f)),w=Math.acos(x)/3,S=ia(f),C=Math.cos(w),v=(-s-2*S*C)/(3*o),g=(-s+S*(C+lw*Math.sin(w)))/(3*o),M=(-s+S*(C-lw*Math.sin(w)))/(3*o);v>=0&&v<=1&&(a[d++]=v),g>=0&&g<=1&&(a[d++]=g),M>=0&&M<=1&&(a[d++]=M)}}return d}function O2(e,t,r,n,i){var a=6*r-12*t+6*e,o=9*t+3*n-3*e-9*r,s=3*t-3*e,l=0;if(Ji(o)){if(D2(a)){var u=-s/a;u>=0&&u<=1&&(i[l++]=u)}}else{var f=a*a-4*o*s;if(Ji(f))i[0]=-a/(2*o);else if(f>0){var c=ia(f),u=(-a+c)/(2*o),h=(-a-c)/(2*o);u>=0&&u<=1&&(i[l++]=u),h>=0&&h<=1&&(i[l++]=h)}}return l}function Sd(e,t,r,n,i,a){var o=(t-e)*i+e,s=(r-t)*i+t,l=(n-r)*i+r,u=(s-o)*i+o,f=(l-s)*i+s,c=(f-u)*i+u;a[0]=e,a[1]=o,a[2]=u,a[3]=c,a[4]=c,a[5]=f,a[6]=l,a[7]=n}function R2(e,t,r,n,i,a,o,s,l,u,f){var c,h=.005,d=1/0,v,p,m,g;Vn[0]=l,Vn[1]=u;for(var y=0;y<1;y+=.05)rn[0]=Zt(e,r,i,o,y),rn[1]=Zt(t,n,a,s,y),m=ss(Vn,rn),m=0&&m=0&&u<=1&&(i[l++]=u)}}else{var f=o*o-4*a*s;if(Ji(f)){var u=-o/(2*a);u>=0&&u<=1&&(i[l++]=u)}else if(f>0){var c=ia(f),u=(-o+c)/(2*a),h=(-o-c)/(2*a);u>=0&&u<=1&&(i[l++]=u),h>=0&&h<=1&&(i[l++]=h)}}return l}function k2(e,t,r){var n=e+r-2*t;return n===0?.5:(e-t)/n}function xd(e,t,r,n,i){var a=(t-e)*n+e,o=(r-t)*n+t,s=(o-a)*n+a;i[0]=e,i[1]=a,i[2]=s,i[3]=s,i[4]=o,i[5]=r}function N2(e,t,r,n,i,a,o,s,l){var u,f=.005,c=1/0;Vn[0]=o,Vn[1]=s;for(var h=0;h<1;h+=.05){rn[0]=ir(e,r,i,h),rn[1]=ir(t,n,a,h);var d=ss(Vn,rn);d=0&&d=1?1:I2(0,n,a,1,l,s)&&Zt(0,i,o,1,s[0])}}}var e9=function(){function e(t){this._inited=!1,this._startTime=0,this._pausedTime=0,this._paused=!1,this._life=t.life||1e3,this._delay=t.delay||0,this.loop=t.loop||!1,this.onframe=t.onframe||Er,this.ondestroy=t.ondestroy||Er,this.onrestart=t.onrestart||Er,t.easing&&this.setEasing(t.easing)}return e.prototype.step=function(t,r){if(this._inited||(this._startTime=t+this._delay,this._inited=!0),this._paused){this._pausedTime+=r;return}var n=this._life,i=t-this._startTime-this._pausedTime,a=i/n;a<0&&(a=0),a=Math.min(a,1);var o=this.easingFunc,s=o?o(a):a;if(this.onframe(s),a===1)if(this.loop){var l=i%n;this._startTime=t-l,this._pausedTime=0,this.onrestart()}else return!0;return!1},e.prototype.pause=function(){this._paused=!0},e.prototype.resume=function(){this._paused=!1},e.prototype.setEasing=function(t){this.easing=t,this.easingFunc=Ye(t)?t:ql[t]||B2(t)},e}();const t9=e9;var F2=function(){function e(t){this.value=t}return e}(),r9=function(){function e(){this._len=0}return e.prototype.insert=function(t){var r=new F2(t);return this.insertEntry(r),r},e.prototype.insertEntry=function(t){this.head?(this.tail.next=t,t.prev=this.tail,t.next=null,this.tail=t):this.head=this.tail=t,this._len++},e.prototype.remove=function(t){var r=t.prev,n=t.next;r?r.next=n:this.head=n,n?n.prev=r:this.tail=r,t.next=t.prev=null,this._len--},e.prototype.len=function(){return this._len},e.prototype.clear=function(){this.head=this.tail=null,this._len=0},e}(),af=function(){function e(t){this._list=new r9,this._maxSize=10,this._map={},this._maxSize=t}return e.prototype.put=function(t,r){var n=this._list,i=this._map,a=null;if(i[t]==null){var o=n.len(),s=this._lastRemovedEntry;if(o>=this._maxSize&&o>0){var l=n.head;n.remove(l),delete i[l.key],a=l.value,this._lastRemovedEntry=l}s?s.value=r:s=new F2(r),s.key=t,n.insertEntry(s),i[t]=s}return a},e.prototype.get=function(t){var r=this._map[t],n=this._list;if(r!=null)return r!==n.tail&&(n.remove(r),n.insertEntry(r)),r.value},e.prototype.clear=function(){this._list.clear(),this._map={}},e.prototype.len=function(){return this._list.len()},e}(),cw={transparent:[0,0,0,0],aliceblue:[240,248,255,1],antiquewhite:[250,235,215,1],aqua:[0,255,255,1],aquamarine:[127,255,212,1],azure:[240,255,255,1],beige:[245,245,220,1],bisque:[255,228,196,1],black:[0,0,0,1],blanchedalmond:[255,235,205,1],blue:[0,0,255,1],blueviolet:[138,43,226,1],brown:[165,42,42,1],burlywood:[222,184,135,1],cadetblue:[95,158,160,1],chartreuse:[127,255,0,1],chocolate:[210,105,30,1],coral:[255,127,80,1],cornflowerblue:[100,149,237,1],cornsilk:[255,248,220,1],crimson:[220,20,60,1],cyan:[0,255,255,1],darkblue:[0,0,139,1],darkcyan:[0,139,139,1],darkgoldenrod:[184,134,11,1],darkgray:[169,169,169,1],darkgreen:[0,100,0,1],darkgrey:[169,169,169,1],darkkhaki:[189,183,107,1],darkmagenta:[139,0,139,1],darkolivegreen:[85,107,47,1],darkorange:[255,140,0,1],darkorchid:[153,50,204,1],darkred:[139,0,0,1],darksalmon:[233,150,122,1],darkseagreen:[143,188,143,1],darkslateblue:[72,61,139,1],darkslategray:[47,79,79,1],darkslategrey:[47,79,79,1],darkturquoise:[0,206,209,1],darkviolet:[148,0,211,1],deeppink:[255,20,147,1],deepskyblue:[0,191,255,1],dimgray:[105,105,105,1],dimgrey:[105,105,105,1],dodgerblue:[30,144,255,1],firebrick:[178,34,34,1],floralwhite:[255,250,240,1],forestgreen:[34,139,34,1],fuchsia:[255,0,255,1],gainsboro:[220,220,220,1],ghostwhite:[248,248,255,1],gold:[255,215,0,1],goldenrod:[218,165,32,1],gray:[128,128,128,1],green:[0,128,0,1],greenyellow:[173,255,47,1],grey:[128,128,128,1],honeydew:[240,255,240,1],hotpink:[255,105,180,1],indianred:[205,92,92,1],indigo:[75,0,130,1],ivory:[255,255,240,1],khaki:[240,230,140,1],lavender:[230,230,250,1],lavenderblush:[255,240,245,1],lawngreen:[124,252,0,1],lemonchiffon:[255,250,205,1],lightblue:[173,216,230,1],lightcoral:[240,128,128,1],lightcyan:[224,255,255,1],lightgoldenrodyellow:[250,250,210,1],lightgray:[211,211,211,1],lightgreen:[144,238,144,1],lightgrey:[211,211,211,1],lightpink:[255,182,193,1],lightsalmon:[255,160,122,1],lightseagreen:[32,178,170,1],lightskyblue:[135,206,250,1],lightslategray:[119,136,153,1],lightslategrey:[119,136,153,1],lightsteelblue:[176,196,222,1],lightyellow:[255,255,224,1],lime:[0,255,0,1],limegreen:[50,205,50,1],linen:[250,240,230,1],magenta:[255,0,255,1],maroon:[128,0,0,1],mediumaquamarine:[102,205,170,1],mediumblue:[0,0,205,1],mediumorchid:[186,85,211,1],mediumpurple:[147,112,219,1],mediumseagreen:[60,179,113,1],mediumslateblue:[123,104,238,1],mediumspringgreen:[0,250,154,1],mediumturquoise:[72,209,204,1],mediumvioletred:[199,21,133,1],midnightblue:[25,25,112,1],mintcream:[245,255,250,1],mistyrose:[255,228,225,1],moccasin:[255,228,181,1],navajowhite:[255,222,173,1],navy:[0,0,128,1],oldlace:[253,245,230,1],olive:[128,128,0,1],olivedrab:[107,142,35,1],orange:[255,165,0,1],orangered:[255,69,0,1],orchid:[218,112,214,1],palegoldenrod:[238,232,170,1],palegreen:[152,251,152,1],paleturquoise:[175,238,238,1],palevioletred:[219,112,147,1],papayawhip:[255,239,213,1],peachpuff:[255,218,185,1],peru:[205,133,63,1],pink:[255,192,203,1],plum:[221,160,221,1],powderblue:[176,224,230,1],purple:[128,0,128,1],red:[255,0,0,1],rosybrown:[188,143,143,1],royalblue:[65,105,225,1],saddlebrown:[139,69,19,1],salmon:[250,128,114,1],sandybrown:[244,164,96,1],seagreen:[46,139,87,1],seashell:[255,245,238,1],sienna:[160,82,45,1],silver:[192,192,192,1],skyblue:[135,206,235,1],slateblue:[106,90,205,1],slategray:[112,128,144,1],slategrey:[112,128,144,1],snow:[255,250,250,1],springgreen:[0,255,127,1],steelblue:[70,130,180,1],tan:[210,180,140,1],teal:[0,128,128,1],thistle:[216,191,216,1],tomato:[255,99,71,1],turquoise:[64,224,208,1],violet:[238,130,238,1],wheat:[245,222,179,1],white:[255,255,255,1],whitesmoke:[245,245,245,1],yellow:[255,255,0,1],yellowgreen:[154,205,50,1]};function Kl(e){return e=Math.round(e),e<0?0:e>255?255:e}function dw(e){return e<0?0:e>1?1:e}function Cv(e){var t=e;return t.length&&t.charAt(t.length-1)==="%"?Kl(parseFloat(t)/100*255):Kl(parseInt(t,10))}function Xl(e){var t=e;return t.length&&t.charAt(t.length-1)==="%"?dw(parseFloat(t)/100):dw(parseFloat(t))}function Tv(e,t,r){return r<0?r+=1:r>1&&(r-=1),r*6<1?e+(t-e)*r*6:r*2<1?t:r*3<2?e+(t-e)*(2/3-r)*6:e}function Zr(e,t,r,n,i){return e[0]=t,e[1]=r,e[2]=n,e[3]=i,e}function Gg(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e}var $2=new af(20),$f=null;function ko(e,t){$f&&Gg($f,t),$f=$2.put(e,$f||t.slice())}function uo(e,t){if(e){t=t||[];var r=$2.get(e);if(r)return Gg(t,r);e=e+"";var n=e.replace(/ /g,"").toLowerCase();if(n in cw)return Gg(t,cw[n]),ko(e,t),t;var i=n.length;if(n.charAt(0)==="#"){if(i===4||i===5){var a=parseInt(n.slice(1,4),16);if(!(a>=0&&a<=4095)){Zr(t,0,0,0,1);return}return Zr(t,(a&3840)>>4|(a&3840)>>8,a&240|(a&240)>>4,a&15|(a&15)<<4,i===5?parseInt(n.slice(4),16)/15:1),ko(e,t),t}else if(i===7||i===9){var a=parseInt(n.slice(1,7),16);if(!(a>=0&&a<=16777215)){Zr(t,0,0,0,1);return}return Zr(t,(a&16711680)>>16,(a&65280)>>8,a&255,i===9?parseInt(n.slice(7),16)/255:1),ko(e,t),t}return}var o=n.indexOf("("),s=n.indexOf(")");if(o!==-1&&s+1===i){var l=n.substr(0,o),u=n.substr(o+1,s-(o+1)).split(","),f=1;switch(l){case"rgba":if(u.length!==4)return u.length===3?Zr(t,+u[0],+u[1],+u[2],1):Zr(t,0,0,0,1);f=Xl(u.pop());case"rgb":if(u.length>=3)return Zr(t,Cv(u[0]),Cv(u[1]),Cv(u[2]),u.length===3?f:Xl(u[3])),ko(e,t),t;Zr(t,0,0,0,1);return;case"hsla":if(u.length!==4){Zr(t,0,0,0,1);return}return u[3]=Xl(u[3]),hw(u,t),ko(e,t),t;case"hsl":if(u.length!==3){Zr(t,0,0,0,1);return}return hw(u,t),ko(e,t),t;default:return}}Zr(t,0,0,0,1)}}function hw(e,t){var r=(parseFloat(e[0])%360+360)%360/360,n=Xl(e[1]),i=Xl(e[2]),a=i<=.5?i*(n+1):i+n-i*n,o=i*2-a;return t=t||[],Zr(t,Kl(Tv(o,a,r+1/3)*255),Kl(Tv(o,a,r)*255),Kl(Tv(o,a,r-1/3)*255),1),e.length===4&&(t[3]=e[3]),t}function vw(e,t){var r=uo(e);if(r){for(var n=0;n<3;n++)t<0?r[n]=r[n]*(1-t)|0:r[n]=(255-r[n])*t+r[n]|0,r[n]>255?r[n]=255:r[n]<0&&(r[n]=0);return s0(r,r.length===4?"rgba":"rgb")}}function s0(e,t){if(!(!e||!e.length)){var r=e[0]+","+e[1]+","+e[2];return(t==="rgba"||t==="hsva"||t==="hsla")&&(r+=","+e[3]),t+"("+r+")"}}function Cd(e,t){var r=uo(e);return r?(.299*r[0]+.587*r[1]+.114*r[2])*r[3]/255+(1-r[3])*t:0}function n9(e){return e.type==="linear"}function i9(e){return e.type==="radial"}(function(){return He.hasGlobalWindow&&Ye(window.btoa)?function(e){return window.btoa(unescape(encodeURIComponent(e)))}:typeof Buffer<"u"?function(e){return Buffer.from(e).toString("base64")}:function(e){return null}})();var Ug=Array.prototype.slice;function hi(e,t,r){return(t-e)*r+e}function Mv(e,t,r,n){for(var i=t.length,a=0;an?t:e,a=Math.min(r,n),o=i[a-1]||{color:[0,0,0,0],offset:0},s=a;so;if(s)n.length=o;else for(var l=a;l=1},e.prototype.getAdditiveTrack=function(){return this._additiveTrack},e.prototype.addKeyframe=function(t,r,n){this._needsSort=!0;var i=this.keyframes,a=i.length,o=!1,s=gw,l=r;if(Ir(r)){var u=l9(r);s=u,(u===1&&!Tt(r[0])||u===2&&!Tt(r[0][0]))&&(o=!0)}else if(Tt(r)&&!bd(r))s=zf;else if(Ee(r))if(!isNaN(+r))s=zf;else{var f=uo(r);f&&(l=f,s=Tl)}else if(yh(r)){var c=ue({},l);c.colorStops=Ne(r.colorStops,function(d){return{offset:d.offset,color:uo(d.color)}}),n9(r)?s=Yg:i9(r)&&(s=jg),l=c}a===0?this.valType=s:(s!==this.valType||s===gw)&&(o=!0),this.discrete=this.discrete||o;var h={time:t,value:l,rawValue:r,percent:0};return n&&(h.easing=n,h.easingFunc=Ye(n)?n:ql[n]||B2(n)),i.push(h),h},e.prototype.prepare=function(t,r){var n=this.keyframes;this._needsSort&&n.sort(function(p,m){return p.time-m.time});for(var i=this.valType,a=n.length,o=n[a-1],s=this.discrete,l=Vf(i),u=mw(i),f=0;f=0&&!(o[f].percent<=r);f--);f=h(f,s-2)}else{for(f=c;fr);f++);f=h(f-1,s-2)}v=o[f+1],d=o[f]}if(d&&v){this._lastFr=f,this._lastFrP=r;var m=v.percent-d.percent,g=m===0?1:h((r-d.percent)/m,1);v.easingFunc&&(g=v.easingFunc(g));var y=n?this._additiveValue:u?al:t[l];if((Vf(a)||u)&&!y&&(y=this._additiveValue=[]),this.discrete)t[l]=g<1?d.rawValue:v.rawValue;else if(Vf(a))a===Vc?Mv(y,d[i],v[i],g):a9(y,d[i],v[i],g);else if(mw(a)){var _=d[i],b=v[i],x=a===Yg;t[l]={type:x?"linear":"radial",x:hi(_.x,b.x,g),y:hi(_.y,b.y,g),colorStops:Ne(_.colorStops,function(S,C){var M=b.colorStops[C];return{offset:hi(S.offset,M.offset,g),color:zc(Mv([],S.color,M.color,g))}}),global:b.global},x?(t[l].x2=hi(_.x2,b.x2,g),t[l].y2=hi(_.y2,b.y2,g)):t[l].r=hi(_.r,b.r,g)}else if(u)Mv(y,d[i],v[i],g),n||(t[l]=zc(y));else{var w=hi(d[i],v[i],g);n?this._additiveValue=w:t[l]=w}n&&this._addToTarget(t)}}},e.prototype._addToTarget=function(t){var r=this.valType,n=this.propName,i=this._additiveValue;r===zf?t[n]=t[n]+i:r===Tl?(uo(t[n],al),Hf(al,al,i,1),t[n]=zc(al)):r===Vc?Hf(t[n],t[n],i,1):r===H2&&pw(t[n],t[n],i,1)},e}(),l0=function(){function e(t,r,n,i){if(this._tracks={},this._trackKeys=[],this._maxTime=0,this._started=0,this._clip=null,this._target=t,this._loop=r,r&&i){r0("Can' use additive animation on looped animation.");return}this._additiveAnimators=i,this._allowDiscrete=n}return e.prototype.getMaxTime=function(){return this._maxTime},e.prototype.getDelay=function(){return this._delay},e.prototype.getLoop=function(){return this._loop},e.prototype.getTarget=function(){return this._target},e.prototype.changeTarget=function(t){this._target=t},e.prototype.when=function(t,r,n){return this.whenWithKeys(t,r,Ct(r),n)},e.prototype.whenWithKeys=function(t,r,n,i){for(var a=this._tracks,o=0;o0&&l.addKeyframe(0,Hc(u),i),this._trackKeys.push(s)}l.addKeyframe(t,Hc(r[s]),i)}return this._maxTime=Math.max(this._maxTime,t),this},e.prototype.pause=function(){this._clip.pause(),this._paused=!0},e.prototype.resume=function(){this._clip.resume(),this._paused=!1},e.prototype.isPaused=function(){return!!this._paused},e.prototype.duration=function(t){return this._maxTime=t,this._force=!0,this},e.prototype._doneCallback=function(){this._setTracksFinished(),this._clip=null;var t=this._doneCbs;if(t)for(var r=t.length,n=0;n0)){this._started=1;for(var r=this,n=[],i=this._maxTime||0,a=0;a1){var s=o.pop();a.addKeyframe(s.time,t[i]),a.prepare(this._maxTime,a.getAdditiveTrack())}}}},e}();function ts(){return new Date().getTime()}var f9=function(e){ge(t,e);function t(r){var n=e.call(this)||this;return n._running=!1,n._time=0,n._pausedTime=0,n._pauseStart=0,n._paused=!1,r=r||{},n.stage=r.stage||{},n}return t.prototype.addClip=function(r){r.animation&&this.removeClip(r),this._head?(this._tail.next=r,r.prev=this._tail,r.next=null,this._tail=r):this._head=this._tail=r,r.animation=this},t.prototype.addAnimator=function(r){r.animation=this;var n=r.getClip();n&&this.addClip(n)},t.prototype.removeClip=function(r){if(r.animation){var n=r.prev,i=r.next;n?n.next=i:this._head=i,i?i.prev=n:this._tail=n,r.next=r.prev=r.animation=null}},t.prototype.removeAnimator=function(r){var n=r.getClip();n&&this.removeClip(n),r.animation=null},t.prototype.update=function(r){for(var n=ts()-this._pausedTime,i=n-this._time,a=this._head;a;){var o=a.next,s=a.step(n,i);s&&(a.ondestroy(),this.removeClip(a)),a=o}this._time=n,r||(this.trigger("frame",i),this.stage.update&&this.stage.update())},t.prototype._startLoop=function(){var r=this;this._running=!0;function n(){r._running&&(Wg(n),!r._paused&&r.update())}Wg(n)},t.prototype.start=function(){this._running||(this._time=ts(),this._pausedTime=0,this._startLoop())},t.prototype.stop=function(){this._running=!1},t.prototype.pause=function(){this._paused||(this._pauseStart=ts(),this._paused=!0)},t.prototype.resume=function(){this._paused&&(this._pausedTime+=ts()-this._pauseStart,this._paused=!1)},t.prototype.clear=function(){for(var r=this._head;r;){var n=r.next;r.prev=r.next=r.animation=null,r=n}this._head=this._tail=null},t.prototype.isFinished=function(){return this._head==null},t.prototype.animate=function(r,n){n=n||{},this.start();var i=new l0(r,n.loop);return this.addAnimator(i),i},t}(ii),c9=300,Av=He.domSupported,Pv=function(){var e=["click","dblclick","mousewheel","wheel","mouseout","mouseup","mousedown","mousemove","contextmenu"],t=["touchstart","touchend","touchmove"],r={pointerdown:1,pointerup:1,pointermove:1,pointerout:1},n=Ne(e,function(i){var a=i.replace("mouse","pointer");return r.hasOwnProperty(a)?a:i});return{mouse:e,touch:t,pointer:n}}(),yw={mouse:["mousemove","mouseup"],pointer:["pointermove","pointerup"]},_w=!1;function qg(e){var t=e.pointerType;return t==="pen"||t==="touch"}function d9(e){e.touching=!0,e.touchTimer!=null&&(clearTimeout(e.touchTimer),e.touchTimer=null),e.touchTimer=setTimeout(function(){e.touching=!1,e.touchTimer=null},700)}function Ev(e){e&&(e.zrByTouch=!0)}function h9(e,t){return Qr(e.dom,new v9(e,t),!0)}function z2(e,t){for(var r=t,n=!1;r&&r.nodeType!==9&&!(n=r.domBelongToZr||r!==t&&r===e.painterRoot);)r=r.parentNode;return n}var v9=function(){function e(t,r){this.stopPropagation=Er,this.stopImmediatePropagation=Er,this.preventDefault=Er,this.type=r.type,this.target=this.currentTarget=t.dom,this.pointerType=r.pointerType,this.clientX=r.clientX,this.clientY=r.clientY}return e}(),yn={mousedown:function(e){e=Qr(this.dom,e),this.__mayPointerCapture=[e.zrX,e.zrY],this.trigger("mousedown",e)},mousemove:function(e){e=Qr(this.dom,e);var t=this.__mayPointerCapture;t&&(e.zrX!==t[0]||e.zrY!==t[1])&&this.__togglePointerCapture(!0),this.trigger("mousemove",e)},mouseup:function(e){e=Qr(this.dom,e),this.__togglePointerCapture(!1),this.trigger("mouseup",e)},mouseout:function(e){e=Qr(this.dom,e);var t=e.toElement||e.relatedTarget;z2(this,t)||(this.__pointerCapturing&&(e.zrEventControl="no_globalout"),this.trigger("mouseout",e))},wheel:function(e){_w=!0,e=Qr(this.dom,e),this.trigger("mousewheel",e)},mousewheel:function(e){_w||(e=Qr(this.dom,e),this.trigger("mousewheel",e))},touchstart:function(e){e=Qr(this.dom,e),Ev(e),this.__lastTouchMoment=new Date,this.handler.processGesture(e,"start"),yn.mousemove.call(this,e),yn.mousedown.call(this,e)},touchmove:function(e){e=Qr(this.dom,e),Ev(e),this.handler.processGesture(e,"change"),yn.mousemove.call(this,e)},touchend:function(e){e=Qr(this.dom,e),Ev(e),this.handler.processGesture(e,"end"),yn.mouseup.call(this,e),+new Date-+this.__lastTouchMomentSw||e<-Sw}var Ma=[],No=[],Dv=Pu(),Iv=Math.abs,wh=function(){function e(){}return e.prototype.getLocalTransform=function(t){return e.getLocalTransform(this,t)},e.prototype.setPosition=function(t){this.x=t[0],this.y=t[1]},e.prototype.setScale=function(t){this.scaleX=t[0],this.scaleY=t[1]},e.prototype.setSkew=function(t){this.skewX=t[0],this.skewY=t[1]},e.prototype.setOrigin=function(t){this.originX=t[0],this.originY=t[1]},e.prototype.needLocalTransform=function(){return Ta(this.rotation)||Ta(this.x)||Ta(this.y)||Ta(this.scaleX-1)||Ta(this.scaleY-1)||Ta(this.skewX)||Ta(this.skewY)},e.prototype.updateTransform=function(){var t=this.parent&&this.parent.transform,r=this.needLocalTransform(),n=this.transform;if(!(r||t)){n&&(ww(n),this.invTransform=null);return}n=n||Pu(),r?this.getLocalTransform(n):ww(n),t&&(r?ls(n,t,n):BU(n,t)),this.transform=n,this._resolveGlobalScaleRatio(n)},e.prototype._resolveGlobalScaleRatio=function(t){var r=this.globalScaleRatio;if(r!=null&&r!==1){this.getGlobalScale(Ma);var n=Ma[0]<0?-1:1,i=Ma[1]<0?-1:1,a=((Ma[0]-n)*r+n)/Ma[0]||0,o=((Ma[1]-i)*r+i)/Ma[1]||0;t[0]*=a,t[1]*=a,t[2]*=o,t[3]*=o}this.invTransform=this.invTransform||Pu(),bh(this.invTransform,t)},e.prototype.getComputedTransform=function(){for(var t=this,r=[];t;)r.push(t),t=t.parent;for(;t=r.pop();)t.updateTransform();return this.transform},e.prototype.setLocalTransform=function(t){if(t){var r=t[0]*t[0]+t[1]*t[1],n=t[2]*t[2]+t[3]*t[3],i=Math.atan2(t[1],t[0]),a=Math.PI/2+i-Math.atan2(t[3],t[2]);n=Math.sqrt(n)*Math.cos(a),r=Math.sqrt(r),this.skewX=a,this.skewY=0,this.rotation=-i,this.x=+t[4],this.y=+t[5],this.scaleX=r,this.scaleY=n,this.originX=0,this.originY=0}},e.prototype.decomposeTransform=function(){if(this.transform){var t=this.parent,r=this.transform;t&&t.transform&&(ls(No,t.invTransform,r),r=No);var n=this.originX,i=this.originY;(n||i)&&(Dv[4]=n,Dv[5]=i,ls(No,r,Dv),No[4]-=n,No[5]-=i,r=No),this.setLocalTransform(r)}},e.prototype.getGlobalScale=function(t){var r=this.transform;return t=t||[],r?(t[0]=Math.sqrt(r[0]*r[0]+r[1]*r[1]),t[1]=Math.sqrt(r[2]*r[2]+r[3]*r[3]),r[0]<0&&(t[0]=-t[0]),r[3]<0&&(t[1]=-t[1]),t):(t[0]=1,t[1]=1,t)},e.prototype.transformCoordToLocal=function(t,r){var n=[t,r],i=this.invTransform;return i&&un(n,n,i),n},e.prototype.transformCoordToGlobal=function(t,r){var n=[t,r],i=this.transform;return i&&un(n,n,i),n},e.prototype.getLineScale=function(){var t=this.transform;return t&&Iv(t[0]-1)>1e-10&&Iv(t[3]-1)>1e-10?Math.sqrt(Iv(t[0]*t[3]-t[2]*t[1])):1},e.prototype.copyTransform=function(t){b9(this,t)},e.getLocalTransform=function(t,r){r=r||[];var n=t.originX||0,i=t.originY||0,a=t.scaleX,o=t.scaleY,s=t.anchorX,l=t.anchorY,u=t.rotation||0,f=t.x,c=t.y,h=t.skewX?Math.tan(t.skewX):0,d=t.skewY?Math.tan(-t.skewY):0;if(n||i||s||l){var v=n+s,p=i+l;r[4]=-v*a-h*p*o,r[5]=-p*o-d*v*a}else r[4]=r[5]=0;return r[0]=a,r[3]=o,r[1]=d*a,r[2]=h*o,u&&o0(r,r,u),r[4]+=n+f,r[5]+=i+c,r},e.initDefaultProps=function(){var t=e.prototype;t.scaleX=t.scaleY=t.globalScaleRatio=1,t.x=t.y=t.originX=t.originY=t.skewX=t.skewY=t.rotation=t.anchorX=t.anchorY=0}(),e}(),Eu=["x","y","originX","originY","anchorX","anchorY","rotation","scaleX","scaleY","skewX","skewY"];function b9(e,t){for(var r=0;r=0?parseFloat(e)/100*t:parseFloat(e):e}function Md(e,t,r){var n=t.position||"inside",i=t.distance!=null?t.distance:5,a=r.height,o=r.width,s=a/2,l=r.x,u=r.y,f="left",c="top";if(n instanceof Array)l+=da(n[0],r.width),u+=da(n[1],r.height),f=null,c=null;else switch(n){case"left":l-=i,u+=s,f="right",c="middle";break;case"right":l+=i+o,u+=s,c="middle";break;case"top":l+=o/2,u-=i,f="center",c="bottom";break;case"bottom":l+=o/2,u+=a+i,f="center";break;case"inside":l+=o/2,u+=s,f="center",c="middle";break;case"insideLeft":l+=i,u+=s,c="middle";break;case"insideRight":l+=o-i,u+=s,f="right",c="middle";break;case"insideTop":l+=o/2,u+=i,f="center";break;case"insideBottom":l+=o/2,u+=a-i,f="center",c="bottom";break;case"insideTopLeft":l+=i,u+=i;break;case"insideTopRight":l+=o-i,u+=i,f="right";break;case"insideBottomLeft":l+=i,u+=a-i,c="bottom";break;case"insideBottomRight":l+=o-i,u+=a-i,f="right",c="bottom";break}return e=e||{},e.x=l,e.y=u,e.align=f,e.verticalAlign=c,e}var Ov="__zr_normal__",Rv=Eu.concat(["ignore"]),w9=ca(Eu,function(e,t){return e[t]=!0,e},{ignore:!1}),Bo={},S9=new nt(0,0,0,0),c0=function(){function e(t){this.id=y2(),this.animators=[],this.currentStates=[],this.states={},this._init(t)}return e.prototype._init=function(t){this.attr(t)},e.prototype.drift=function(t,r,n){switch(this.draggable){case"horizontal":r=0;break;case"vertical":t=0;break}var i=this.transform;i||(i=this.transform=[1,0,0,1,0,0]),i[4]+=t,i[5]+=r,this.decomposeTransform(),this.markRedraw()},e.prototype.beforeUpdate=function(){},e.prototype.afterUpdate=function(){},e.prototype.update=function(){this.updateTransform(),this.__dirty&&this.updateInnerText()},e.prototype.updateInnerText=function(t){var r=this._textContent;if(r&&(!r.ignore||t)){this.textConfig||(this.textConfig={});var n=this.textConfig,i=n.local,a=r.innerTransformable,o=void 0,s=void 0,l=!1;a.parent=i?this:null;var u=!1;if(a.copyTransform(r),n.position!=null){var f=S9;n.layoutRect?f.copy(n.layoutRect):f.copy(this.getBoundingRect()),i||f.applyTransform(this.transform),this.calculateTextPosition?this.calculateTextPosition(Bo,n,f):Md(Bo,n,f),a.x=Bo.x,a.y=Bo.y,o=Bo.align,s=Bo.verticalAlign;var c=n.origin;if(c&&n.rotation!=null){var h=void 0,d=void 0;c==="center"?(h=f.width*.5,d=f.height*.5):(h=da(c[0],f.width),d=da(c[1],f.height)),u=!0,a.originX=-a.x+h+(i?0:f.x),a.originY=-a.y+d+(i?0:f.y)}}n.rotation!=null&&(a.rotation=n.rotation);var v=n.offset;v&&(a.x+=v[0],a.y+=v[1],u||(a.originX=-v[0],a.originY=-v[1]));var p=n.inside==null?typeof n.position=="string"&&n.position.indexOf("inside")>=0:n.inside,m=this._innerTextDefaultStyle||(this._innerTextDefaultStyle={}),g=void 0,y=void 0,_=void 0;p&&this.canBeInsideText()?(g=n.insideFill,y=n.insideStroke,(g==null||g==="auto")&&(g=this.getInsideTextFill()),(y==null||y==="auto")&&(y=this.getInsideTextStroke(g),_=!0)):(g=n.outsideFill,y=n.outsideStroke,(g==null||g==="auto")&&(g=this.getOutsideFill()),(y==null||y==="auto")&&(y=this.getOutsideStroke(g),_=!0)),g=g||"#000",(g!==m.fill||y!==m.stroke||_!==m.autoStroke||o!==m.align||s!==m.verticalAlign)&&(l=!0,m.fill=g,m.stroke=y,m.autoStroke=_,m.align=o,m.verticalAlign=s,r.setDefaultTextStyle(m)),r.__dirty|=Br,l&&r.dirtyStyle(!0)}},e.prototype.canBeInsideText=function(){return!0},e.prototype.getInsideTextFill=function(){return"#fff"},e.prototype.getInsideTextStroke=function(t){return"#000"},e.prototype.getOutsideFill=function(){return this.__zr&&this.__zr.isDarkMode()?Qg:Zg},e.prototype.getOutsideStroke=function(t){var r=this.__zr&&this.__zr.getBackgroundColor(),n=typeof r=="string"&&uo(r);n||(n=[255,255,255,1]);for(var i=n[3],a=this.__zr.isDarkMode(),o=0;o<3;o++)n[o]=n[o]*i+(a?0:255)*(1-i);return n[3]=1,s0(n,"rgba")},e.prototype.traverse=function(t,r){},e.prototype.attrKV=function(t,r){t==="textConfig"?this.setTextConfig(r):t==="textContent"?this.setTextContent(r):t==="clipPath"?this.setClipPath(r):t==="extra"?(this.extra=this.extra||{},ue(this.extra,r)):this[t]=r},e.prototype.hide=function(){this.ignore=!0,this.markRedraw()},e.prototype.show=function(){this.ignore=!1,this.markRedraw()},e.prototype.attr=function(t,r){if(typeof t=="string")this.attrKV(t,r);else if(Re(t))for(var n=t,i=Ct(n),a=0;a0},e.prototype.getState=function(t){return this.states[t]},e.prototype.ensureState=function(t){var r=this.states;return r[t]||(r[t]={}),r[t]},e.prototype.clearStates=function(t){this.useState(Ov,!1,t)},e.prototype.useState=function(t,r,n,i){var a=t===Ov,o=this.hasState();if(!(!o&&a)){var s=this.currentStates,l=this.stateTransition;if(!(ot(s,t)>=0&&(r||s.length===1))){var u;if(this.stateProxy&&!a&&(u=this.stateProxy(t)),u||(u=this.states&&this.states[t]),!u&&!a){r0("State "+t+" not exists.");return}a||this.saveCurrentToNormalState(u);var f=!!(u&&u.hoverLayer||i);f&&this._toggleHoverLayerFlag(!0),this._applyStateObj(t,u,this._normalState,r,!n&&!this.__inHover&&l&&l.duration>0,l);var c=this._textContent,h=this._textGuide;return c&&c.useState(t,r,n,f),h&&h.useState(t,r,n,f),a?(this.currentStates=[],this._normalState={}):r?this.currentStates.push(t):this.currentStates=[t],this._updateAnimationTargets(),this.markRedraw(),!f&&this.__inHover&&(this._toggleHoverLayerFlag(!1),this.__dirty&=~Br),u}}},e.prototype.useStates=function(t,r,n){if(!t.length)this.clearStates();else{var i=[],a=this.currentStates,o=t.length,s=o===a.length;if(s){for(var l=0;l0,v);var p=this._textContent,m=this._textGuide;p&&p.useStates(t,r,h),m&&m.useStates(t,r,h),this._updateAnimationTargets(),this.currentStates=t.slice(),this.markRedraw(),!h&&this.__inHover&&(this._toggleHoverLayerFlag(!1),this.__dirty&=~Br)}},e.prototype._updateAnimationTargets=function(){for(var t=0;t=0){var n=this.currentStates.slice();n.splice(r,1),this.useStates(n)}},e.prototype.replaceState=function(t,r,n){var i=this.currentStates.slice(),a=ot(i,t),o=ot(i,r)>=0;a>=0?o?i.splice(a,1):i[a]=r:n&&!o&&i.push(r),this.useStates(i)},e.prototype.toggleState=function(t,r){r?this.useState(t,!0):this.removeState(t)},e.prototype._mergeStates=function(t){for(var r={},n,i=0;i=0&&a.splice(o,1)}),this.animators.push(t),n&&n.animation.addAnimator(t),n&&n.wakeUp()},e.prototype.updateDuringAnimation=function(t){this.markRedraw()},e.prototype.stopAnimation=function(t,r){for(var n=this.animators,i=n.length,a=[],o=0;o0&&r.during&&a[0].during(function(v,p){r.during(p)});for(var h=0;h0||i.force&&!o.length){var C=void 0,M=void 0,A=void 0;if(s){M={},h&&(C={});for(var b=0;b<_;b++){var g=p[b];M[g]=r[g],h?C[g]=n[g]:r[g]=n[g]}}else if(h){A={};for(var b=0;b<_;b++){var g=p[b];A[g]=Hc(r[g]),C9(r,n,g)}}var x=new l0(r,!1,!1,c?jt(v,function(E){return E.targetName===t}):null);x.targetName=t,i.scope&&(x.scope=i.scope),h&&C&&x.whenWithKeys(0,C,p),A&&x.whenWithKeys(0,A,p),x.whenWithKeys(u??500,s?M:n,p).delay(f||0),e.addAnimator(x,t),o.push(x)}}const G2=c0;var Ur=function(e){ge(t,e);function t(r){var n=e.call(this)||this;return n.isGroup=!0,n._children=[],n.attr(r),n}return t.prototype.childrenRef=function(){return this._children},t.prototype.children=function(){return this._children.slice()},t.prototype.childAt=function(r){return this._children[r]},t.prototype.childOfName=function(r){for(var n=this._children,i=0;i=0&&(i.splice(a,0,r),this._doAdd(r))}return this},t.prototype.replace=function(r,n){var i=ot(this._children,r);return i>=0&&this.replaceAt(n,i),this},t.prototype.replaceAt=function(r,n){var i=this._children,a=i[n];if(r&&r!==this&&r.parent!==this&&r!==a){i[n]=r,a.parent=null;var o=this.__zr;o&&a.removeSelfFromZr(o),this._doAdd(r)}return this},t.prototype._doAdd=function(r){r.parent&&r.parent.remove(r),r.parent=this;var n=this.__zr;n&&n!==r.__zr&&r.addSelfToZr(n),n&&n.refresh()},t.prototype.remove=function(r){var n=this.__zr,i=this._children,a=ot(i,r);return a<0?this:(i.splice(a,1),r.parent=null,n&&r.removeSelfFromZr(n),n&&n.refresh(),this)},t.prototype.removeAll=function(){for(var r=this._children,n=this.__zr,i=0;i"u"&&typeof self<"u"?He.worker=!0:typeof navigator>"u"?(He.node=!0,He.svgSupported=!0):ZG(navigator.userAgent,He);function ZG(e,t){var r=t.browser,n=e.match(/Firefox\/([\d.]+)/),i=e.match(/MSIE\s([\d.]+)/)||e.match(/Trident\/.+?rv:(([\d.]+))/),a=e.match(/Edge?\/([\d.]+)/),o=/micromessenger/i.test(e);n&&(r.firefox=!0,r.version=n[1]),i&&(r.ie=!0,r.version=i[1]),a&&(r.edge=!0,r.version=a[1],r.newEdge=+a[1].split(".")[0]>18),o&&(r.weChat=!0),t.svgSupported=typeof SVGRect<"u",t.touchEventsSupported="ontouchstart"in window&&!r.ie&&!r.edge,t.pointerEventsSupported="onpointerdown"in window&&(r.edge||r.ie&&+r.version>=11),t.domSupported=typeof document<"u";var s=document.documentElement.style;t.transform3dSupported=(r.ie&&"transition"in s||r.edge||"WebKitCSSMatrix"in window&&"m11"in new WebKitCSSMatrix||"MozPerspective"in s)&&!("OTransition"in s),t.transformSupported=t.transform3dSupported||r.ie&&+r.version>=9}var Jy=12,QG="sans-serif",_o=Jy+"px "+QG,JG=20,eU=100,tU="007LLmW'55;N0500LLLLLLLLLL00NNNLzWW\\\\WQb\\0FWLg\\bWb\\WQ\\WrWWQ000CL5LLFLL0LL**F*gLLLL5F0LF\\FFF5.5N";function rU(e){var t={};if(typeof JSON>"u")return t;for(var r=0;r=0)s=o*r.length;else for(var l=0;l>1)%2;s.cssText=["position: absolute","visibility: hidden","padding: 0","margin: 0","border-width: 0","user-select: none","width:0","height:0",n[l]+":0",i[u]+":0",n[1-l]+":auto",i[1-u]+":auto",""].join("!important;"),e.appendChild(o),r.push(o)}return r}function AU(e,t,r){for(var n=r?"invTrans":"trans",i=t[n],a=t.srcCoords,o=[],s=[],l=!0,u=0;u<4;u++){var f=e[u].getBoundingClientRect(),c=2*u,h=f.left,d=f.top;o.push(h,d),l=l&&a&&h===a[c]&&d===a[c+1],s.push(e[u].offsetLeft,e[u].offsetTop)}return l&&i?i:(t.srcCoords=o,t[n]=r?J1(s,o):J1(o,s))}function x2(e){return e.nodeName.toUpperCase()==="CANVAS"}var PU=/([&<>"'])/g,EU={"&":"&","<":"<",">":">",'"':""","'":"'"};function tn(e){return e==null?"":(e+"").replace(PU,function(t,r){return EU[r]})}var LU=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,yv=[],DU=He.browser.firefox&&+He.browser.version.split(".")[0]<39;function zg(e,t,r,n){return r=r||{},n?tw(e,t,r):DU&&t.layerX!=null&&t.layerX!==t.offsetX?(r.zrX=t.layerX,r.zrY=t.layerY):t.offsetX!=null?(r.zrX=t.offsetX,r.zrY=t.offsetY):tw(e,t,r),r}function tw(e,t,r){if(He.domSupported&&e.getBoundingClientRect){var n=t.clientX,i=t.clientY;if(x2(e)){var a=e.getBoundingClientRect();r.zrX=n-a.left,r.zrY=i-a.top;return}else if(Hg(yv,e,n,i)){r.zrX=yv[0],r.zrY=yv[1];return}}r.zrX=r.zrY=0}function i0(e){return e||window.event}function Qr(e,t,r){if(t=i0(t),t.zrX!=null)return t;var n=t.type,i=n&&n.indexOf("touch")>=0;if(i){var o=n!=="touchend"?t.targetTouches[0]:t.changedTouches[0];o&&zg(e,o,t,r)}else{zg(e,t,t,r);var a=IU(t);t.zrDelta=a?a/120:-(t.detail||0)/3}var s=t.button;return t.which==null&&s!==void 0&&LU.test(t.type)&&(t.which=s&1?1:s&2?3:s&4?2:0),t}function IU(e){var t=e.wheelDelta;if(t)return t;var r=e.deltaX,n=e.deltaY;if(r==null||n==null)return t;var i=Math.abs(n!==0?n:r),a=n>0?-1:n<0?1:r>0?-1:1;return 3*i*a}function OU(e,t,r,n){e.addEventListener(t,r,n)}function RU(e,t,r,n){e.removeEventListener(t,r,n)}var C2=function(e){e.preventDefault(),e.stopPropagation(),e.cancelBubble=!0},kU=function(){function e(){this._track=[]}return e.prototype.recognize=function(t,r,n){return this._doTrack(t,r,n),this._recognize(t)},e.prototype.clear=function(){return this._track.length=0,this},e.prototype._doTrack=function(t,r,n){var i=t.touches;if(i){for(var a={points:[],touches:[],target:r,event:t},o=0,s=i.length;o1&&n&&n.length>1){var a=rw(n)/rw(i);!isFinite(a)&&(a=1),t.pinchScale=a;var o=NU(n);return t.pinchX=o[0],t.pinchY=o[1],{type:"pinch",target:e[0].target,event:t}}}}};function Pu(){return[1,0,0,1,0,0]}function a0(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=1,e[4]=0,e[5]=0,e}function BU(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e}function fs(e,t,r){var n=t[0]*r[0]+t[2]*r[1],i=t[1]*r[0]+t[3]*r[1],a=t[0]*r[2]+t[2]*r[3],o=t[1]*r[2]+t[3]*r[3],s=t[0]*r[4]+t[2]*r[5]+t[4],l=t[1]*r[4]+t[3]*r[5]+t[5];return e[0]=n,e[1]=i,e[2]=a,e[3]=o,e[4]=s,e[5]=l,e}function Vg(e,t,r){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4]+r[0],e[5]=t[5]+r[1],e}function o0(e,t,r){var n=t[0],i=t[2],a=t[4],o=t[1],s=t[3],l=t[5],u=Math.sin(r),f=Math.cos(r);return e[0]=n*f+o*u,e[1]=-n*u+o*f,e[2]=i*f+s*u,e[3]=-i*u+f*s,e[4]=f*a+u*l,e[5]=f*l-u*a,e}function FU(e,t,r){var n=r[0],i=r[1];return e[0]=t[0]*n,e[1]=t[1]*i,e[2]=t[2]*n,e[3]=t[3]*i,e[4]=t[4]*n,e[5]=t[5]*i,e}function bh(e,t){var r=t[0],n=t[2],i=t[4],a=t[1],o=t[3],s=t[5],l=r*o-a*n;return l?(l=1/l,e[0]=o*l,e[1]=-a*l,e[2]=-n*l,e[3]=r*l,e[4]=(n*s-o*i)*l,e[5]=(a*i-r*s)*l,e):null}var $U=function(){function e(t,r){this.x=t||0,this.y=r||0}return e.prototype.copy=function(t){return this.x=t.x,this.y=t.y,this},e.prototype.clone=function(){return new e(this.x,this.y)},e.prototype.set=function(t,r){return this.x=t,this.y=r,this},e.prototype.equal=function(t){return t.x===this.x&&t.y===this.y},e.prototype.add=function(t){return this.x+=t.x,this.y+=t.y,this},e.prototype.scale=function(t){this.x*=t,this.y*=t},e.prototype.scaleAndAdd=function(t,r){this.x+=t.x*r,this.y+=t.y*r},e.prototype.sub=function(t){return this.x-=t.x,this.y-=t.y,this},e.prototype.dot=function(t){return this.x*t.x+this.y*t.y},e.prototype.len=function(){return Math.sqrt(this.x*this.x+this.y*this.y)},e.prototype.lenSquare=function(){return this.x*this.x+this.y*this.y},e.prototype.normalize=function(){var t=this.len();return this.x/=t,this.y/=t,this},e.prototype.distance=function(t){var r=this.x-t.x,n=this.y-t.y;return Math.sqrt(r*r+n*n)},e.prototype.distanceSquare=function(t){var r=this.x-t.x,n=this.y-t.y;return r*r+n*n},e.prototype.negate=function(){return this.x=-this.x,this.y=-this.y,this},e.prototype.transform=function(t){if(t){var r=this.x,n=this.y;return this.x=t[0]*r+t[2]*n+t[4],this.y=t[1]*r+t[3]*n+t[5],this}},e.prototype.toArray=function(t){return t[0]=this.x,t[1]=this.y,t},e.prototype.fromArray=function(t){this.x=t[0],this.y=t[1]},e.set=function(t,r,n){t.x=r,t.y=n},e.copy=function(t,r){t.x=r.x,t.y=r.y},e.len=function(t){return Math.sqrt(t.x*t.x+t.y*t.y)},e.lenSquare=function(t){return t.x*t.x+t.y*t.y},e.dot=function(t,r){return t.x*r.x+t.y*r.y},e.add=function(t,r,n){t.x=r.x+n.x,t.y=r.y+n.y},e.sub=function(t,r,n){t.x=r.x-n.x,t.y=r.y-n.y},e.scale=function(t,r,n){t.x=r.x*n,t.y=r.y*n},e.scaleAndAdd=function(t,r,n,i){t.x=r.x+n.x*i,t.y=r.y+n.y*i},e.lerp=function(t,r,n,i){var a=1-i;t.x=a*r.x+i*n.x,t.y=a*r.y+i*n.y},e}();const Fe=$U;var kf=Math.min,Nf=Math.max,wa=new Fe,Sa=new Fe,xa=new Fe,Ca=new Fe,tl=new Fe,rl=new Fe,nt=function(){function e(t,r,n,i){n<0&&(t=t+n,n=-n),i<0&&(r=r+i,i=-i),this.x=t,this.y=r,this.width=n,this.height=i}return e.prototype.union=function(t){var r=kf(t.x,this.x),n=kf(t.y,this.y);isFinite(this.x)&&isFinite(this.width)?this.width=Nf(t.x+t.width,this.x+this.width)-r:this.width=t.width,isFinite(this.y)&&isFinite(this.height)?this.height=Nf(t.y+t.height,this.y+this.height)-n:this.height=t.height,this.x=r,this.y=n},e.prototype.applyTransform=function(t){e.applyTransform(this,this,t)},e.prototype.calculateTransform=function(t){var r=this,n=t.width/r.width,i=t.height/r.height,a=Pu();return Vg(a,a,[-r.x,-r.y]),FU(a,a,[n,i]),Vg(a,a,[t.x,t.y]),a},e.prototype.intersect=function(t,r){if(!t)return!1;t instanceof e||(t=e.create(t));var n=this,i=n.x,a=n.x+n.width,o=n.y,s=n.y+n.height,l=t.x,u=t.x+t.width,f=t.y,c=t.y+t.height,h=!(av&&(v=_,pv&&(v=b,g=n.x&&t<=n.x+n.width&&r>=n.y&&r<=n.y+n.height},e.prototype.clone=function(){return new e(this.x,this.y,this.width,this.height)},e.prototype.copy=function(t){e.copy(this,t)},e.prototype.plain=function(){return{x:this.x,y:this.y,width:this.width,height:this.height}},e.prototype.isFinite=function(){return isFinite(this.x)&&isFinite(this.y)&&isFinite(this.width)&&isFinite(this.height)},e.prototype.isZero=function(){return this.width===0||this.height===0},e.create=function(t){return new e(t.x,t.y,t.width,t.height)},e.copy=function(t,r){t.x=r.x,t.y=r.y,t.width=r.width,t.height=r.height},e.applyTransform=function(t,r,n){if(!n){t!==r&&e.copy(t,r);return}if(n[1]<1e-5&&n[1]>-1e-5&&n[2]<1e-5&&n[2]>-1e-5){var i=n[0],a=n[3],o=n[4],s=n[5];t.x=r.x*i+o,t.y=r.y*a+s,t.width=r.width*i,t.height=r.height*a,t.width<0&&(t.x+=t.width,t.width=-t.width),t.height<0&&(t.y+=t.height,t.height=-t.height);return}wa.x=xa.x=r.x,wa.y=Ca.y=r.y,Sa.x=Ca.x=r.x+r.width,Sa.y=xa.y=r.y+r.height,wa.transform(n),Ca.transform(n),Sa.transform(n),xa.transform(n),t.x=kf(wa.x,Sa.x,xa.x,Ca.x),t.y=kf(wa.y,Sa.y,xa.y,Ca.y);var l=Nf(wa.x,Sa.x,xa.x,Ca.x),u=Nf(wa.y,Sa.y,xa.y,Ca.y);t.width=l-t.x,t.height=u-t.y},e}(),T2="silent";function HU(e,t,r){return{type:e,event:r,target:t.target,topTarget:t.topTarget,cancelBubble:!1,offsetX:r.zrX,offsetY:r.zrY,gestureEvent:r.gestureEvent,pinchX:r.pinchX,pinchY:r.pinchY,pinchScale:r.pinchScale,wheelDelta:r.zrDelta,zrByTouch:r.zrByTouch,which:r.which,stop:zU}}function zU(){C2(this.event)}var VU=function(e){ge(t,e);function t(){var r=e!==null&&e.apply(this,arguments)||this;return r.handler=null,r}return t.prototype.dispose=function(){},t.prototype.setCursor=function(){},t}(ii),nl=function(){function e(t,r){this.x=t,this.y=r}return e}(),WU=["click","dblclick","mousewheel","mouseout","mouseup","mousedown","mousemove","contextmenu"],bv=new nt(0,0,0,0),M2=function(e){ge(t,e);function t(r,n,i,a,o){var s=e.call(this)||this;return s._hovered=new nl(0,0),s.storage=r,s.painter=n,s.painterRoot=a,s._pointerSize=o,i=i||new VU,s.proxy=null,s.setHandlerProxy(i),s._draggingMgr=new SU(s),s}return t.prototype.setHandlerProxy=function(r){this.proxy&&this.proxy.dispose(),r&&(R(WU,function(n){r.on&&r.on(n,this[n],this)},this),r.handler=this),this.proxy=r},t.prototype.mousemove=function(r){var n=r.zrX,i=r.zrY,a=A2(this,n,i),o=this._hovered,s=o.target;s&&!s.__zr&&(o=this.findHover(o.x,o.y),s=o.target);var l=this._hovered=a?new nl(n,i):this.findHover(n,i),u=l.target,f=this.proxy;f.setCursor&&f.setCursor(u?u.cursor:"default"),s&&u!==s&&this.dispatchToElement(o,"mouseout",r),this.dispatchToElement(l,"mousemove",r),u&&u!==s&&this.dispatchToElement(l,"mouseover",r)},t.prototype.mouseout=function(r){var n=r.zrEventControl;n!=="only_globalout"&&this.dispatchToElement(this._hovered,"mouseout",r),n!=="no_globalout"&&this.trigger("globalout",{type:"globalout",event:r})},t.prototype.resize=function(){this._hovered=new nl(0,0)},t.prototype.dispatch=function(r,n){var i=this[r];i&&i.call(this,n)},t.prototype.dispose=function(){this.proxy.dispose(),this.storage=null,this.proxy=null,this.painter=null},t.prototype.setCursorStyle=function(r){var n=this.proxy;n.setCursor&&n.setCursor(r)},t.prototype.dispatchToElement=function(r,n,i){r=r||{};var a=r.target;if(!(a&&a.silent)){for(var o="on"+n,s=HU(n,r,i);a&&(a[o]&&(s.cancelBubble=!!a[o].call(a,s)),a.trigger(n,s),a=a.__hostTarget?a.__hostTarget:a.parent,!s.cancelBubble););s.cancelBubble||(this.trigger(n,s),this.painter&&this.painter.eachOtherLayer&&this.painter.eachOtherLayer(function(l){typeof l[o]=="function"&&l[o].call(l,s),l.trigger&&l.trigger(n,s)}))}},t.prototype.findHover=function(r,n,i){var a=this.storage.getDisplayList(),o=new nl(r,n);if(nw(a,o,r,n,i),this._pointerSize&&!o.target){for(var s=[],l=this._pointerSize,u=l/2,f=new nt(r-u,n-u,l,l),c=a.length-1;c>=0;c--){var h=a[c];h!==i&&!h.ignore&&!h.ignoreCoarsePointer&&(!h.parent||!h.parent.ignoreCoarsePointer)&&(bv.copy(h.getBoundingRect()),h.transform&&bv.applyTransform(h.transform),bv.intersect(f)&&s.push(h))}if(s.length)for(var d=4,v=Math.PI/12,p=Math.PI*2,m=0;m4)return;this._downPoint=null}this.dispatchToElement(a,e,t)}});function GU(e,t,r){if(e[e.rectHover?"rectContain":"contain"](t,r)){for(var n=e,i=void 0,a=!1;n;){if(n.ignoreClip&&(a=!0),!a){var o=n.getClipPath();if(o&&!o.contain(t,r))return!1;n.silent&&(i=!0)}var s=n.__hostTarget;n=s||n.parent}return i?T2:!0}return!1}function nw(e,t,r,n,i){for(var a=e.length-1;a>=0;a--){var o=e[a],s=void 0;if(o!==i&&!o.ignore&&(s=GU(o,r,n))&&(!t.topTarget&&(t.topTarget=o),s!==T2)){t.target=o;break}}}function A2(e,t,r){var n=e.painter;return t<0||t>n.getWidth()||r<0||r>n.getHeight()}const UU=M2;var P2=32,il=7;function YU(e){for(var t=0;e>=P2;)t|=e&1,e>>=1;return e+t}function iw(e,t,r,n){var i=t+1;if(i===r)return 1;if(n(e[i++],e[t])<0){for(;i=0;)i++;return i-t}function jU(e,t,r){for(r--;t>>1,i(a,e[l])<0?s=l:o=l+1;var u=n-o;switch(u){case 3:e[o+3]=e[o+2];case 2:e[o+2]=e[o+1];case 1:e[o+1]=e[o];break;default:for(;u>0;)e[o+u]=e[o+u-1],u--}e[o]=a}}function wv(e,t,r,n,i,a){var o=0,s=0,l=1;if(a(e,t[r+i])>0){for(s=n-i;l0;)o=l,l=(l<<1)+1,l<=0&&(l=s);l>s&&(l=s),o+=i,l+=i}else{for(s=i+1;ls&&(l=s);var u=o;o=i-l,l=i-u}for(o++;o>>1);a(e,t[r+f])>0?o=f+1:l=f}return l}function Sv(e,t,r,n,i,a){var o=0,s=0,l=1;if(a(e,t[r+i])<0){for(s=i+1;ls&&(l=s);var u=o;o=i-l,l=i-u}else{for(s=n-i;l=0;)o=l,l=(l<<1)+1,l<=0&&(l=s);l>s&&(l=s),o+=i,l+=i}for(o++;o>>1);a(e,t[r+f])<0?l=f:o=f+1}return l}function qU(e,t){var r=il,n,i,a=0;e.length;var o=[];n=[],i=[];function s(d,v){n[a]=d,i[a]=v,a+=1}function l(){for(;a>1;){var d=a-2;if(d>=1&&i[d-1]<=i[d]+i[d+1]||d>=2&&i[d-2]<=i[d]+i[d-1])i[d-1]i[d+1])break;f(d)}}function u(){for(;a>1;){var d=a-2;d>0&&i[d-1]=il||S>=il);if(C)break;x<0&&(x=0),x+=2}if(r=x,r<1&&(r=1),v===1){for(g=0;g=0;g--)e[w+g]=e[x+g];e[b]=o[_];return}for(var S=r;;){var C=0,M=0,A=!1;do if(t(o[_],e[y])<0){if(e[b--]=e[y--],C++,M=0,--v===0){A=!0;break}}else if(e[b--]=o[_--],M++,C=0,--m===1){A=!0;break}while((C|M)=0;g--)e[w+g]=e[x+g];if(v===0){A=!0;break}}if(e[b--]=o[_--],--m===1){A=!0;break}if(M=m-wv(e[y],o,0,m,m-1,t),M!==0){for(b-=M,_-=M,m-=M,w=b+1,x=_+1,g=0;g=il||M>=il);if(A)break;S<0&&(S=0),S+=2}if(r=S,r<1&&(r=1),m===1){for(b-=v,y-=v,w=b+1,x=y+1,g=v-1;g>=0;g--)e[w+g]=e[x+g];e[b]=o[_]}else{if(m===0)throw new Error;for(x=b-(m-1),g=0;gs&&(l=s),aw(e,r,r+l,r+a,t),a=l}o.pushRun(r,a),o.mergeRuns(),i-=a,r+=a}while(i!==0);o.forceMergeRuns()}}var Br=1,Cl=2,Qo=4,ow=!1;function xv(){ow||(ow=!0,console.warn("z / z2 / zlevel of displayable is invalid, which may cause unexpected errors"))}function sw(e,t){return e.zlevel===t.zlevel?e.z===t.z?e.z2-t.z2:e.z-t.z:e.zlevel-t.zlevel}var KU=function(){function e(){this._roots=[],this._displayList=[],this._displayListLen=0,this.displayableSortFunc=sw}return e.prototype.traverse=function(t,r){for(var n=0;n0&&(f.__clipPaths=[]),isNaN(f.z)&&(xv(),f.z=0),isNaN(f.z2)&&(xv(),f.z2=0),isNaN(f.zlevel)&&(xv(),f.zlevel=0),this._displayList[this._displayListLen++]=f}var c=t.getDecalElement&&t.getDecalElement();c&&this._updateAndAddDisplayable(c,r,n);var h=t.getTextGuideLine();h&&this._updateAndAddDisplayable(h,r,n);var d=t.getTextContent();d&&this._updateAndAddDisplayable(d,r,n)}},e.prototype.addRoot=function(t){t.__zr&&t.__zr.storage===this||this._roots.push(t)},e.prototype.delRoot=function(t){if(t instanceof Array){for(var r=0,n=t.length;r=0&&this._roots.splice(i,1)},e.prototype.delAllRoots=function(){this._roots=[],this._displayList=[],this._displayListLen=0},e.prototype.getRoots=function(){return this._roots},e.prototype.dispose=function(){this._displayList=null,this._roots=null},e}(),E2;E2=He.hasGlobalWindow&&(window.requestAnimationFrame&&window.requestAnimationFrame.bind(window)||window.msRequestAnimationFrame&&window.msRequestAnimationFrame.bind(window)||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame)||function(e){return setTimeout(e,16)};const Wg=E2;var ql={linear:function(e){return e},quadraticIn:function(e){return e*e},quadraticOut:function(e){return e*(2-e)},quadraticInOut:function(e){return(e*=2)<1?.5*e*e:-.5*(--e*(e-2)-1)},cubicIn:function(e){return e*e*e},cubicOut:function(e){return--e*e*e+1},cubicInOut:function(e){return(e*=2)<1?.5*e*e*e:.5*((e-=2)*e*e+2)},quarticIn:function(e){return e*e*e*e},quarticOut:function(e){return 1- --e*e*e*e},quarticInOut:function(e){return(e*=2)<1?.5*e*e*e*e:-.5*((e-=2)*e*e*e-2)},quinticIn:function(e){return e*e*e*e*e},quinticOut:function(e){return--e*e*e*e*e+1},quinticInOut:function(e){return(e*=2)<1?.5*e*e*e*e*e:.5*((e-=2)*e*e*e*e+2)},sinusoidalIn:function(e){return 1-Math.cos(e*Math.PI/2)},sinusoidalOut:function(e){return Math.sin(e*Math.PI/2)},sinusoidalInOut:function(e){return .5*(1-Math.cos(Math.PI*e))},exponentialIn:function(e){return e===0?0:Math.pow(1024,e-1)},exponentialOut:function(e){return e===1?1:1-Math.pow(2,-10*e)},exponentialInOut:function(e){return e===0?0:e===1?1:(e*=2)<1?.5*Math.pow(1024,e-1):.5*(-Math.pow(2,-10*(e-1))+2)},circularIn:function(e){return 1-Math.sqrt(1-e*e)},circularOut:function(e){return Math.sqrt(1- --e*e)},circularInOut:function(e){return(e*=2)<1?-.5*(Math.sqrt(1-e*e)-1):.5*(Math.sqrt(1-(e-=2)*e)+1)},elasticIn:function(e){var t,r=.1,n=.4;return e===0?0:e===1?1:(!r||r<1?(r=1,t=n/4):t=n*Math.asin(1/r)/(2*Math.PI),-(r*Math.pow(2,10*(e-=1))*Math.sin((e-t)*(2*Math.PI)/n)))},elasticOut:function(e){var t,r=.1,n=.4;return e===0?0:e===1?1:(!r||r<1?(r=1,t=n/4):t=n*Math.asin(1/r)/(2*Math.PI),r*Math.pow(2,-10*e)*Math.sin((e-t)*(2*Math.PI)/n)+1)},elasticInOut:function(e){var t,r=.1,n=.4;return e===0?0:e===1?1:(!r||r<1?(r=1,t=n/4):t=n*Math.asin(1/r)/(2*Math.PI),(e*=2)<1?-.5*(r*Math.pow(2,10*(e-=1))*Math.sin((e-t)*(2*Math.PI)/n)):r*Math.pow(2,-10*(e-=1))*Math.sin((e-t)*(2*Math.PI)/n)*.5+1)},backIn:function(e){var t=1.70158;return e*e*((t+1)*e-t)},backOut:function(e){var t=1.70158;return--e*e*((t+1)*e+t)+1},backInOut:function(e){var t=2.5949095;return(e*=2)<1?.5*(e*e*((t+1)*e-t)):.5*((e-=2)*e*((t+1)*e+t)+2)},bounceIn:function(e){return 1-ql.bounceOut(1-e)},bounceOut:function(e){return e<1/2.75?7.5625*e*e:e<2/2.75?7.5625*(e-=1.5/2.75)*e+.75:e<2.5/2.75?7.5625*(e-=2.25/2.75)*e+.9375:7.5625*(e-=2.625/2.75)*e+.984375},bounceInOut:function(e){return e<.5?ql.bounceIn(e*2)*.5:ql.bounceOut(e*2-1)*.5+.5}},Bf=Math.pow,ia=Math.sqrt,wd=1e-8,L2=1e-4,lw=ia(3),Ff=1/3,Vn=Us(),rn=Us(),cs=Us();function Ji(e){return e>-wd&&ewd||e<-wd}function Zt(e,t,r,n,i){var a=1-i;return a*a*(a*e+3*i*t)+i*i*(i*n+3*a*r)}function uw(e,t,r,n,i){var a=1-i;return 3*(((t-e)*a+2*(r-t)*i)*a+(n-r)*i*i)}function I2(e,t,r,n,i,a){var o=n+3*(t-r)-e,s=3*(r-t*2+e),l=3*(t-e),u=e-i,f=s*s-3*o*l,c=s*l-9*o*u,h=l*l-3*s*u,d=0;if(Ji(f)&&Ji(c))if(Ji(s))a[0]=0;else{var v=-l/s;v>=0&&v<=1&&(a[d++]=v)}else{var p=c*c-4*f*h;if(Ji(p)){var m=c/f,v=-s/o+m,g=-m/2;v>=0&&v<=1&&(a[d++]=v),g>=0&&g<=1&&(a[d++]=g)}else if(p>0){var y=ia(p),_=f*s+1.5*o*(-c+y),b=f*s+1.5*o*(-c-y);_<0?_=-Bf(-_,Ff):_=Bf(_,Ff),b<0?b=-Bf(-b,Ff):b=Bf(b,Ff);var v=(-s-(_+b))/(3*o);v>=0&&v<=1&&(a[d++]=v)}else{var x=(2*f*s-3*o*c)/(2*ia(f*f*f)),w=Math.acos(x)/3,S=ia(f),C=Math.cos(w),v=(-s-2*S*C)/(3*o),g=(-s+S*(C+lw*Math.sin(w)))/(3*o),M=(-s+S*(C-lw*Math.sin(w)))/(3*o);v>=0&&v<=1&&(a[d++]=v),g>=0&&g<=1&&(a[d++]=g),M>=0&&M<=1&&(a[d++]=M)}}return d}function O2(e,t,r,n,i){var a=6*r-12*t+6*e,o=9*t+3*n-3*e-9*r,s=3*t-3*e,l=0;if(Ji(o)){if(D2(a)){var u=-s/a;u>=0&&u<=1&&(i[l++]=u)}}else{var f=a*a-4*o*s;if(Ji(f))i[0]=-a/(2*o);else if(f>0){var c=ia(f),u=(-a+c)/(2*o),h=(-a-c)/(2*o);u>=0&&u<=1&&(i[l++]=u),h>=0&&h<=1&&(i[l++]=h)}}return l}function Sd(e,t,r,n,i,a){var o=(t-e)*i+e,s=(r-t)*i+t,l=(n-r)*i+r,u=(s-o)*i+o,f=(l-s)*i+s,c=(f-u)*i+u;a[0]=e,a[1]=o,a[2]=u,a[3]=c,a[4]=c,a[5]=f,a[6]=l,a[7]=n}function R2(e,t,r,n,i,a,o,s,l,u,f){var c,h=.005,d=1/0,v,p,m,g;Vn[0]=l,Vn[1]=u;for(var y=0;y<1;y+=.05)rn[0]=Zt(e,r,i,o,y),rn[1]=Zt(t,n,a,s,y),m=us(Vn,rn),m=0&&m=0&&u<=1&&(i[l++]=u)}}else{var f=o*o-4*a*s;if(Ji(f)){var u=-o/(2*a);u>=0&&u<=1&&(i[l++]=u)}else if(f>0){var c=ia(f),u=(-o+c)/(2*a),h=(-o-c)/(2*a);u>=0&&u<=1&&(i[l++]=u),h>=0&&h<=1&&(i[l++]=h)}}return l}function k2(e,t,r){var n=e+r-2*t;return n===0?.5:(e-t)/n}function xd(e,t,r,n,i){var a=(t-e)*n+e,o=(r-t)*n+t,s=(o-a)*n+a;i[0]=e,i[1]=a,i[2]=s,i[3]=s,i[4]=o,i[5]=r}function N2(e,t,r,n,i,a,o,s,l){var u,f=.005,c=1/0;Vn[0]=o,Vn[1]=s;for(var h=0;h<1;h+=.05){rn[0]=ir(e,r,i,h),rn[1]=ir(t,n,a,h);var d=us(Vn,rn);d=0&&d=1?1:I2(0,n,a,1,l,s)&&Zt(0,i,o,1,s[0])}}}var e9=function(){function e(t){this._inited=!1,this._startTime=0,this._pausedTime=0,this._paused=!1,this._life=t.life||1e3,this._delay=t.delay||0,this.loop=t.loop||!1,this.onframe=t.onframe||Er,this.ondestroy=t.ondestroy||Er,this.onrestart=t.onrestart||Er,t.easing&&this.setEasing(t.easing)}return e.prototype.step=function(t,r){if(this._inited||(this._startTime=t+this._delay,this._inited=!0),this._paused){this._pausedTime+=r;return}var n=this._life,i=t-this._startTime-this._pausedTime,a=i/n;a<0&&(a=0),a=Math.min(a,1);var o=this.easingFunc,s=o?o(a):a;if(this.onframe(s),a===1)if(this.loop){var l=i%n;this._startTime=t-l,this._pausedTime=0,this.onrestart()}else return!0;return!1},e.prototype.pause=function(){this._paused=!0},e.prototype.resume=function(){this._paused=!1},e.prototype.setEasing=function(t){this.easing=t,this.easingFunc=Ye(t)?t:ql[t]||B2(t)},e}();const t9=e9;var F2=function(){function e(t){this.value=t}return e}(),r9=function(){function e(){this._len=0}return e.prototype.insert=function(t){var r=new F2(t);return this.insertEntry(r),r},e.prototype.insertEntry=function(t){this.head?(this.tail.next=t,t.prev=this.tail,t.next=null,this.tail=t):this.head=this.tail=t,this._len++},e.prototype.remove=function(t){var r=t.prev,n=t.next;r?r.next=n:this.head=n,n?n.prev=r:this.tail=r,t.next=t.prev=null,this._len--},e.prototype.len=function(){return this._len},e.prototype.clear=function(){this.head=this.tail=null,this._len=0},e}(),af=function(){function e(t){this._list=new r9,this._maxSize=10,this._map={},this._maxSize=t}return e.prototype.put=function(t,r){var n=this._list,i=this._map,a=null;if(i[t]==null){var o=n.len(),s=this._lastRemovedEntry;if(o>=this._maxSize&&o>0){var l=n.head;n.remove(l),delete i[l.key],a=l.value,this._lastRemovedEntry=l}s?s.value=r:s=new F2(r),s.key=t,n.insertEntry(s),i[t]=s}return a},e.prototype.get=function(t){var r=this._map[t],n=this._list;if(r!=null)return r!==n.tail&&(n.remove(r),n.insertEntry(r)),r.value},e.prototype.clear=function(){this._list.clear(),this._map={}},e.prototype.len=function(){return this._list.len()},e}(),cw={transparent:[0,0,0,0],aliceblue:[240,248,255,1],antiquewhite:[250,235,215,1],aqua:[0,255,255,1],aquamarine:[127,255,212,1],azure:[240,255,255,1],beige:[245,245,220,1],bisque:[255,228,196,1],black:[0,0,0,1],blanchedalmond:[255,235,205,1],blue:[0,0,255,1],blueviolet:[138,43,226,1],brown:[165,42,42,1],burlywood:[222,184,135,1],cadetblue:[95,158,160,1],chartreuse:[127,255,0,1],chocolate:[210,105,30,1],coral:[255,127,80,1],cornflowerblue:[100,149,237,1],cornsilk:[255,248,220,1],crimson:[220,20,60,1],cyan:[0,255,255,1],darkblue:[0,0,139,1],darkcyan:[0,139,139,1],darkgoldenrod:[184,134,11,1],darkgray:[169,169,169,1],darkgreen:[0,100,0,1],darkgrey:[169,169,169,1],darkkhaki:[189,183,107,1],darkmagenta:[139,0,139,1],darkolivegreen:[85,107,47,1],darkorange:[255,140,0,1],darkorchid:[153,50,204,1],darkred:[139,0,0,1],darksalmon:[233,150,122,1],darkseagreen:[143,188,143,1],darkslateblue:[72,61,139,1],darkslategray:[47,79,79,1],darkslategrey:[47,79,79,1],darkturquoise:[0,206,209,1],darkviolet:[148,0,211,1],deeppink:[255,20,147,1],deepskyblue:[0,191,255,1],dimgray:[105,105,105,1],dimgrey:[105,105,105,1],dodgerblue:[30,144,255,1],firebrick:[178,34,34,1],floralwhite:[255,250,240,1],forestgreen:[34,139,34,1],fuchsia:[255,0,255,1],gainsboro:[220,220,220,1],ghostwhite:[248,248,255,1],gold:[255,215,0,1],goldenrod:[218,165,32,1],gray:[128,128,128,1],green:[0,128,0,1],greenyellow:[173,255,47,1],grey:[128,128,128,1],honeydew:[240,255,240,1],hotpink:[255,105,180,1],indianred:[205,92,92,1],indigo:[75,0,130,1],ivory:[255,255,240,1],khaki:[240,230,140,1],lavender:[230,230,250,1],lavenderblush:[255,240,245,1],lawngreen:[124,252,0,1],lemonchiffon:[255,250,205,1],lightblue:[173,216,230,1],lightcoral:[240,128,128,1],lightcyan:[224,255,255,1],lightgoldenrodyellow:[250,250,210,1],lightgray:[211,211,211,1],lightgreen:[144,238,144,1],lightgrey:[211,211,211,1],lightpink:[255,182,193,1],lightsalmon:[255,160,122,1],lightseagreen:[32,178,170,1],lightskyblue:[135,206,250,1],lightslategray:[119,136,153,1],lightslategrey:[119,136,153,1],lightsteelblue:[176,196,222,1],lightyellow:[255,255,224,1],lime:[0,255,0,1],limegreen:[50,205,50,1],linen:[250,240,230,1],magenta:[255,0,255,1],maroon:[128,0,0,1],mediumaquamarine:[102,205,170,1],mediumblue:[0,0,205,1],mediumorchid:[186,85,211,1],mediumpurple:[147,112,219,1],mediumseagreen:[60,179,113,1],mediumslateblue:[123,104,238,1],mediumspringgreen:[0,250,154,1],mediumturquoise:[72,209,204,1],mediumvioletred:[199,21,133,1],midnightblue:[25,25,112,1],mintcream:[245,255,250,1],mistyrose:[255,228,225,1],moccasin:[255,228,181,1],navajowhite:[255,222,173,1],navy:[0,0,128,1],oldlace:[253,245,230,1],olive:[128,128,0,1],olivedrab:[107,142,35,1],orange:[255,165,0,1],orangered:[255,69,0,1],orchid:[218,112,214,1],palegoldenrod:[238,232,170,1],palegreen:[152,251,152,1],paleturquoise:[175,238,238,1],palevioletred:[219,112,147,1],papayawhip:[255,239,213,1],peachpuff:[255,218,185,1],peru:[205,133,63,1],pink:[255,192,203,1],plum:[221,160,221,1],powderblue:[176,224,230,1],purple:[128,0,128,1],red:[255,0,0,1],rosybrown:[188,143,143,1],royalblue:[65,105,225,1],saddlebrown:[139,69,19,1],salmon:[250,128,114,1],sandybrown:[244,164,96,1],seagreen:[46,139,87,1],seashell:[255,245,238,1],sienna:[160,82,45,1],silver:[192,192,192,1],skyblue:[135,206,235,1],slateblue:[106,90,205,1],slategray:[112,128,144,1],slategrey:[112,128,144,1],snow:[255,250,250,1],springgreen:[0,255,127,1],steelblue:[70,130,180,1],tan:[210,180,140,1],teal:[0,128,128,1],thistle:[216,191,216,1],tomato:[255,99,71,1],turquoise:[64,224,208,1],violet:[238,130,238,1],wheat:[245,222,179,1],white:[255,255,255,1],whitesmoke:[245,245,245,1],yellow:[255,255,0,1],yellowgreen:[154,205,50,1]};function Kl(e){return e=Math.round(e),e<0?0:e>255?255:e}function dw(e){return e<0?0:e>1?1:e}function Cv(e){var t=e;return t.length&&t.charAt(t.length-1)==="%"?Kl(parseFloat(t)/100*255):Kl(parseInt(t,10))}function Xl(e){var t=e;return t.length&&t.charAt(t.length-1)==="%"?dw(parseFloat(t)/100):dw(parseFloat(t))}function Tv(e,t,r){return r<0?r+=1:r>1&&(r-=1),r*6<1?e+(t-e)*r*6:r*2<1?t:r*3<2?e+(t-e)*(2/3-r)*6:e}function Zr(e,t,r,n,i){return e[0]=t,e[1]=r,e[2]=n,e[3]=i,e}function Gg(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e}var $2=new af(20),$f=null;function Bo(e,t){$f&&Gg($f,t),$f=$2.put(e,$f||t.slice())}function uo(e,t){if(e){t=t||[];var r=$2.get(e);if(r)return Gg(t,r);e=e+"";var n=e.replace(/ /g,"").toLowerCase();if(n in cw)return Gg(t,cw[n]),Bo(e,t),t;var i=n.length;if(n.charAt(0)==="#"){if(i===4||i===5){var a=parseInt(n.slice(1,4),16);if(!(a>=0&&a<=4095)){Zr(t,0,0,0,1);return}return Zr(t,(a&3840)>>4|(a&3840)>>8,a&240|(a&240)>>4,a&15|(a&15)<<4,i===5?parseInt(n.slice(4),16)/15:1),Bo(e,t),t}else if(i===7||i===9){var a=parseInt(n.slice(1,7),16);if(!(a>=0&&a<=16777215)){Zr(t,0,0,0,1);return}return Zr(t,(a&16711680)>>16,(a&65280)>>8,a&255,i===9?parseInt(n.slice(7),16)/255:1),Bo(e,t),t}return}var o=n.indexOf("("),s=n.indexOf(")");if(o!==-1&&s+1===i){var l=n.substr(0,o),u=n.substr(o+1,s-(o+1)).split(","),f=1;switch(l){case"rgba":if(u.length!==4)return u.length===3?Zr(t,+u[0],+u[1],+u[2],1):Zr(t,0,0,0,1);f=Xl(u.pop());case"rgb":if(u.length>=3)return Zr(t,Cv(u[0]),Cv(u[1]),Cv(u[2]),u.length===3?f:Xl(u[3])),Bo(e,t),t;Zr(t,0,0,0,1);return;case"hsla":if(u.length!==4){Zr(t,0,0,0,1);return}return u[3]=Xl(u[3]),hw(u,t),Bo(e,t),t;case"hsl":if(u.length!==3){Zr(t,0,0,0,1);return}return hw(u,t),Bo(e,t),t;default:return}}Zr(t,0,0,0,1)}}function hw(e,t){var r=(parseFloat(e[0])%360+360)%360/360,n=Xl(e[1]),i=Xl(e[2]),a=i<=.5?i*(n+1):i+n-i*n,o=i*2-a;return t=t||[],Zr(t,Kl(Tv(o,a,r+1/3)*255),Kl(Tv(o,a,r)*255),Kl(Tv(o,a,r-1/3)*255),1),e.length===4&&(t[3]=e[3]),t}function vw(e,t){var r=uo(e);if(r){for(var n=0;n<3;n++)t<0?r[n]=r[n]*(1-t)|0:r[n]=(255-r[n])*t+r[n]|0,r[n]>255?r[n]=255:r[n]<0&&(r[n]=0);return s0(r,r.length===4?"rgba":"rgb")}}function s0(e,t){if(!(!e||!e.length)){var r=e[0]+","+e[1]+","+e[2];return(t==="rgba"||t==="hsva"||t==="hsla")&&(r+=","+e[3]),t+"("+r+")"}}function Cd(e,t){var r=uo(e);return r?(.299*r[0]+.587*r[1]+.114*r[2])*r[3]/255+(1-r[3])*t:0}function n9(e){return e.type==="linear"}function i9(e){return e.type==="radial"}(function(){return He.hasGlobalWindow&&Ye(window.btoa)?function(e){return window.btoa(unescape(encodeURIComponent(e)))}:typeof Buffer<"u"?function(e){return Buffer.from(e).toString("base64")}:function(e){return null}})();var Ug=Array.prototype.slice;function hi(e,t,r){return(t-e)*r+e}function Mv(e,t,r,n){for(var i=t.length,a=0;an?t:e,a=Math.min(r,n),o=i[a-1]||{color:[0,0,0,0],offset:0},s=a;so;if(s)n.length=o;else for(var l=a;l=1},e.prototype.getAdditiveTrack=function(){return this._additiveTrack},e.prototype.addKeyframe=function(t,r,n){this._needsSort=!0;var i=this.keyframes,a=i.length,o=!1,s=gw,l=r;if(Ir(r)){var u=l9(r);s=u,(u===1&&!Tt(r[0])||u===2&&!Tt(r[0][0]))&&(o=!0)}else if(Tt(r)&&!bd(r))s=zf;else if(Ee(r))if(!isNaN(+r))s=zf;else{var f=uo(r);f&&(l=f,s=Tl)}else if(yh(r)){var c=ue({},l);c.colorStops=Ne(r.colorStops,function(d){return{offset:d.offset,color:uo(d.color)}}),n9(r)?s=Yg:i9(r)&&(s=jg),l=c}a===0?this.valType=s:(s!==this.valType||s===gw)&&(o=!0),this.discrete=this.discrete||o;var h={time:t,value:l,rawValue:r,percent:0};return n&&(h.easing=n,h.easingFunc=Ye(n)?n:ql[n]||B2(n)),i.push(h),h},e.prototype.prepare=function(t,r){var n=this.keyframes;this._needsSort&&n.sort(function(p,m){return p.time-m.time});for(var i=this.valType,a=n.length,o=n[a-1],s=this.discrete,l=Vf(i),u=mw(i),f=0;f=0&&!(o[f].percent<=r);f--);f=h(f,s-2)}else{for(f=c;fr);f++);f=h(f-1,s-2)}v=o[f+1],d=o[f]}if(d&&v){this._lastFr=f,this._lastFrP=r;var m=v.percent-d.percent,g=m===0?1:h((r-d.percent)/m,1);v.easingFunc&&(g=v.easingFunc(g));var y=n?this._additiveValue:u?al:t[l];if((Vf(a)||u)&&!y&&(y=this._additiveValue=[]),this.discrete)t[l]=g<1?d.rawValue:v.rawValue;else if(Vf(a))a===Vc?Mv(y,d[i],v[i],g):a9(y,d[i],v[i],g);else if(mw(a)){var _=d[i],b=v[i],x=a===Yg;t[l]={type:x?"linear":"radial",x:hi(_.x,b.x,g),y:hi(_.y,b.y,g),colorStops:Ne(_.colorStops,function(S,C){var M=b.colorStops[C];return{offset:hi(S.offset,M.offset,g),color:zc(Mv([],S.color,M.color,g))}}),global:b.global},x?(t[l].x2=hi(_.x2,b.x2,g),t[l].y2=hi(_.y2,b.y2,g)):t[l].r=hi(_.r,b.r,g)}else if(u)Mv(y,d[i],v[i],g),n||(t[l]=zc(y));else{var w=hi(d[i],v[i],g);n?this._additiveValue=w:t[l]=w}n&&this._addToTarget(t)}}},e.prototype._addToTarget=function(t){var r=this.valType,n=this.propName,i=this._additiveValue;r===zf?t[n]=t[n]+i:r===Tl?(uo(t[n],al),Hf(al,al,i,1),t[n]=zc(al)):r===Vc?Hf(t[n],t[n],i,1):r===H2&&pw(t[n],t[n],i,1)},e}(),l0=function(){function e(t,r,n,i){if(this._tracks={},this._trackKeys=[],this._maxTime=0,this._started=0,this._clip=null,this._target=t,this._loop=r,r&&i){r0("Can' use additive animation on looped animation.");return}this._additiveAnimators=i,this._allowDiscrete=n}return e.prototype.getMaxTime=function(){return this._maxTime},e.prototype.getDelay=function(){return this._delay},e.prototype.getLoop=function(){return this._loop},e.prototype.getTarget=function(){return this._target},e.prototype.changeTarget=function(t){this._target=t},e.prototype.when=function(t,r,n){return this.whenWithKeys(t,r,Ct(r),n)},e.prototype.whenWithKeys=function(t,r,n,i){for(var a=this._tracks,o=0;o0&&l.addKeyframe(0,Hc(u),i),this._trackKeys.push(s)}l.addKeyframe(t,Hc(r[s]),i)}return this._maxTime=Math.max(this._maxTime,t),this},e.prototype.pause=function(){this._clip.pause(),this._paused=!0},e.prototype.resume=function(){this._clip.resume(),this._paused=!1},e.prototype.isPaused=function(){return!!this._paused},e.prototype.duration=function(t){return this._maxTime=t,this._force=!0,this},e.prototype._doneCallback=function(){this._setTracksFinished(),this._clip=null;var t=this._doneCbs;if(t)for(var r=t.length,n=0;n0)){this._started=1;for(var r=this,n=[],i=this._maxTime||0,a=0;a1){var s=o.pop();a.addKeyframe(s.time,t[i]),a.prepare(this._maxTime,a.getAdditiveTrack())}}}},e}();function ns(){return new Date().getTime()}var f9=function(e){ge(t,e);function t(r){var n=e.call(this)||this;return n._running=!1,n._time=0,n._pausedTime=0,n._pauseStart=0,n._paused=!1,r=r||{},n.stage=r.stage||{},n}return t.prototype.addClip=function(r){r.animation&&this.removeClip(r),this._head?(this._tail.next=r,r.prev=this._tail,r.next=null,this._tail=r):this._head=this._tail=r,r.animation=this},t.prototype.addAnimator=function(r){r.animation=this;var n=r.getClip();n&&this.addClip(n)},t.prototype.removeClip=function(r){if(r.animation){var n=r.prev,i=r.next;n?n.next=i:this._head=i,i?i.prev=n:this._tail=n,r.next=r.prev=r.animation=null}},t.prototype.removeAnimator=function(r){var n=r.getClip();n&&this.removeClip(n),r.animation=null},t.prototype.update=function(r){for(var n=ns()-this._pausedTime,i=n-this._time,a=this._head;a;){var o=a.next,s=a.step(n,i);s&&(a.ondestroy(),this.removeClip(a)),a=o}this._time=n,r||(this.trigger("frame",i),this.stage.update&&this.stage.update())},t.prototype._startLoop=function(){var r=this;this._running=!0;function n(){r._running&&(Wg(n),!r._paused&&r.update())}Wg(n)},t.prototype.start=function(){this._running||(this._time=ns(),this._pausedTime=0,this._startLoop())},t.prototype.stop=function(){this._running=!1},t.prototype.pause=function(){this._paused||(this._pauseStart=ns(),this._paused=!0)},t.prototype.resume=function(){this._paused&&(this._pausedTime+=ns()-this._pauseStart,this._paused=!1)},t.prototype.clear=function(){for(var r=this._head;r;){var n=r.next;r.prev=r.next=r.animation=null,r=n}this._head=this._tail=null},t.prototype.isFinished=function(){return this._head==null},t.prototype.animate=function(r,n){n=n||{},this.start();var i=new l0(r,n.loop);return this.addAnimator(i),i},t}(ii),c9=300,Av=He.domSupported,Pv=function(){var e=["click","dblclick","mousewheel","wheel","mouseout","mouseup","mousedown","mousemove","contextmenu"],t=["touchstart","touchend","touchmove"],r={pointerdown:1,pointerup:1,pointermove:1,pointerout:1},n=Ne(e,function(i){var a=i.replace("mouse","pointer");return r.hasOwnProperty(a)?a:i});return{mouse:e,touch:t,pointer:n}}(),yw={mouse:["mousemove","mouseup"],pointer:["pointermove","pointerup"]},_w=!1;function qg(e){var t=e.pointerType;return t==="pen"||t==="touch"}function d9(e){e.touching=!0,e.touchTimer!=null&&(clearTimeout(e.touchTimer),e.touchTimer=null),e.touchTimer=setTimeout(function(){e.touching=!1,e.touchTimer=null},700)}function Ev(e){e&&(e.zrByTouch=!0)}function h9(e,t){return Qr(e.dom,new v9(e,t),!0)}function z2(e,t){for(var r=t,n=!1;r&&r.nodeType!==9&&!(n=r.domBelongToZr||r!==t&&r===e.painterRoot);)r=r.parentNode;return n}var v9=function(){function e(t,r){this.stopPropagation=Er,this.stopImmediatePropagation=Er,this.preventDefault=Er,this.type=r.type,this.target=this.currentTarget=t.dom,this.pointerType=r.pointerType,this.clientX=r.clientX,this.clientY=r.clientY}return e}(),yn={mousedown:function(e){e=Qr(this.dom,e),this.__mayPointerCapture=[e.zrX,e.zrY],this.trigger("mousedown",e)},mousemove:function(e){e=Qr(this.dom,e);var t=this.__mayPointerCapture;t&&(e.zrX!==t[0]||e.zrY!==t[1])&&this.__togglePointerCapture(!0),this.trigger("mousemove",e)},mouseup:function(e){e=Qr(this.dom,e),this.__togglePointerCapture(!1),this.trigger("mouseup",e)},mouseout:function(e){e=Qr(this.dom,e);var t=e.toElement||e.relatedTarget;z2(this,t)||(this.__pointerCapturing&&(e.zrEventControl="no_globalout"),this.trigger("mouseout",e))},wheel:function(e){_w=!0,e=Qr(this.dom,e),this.trigger("mousewheel",e)},mousewheel:function(e){_w||(e=Qr(this.dom,e),this.trigger("mousewheel",e))},touchstart:function(e){e=Qr(this.dom,e),Ev(e),this.__lastTouchMoment=new Date,this.handler.processGesture(e,"start"),yn.mousemove.call(this,e),yn.mousedown.call(this,e)},touchmove:function(e){e=Qr(this.dom,e),Ev(e),this.handler.processGesture(e,"change"),yn.mousemove.call(this,e)},touchend:function(e){e=Qr(this.dom,e),Ev(e),this.handler.processGesture(e,"end"),yn.mouseup.call(this,e),+new Date-+this.__lastTouchMomentSw||e<-Sw}var Ma=[],Fo=[],Dv=Pu(),Iv=Math.abs,wh=function(){function e(){}return e.prototype.getLocalTransform=function(t){return e.getLocalTransform(this,t)},e.prototype.setPosition=function(t){this.x=t[0],this.y=t[1]},e.prototype.setScale=function(t){this.scaleX=t[0],this.scaleY=t[1]},e.prototype.setSkew=function(t){this.skewX=t[0],this.skewY=t[1]},e.prototype.setOrigin=function(t){this.originX=t[0],this.originY=t[1]},e.prototype.needLocalTransform=function(){return Ta(this.rotation)||Ta(this.x)||Ta(this.y)||Ta(this.scaleX-1)||Ta(this.scaleY-1)||Ta(this.skewX)||Ta(this.skewY)},e.prototype.updateTransform=function(){var t=this.parent&&this.parent.transform,r=this.needLocalTransform(),n=this.transform;if(!(r||t)){n&&(ww(n),this.invTransform=null);return}n=n||Pu(),r?this.getLocalTransform(n):ww(n),t&&(r?fs(n,t,n):BU(n,t)),this.transform=n,this._resolveGlobalScaleRatio(n)},e.prototype._resolveGlobalScaleRatio=function(t){var r=this.globalScaleRatio;if(r!=null&&r!==1){this.getGlobalScale(Ma);var n=Ma[0]<0?-1:1,i=Ma[1]<0?-1:1,a=((Ma[0]-n)*r+n)/Ma[0]||0,o=((Ma[1]-i)*r+i)/Ma[1]||0;t[0]*=a,t[1]*=a,t[2]*=o,t[3]*=o}this.invTransform=this.invTransform||Pu(),bh(this.invTransform,t)},e.prototype.getComputedTransform=function(){for(var t=this,r=[];t;)r.push(t),t=t.parent;for(;t=r.pop();)t.updateTransform();return this.transform},e.prototype.setLocalTransform=function(t){if(t){var r=t[0]*t[0]+t[1]*t[1],n=t[2]*t[2]+t[3]*t[3],i=Math.atan2(t[1],t[0]),a=Math.PI/2+i-Math.atan2(t[3],t[2]);n=Math.sqrt(n)*Math.cos(a),r=Math.sqrt(r),this.skewX=a,this.skewY=0,this.rotation=-i,this.x=+t[4],this.y=+t[5],this.scaleX=r,this.scaleY=n,this.originX=0,this.originY=0}},e.prototype.decomposeTransform=function(){if(this.transform){var t=this.parent,r=this.transform;t&&t.transform&&(fs(Fo,t.invTransform,r),r=Fo);var n=this.originX,i=this.originY;(n||i)&&(Dv[4]=n,Dv[5]=i,fs(Fo,r,Dv),Fo[4]-=n,Fo[5]-=i,r=Fo),this.setLocalTransform(r)}},e.prototype.getGlobalScale=function(t){var r=this.transform;return t=t||[],r?(t[0]=Math.sqrt(r[0]*r[0]+r[1]*r[1]),t[1]=Math.sqrt(r[2]*r[2]+r[3]*r[3]),r[0]<0&&(t[0]=-t[0]),r[3]<0&&(t[1]=-t[1]),t):(t[0]=1,t[1]=1,t)},e.prototype.transformCoordToLocal=function(t,r){var n=[t,r],i=this.invTransform;return i&&un(n,n,i),n},e.prototype.transformCoordToGlobal=function(t,r){var n=[t,r],i=this.transform;return i&&un(n,n,i),n},e.prototype.getLineScale=function(){var t=this.transform;return t&&Iv(t[0]-1)>1e-10&&Iv(t[3]-1)>1e-10?Math.sqrt(Iv(t[0]*t[3]-t[2]*t[1])):1},e.prototype.copyTransform=function(t){b9(this,t)},e.getLocalTransform=function(t,r){r=r||[];var n=t.originX||0,i=t.originY||0,a=t.scaleX,o=t.scaleY,s=t.anchorX,l=t.anchorY,u=t.rotation||0,f=t.x,c=t.y,h=t.skewX?Math.tan(t.skewX):0,d=t.skewY?Math.tan(-t.skewY):0;if(n||i||s||l){var v=n+s,p=i+l;r[4]=-v*a-h*p*o,r[5]=-p*o-d*v*a}else r[4]=r[5]=0;return r[0]=a,r[3]=o,r[1]=d*a,r[2]=h*o,u&&o0(r,r,u),r[4]+=n+f,r[5]+=i+c,r},e.initDefaultProps=function(){var t=e.prototype;t.scaleX=t.scaleY=t.globalScaleRatio=1,t.x=t.y=t.originX=t.originY=t.skewX=t.skewY=t.rotation=t.anchorX=t.anchorY=0}(),e}(),Eu=["x","y","originX","originY","anchorX","anchorY","rotation","scaleX","scaleY","skewX","skewY"];function b9(e,t){for(var r=0;r=0?parseFloat(e)/100*t:parseFloat(e):e}function Md(e,t,r){var n=t.position||"inside",i=t.distance!=null?t.distance:5,a=r.height,o=r.width,s=a/2,l=r.x,u=r.y,f="left",c="top";if(n instanceof Array)l+=da(n[0],r.width),u+=da(n[1],r.height),f=null,c=null;else switch(n){case"left":l-=i,u+=s,f="right",c="middle";break;case"right":l+=i+o,u+=s,c="middle";break;case"top":l+=o/2,u-=i,f="center",c="bottom";break;case"bottom":l+=o/2,u+=a+i,f="center";break;case"inside":l+=o/2,u+=s,f="center",c="middle";break;case"insideLeft":l+=i,u+=s,c="middle";break;case"insideRight":l+=o-i,u+=s,f="right",c="middle";break;case"insideTop":l+=o/2,u+=i,f="center";break;case"insideBottom":l+=o/2,u+=a-i,f="center",c="bottom";break;case"insideTopLeft":l+=i,u+=i;break;case"insideTopRight":l+=o-i,u+=i,f="right";break;case"insideBottomLeft":l+=i,u+=a-i,c="bottom";break;case"insideBottomRight":l+=o-i,u+=a-i,f="right",c="bottom";break}return e=e||{},e.x=l,e.y=u,e.align=f,e.verticalAlign=c,e}var Ov="__zr_normal__",Rv=Eu.concat(["ignore"]),w9=ca(Eu,function(e,t){return e[t]=!0,e},{ignore:!1}),$o={},S9=new nt(0,0,0,0),c0=function(){function e(t){this.id=y2(),this.animators=[],this.currentStates=[],this.states={},this._init(t)}return e.prototype._init=function(t){this.attr(t)},e.prototype.drift=function(t,r,n){switch(this.draggable){case"horizontal":r=0;break;case"vertical":t=0;break}var i=this.transform;i||(i=this.transform=[1,0,0,1,0,0]),i[4]+=t,i[5]+=r,this.decomposeTransform(),this.markRedraw()},e.prototype.beforeUpdate=function(){},e.prototype.afterUpdate=function(){},e.prototype.update=function(){this.updateTransform(),this.__dirty&&this.updateInnerText()},e.prototype.updateInnerText=function(t){var r=this._textContent;if(r&&(!r.ignore||t)){this.textConfig||(this.textConfig={});var n=this.textConfig,i=n.local,a=r.innerTransformable,o=void 0,s=void 0,l=!1;a.parent=i?this:null;var u=!1;if(a.copyTransform(r),n.position!=null){var f=S9;n.layoutRect?f.copy(n.layoutRect):f.copy(this.getBoundingRect()),i||f.applyTransform(this.transform),this.calculateTextPosition?this.calculateTextPosition($o,n,f):Md($o,n,f),a.x=$o.x,a.y=$o.y,o=$o.align,s=$o.verticalAlign;var c=n.origin;if(c&&n.rotation!=null){var h=void 0,d=void 0;c==="center"?(h=f.width*.5,d=f.height*.5):(h=da(c[0],f.width),d=da(c[1],f.height)),u=!0,a.originX=-a.x+h+(i?0:f.x),a.originY=-a.y+d+(i?0:f.y)}}n.rotation!=null&&(a.rotation=n.rotation);var v=n.offset;v&&(a.x+=v[0],a.y+=v[1],u||(a.originX=-v[0],a.originY=-v[1]));var p=n.inside==null?typeof n.position=="string"&&n.position.indexOf("inside")>=0:n.inside,m=this._innerTextDefaultStyle||(this._innerTextDefaultStyle={}),g=void 0,y=void 0,_=void 0;p&&this.canBeInsideText()?(g=n.insideFill,y=n.insideStroke,(g==null||g==="auto")&&(g=this.getInsideTextFill()),(y==null||y==="auto")&&(y=this.getInsideTextStroke(g),_=!0)):(g=n.outsideFill,y=n.outsideStroke,(g==null||g==="auto")&&(g=this.getOutsideFill()),(y==null||y==="auto")&&(y=this.getOutsideStroke(g),_=!0)),g=g||"#000",(g!==m.fill||y!==m.stroke||_!==m.autoStroke||o!==m.align||s!==m.verticalAlign)&&(l=!0,m.fill=g,m.stroke=y,m.autoStroke=_,m.align=o,m.verticalAlign=s,r.setDefaultTextStyle(m)),r.__dirty|=Br,l&&r.dirtyStyle(!0)}},e.prototype.canBeInsideText=function(){return!0},e.prototype.getInsideTextFill=function(){return"#fff"},e.prototype.getInsideTextStroke=function(t){return"#000"},e.prototype.getOutsideFill=function(){return this.__zr&&this.__zr.isDarkMode()?Qg:Zg},e.prototype.getOutsideStroke=function(t){var r=this.__zr&&this.__zr.getBackgroundColor(),n=typeof r=="string"&&uo(r);n||(n=[255,255,255,1]);for(var i=n[3],a=this.__zr.isDarkMode(),o=0;o<3;o++)n[o]=n[o]*i+(a?0:255)*(1-i);return n[3]=1,s0(n,"rgba")},e.prototype.traverse=function(t,r){},e.prototype.attrKV=function(t,r){t==="textConfig"?this.setTextConfig(r):t==="textContent"?this.setTextContent(r):t==="clipPath"?this.setClipPath(r):t==="extra"?(this.extra=this.extra||{},ue(this.extra,r)):this[t]=r},e.prototype.hide=function(){this.ignore=!0,this.markRedraw()},e.prototype.show=function(){this.ignore=!1,this.markRedraw()},e.prototype.attr=function(t,r){if(typeof t=="string")this.attrKV(t,r);else if(Re(t))for(var n=t,i=Ct(n),a=0;a0},e.prototype.getState=function(t){return this.states[t]},e.prototype.ensureState=function(t){var r=this.states;return r[t]||(r[t]={}),r[t]},e.prototype.clearStates=function(t){this.useState(Ov,!1,t)},e.prototype.useState=function(t,r,n,i){var a=t===Ov,o=this.hasState();if(!(!o&&a)){var s=this.currentStates,l=this.stateTransition;if(!(ot(s,t)>=0&&(r||s.length===1))){var u;if(this.stateProxy&&!a&&(u=this.stateProxy(t)),u||(u=this.states&&this.states[t]),!u&&!a){r0("State "+t+" not exists.");return}a||this.saveCurrentToNormalState(u);var f=!!(u&&u.hoverLayer||i);f&&this._toggleHoverLayerFlag(!0),this._applyStateObj(t,u,this._normalState,r,!n&&!this.__inHover&&l&&l.duration>0,l);var c=this._textContent,h=this._textGuide;return c&&c.useState(t,r,n,f),h&&h.useState(t,r,n,f),a?(this.currentStates=[],this._normalState={}):r?this.currentStates.push(t):this.currentStates=[t],this._updateAnimationTargets(),this.markRedraw(),!f&&this.__inHover&&(this._toggleHoverLayerFlag(!1),this.__dirty&=~Br),u}}},e.prototype.useStates=function(t,r,n){if(!t.length)this.clearStates();else{var i=[],a=this.currentStates,o=t.length,s=o===a.length;if(s){for(var l=0;l0,v);var p=this._textContent,m=this._textGuide;p&&p.useStates(t,r,h),m&&m.useStates(t,r,h),this._updateAnimationTargets(),this.currentStates=t.slice(),this.markRedraw(),!h&&this.__inHover&&(this._toggleHoverLayerFlag(!1),this.__dirty&=~Br)}},e.prototype._updateAnimationTargets=function(){for(var t=0;t=0){var n=this.currentStates.slice();n.splice(r,1),this.useStates(n)}},e.prototype.replaceState=function(t,r,n){var i=this.currentStates.slice(),a=ot(i,t),o=ot(i,r)>=0;a>=0?o?i.splice(a,1):i[a]=r:n&&!o&&i.push(r),this.useStates(i)},e.prototype.toggleState=function(t,r){r?this.useState(t,!0):this.removeState(t)},e.prototype._mergeStates=function(t){for(var r={},n,i=0;i=0&&a.splice(o,1)}),this.animators.push(t),n&&n.animation.addAnimator(t),n&&n.wakeUp()},e.prototype.updateDuringAnimation=function(t){this.markRedraw()},e.prototype.stopAnimation=function(t,r){for(var n=this.animators,i=n.length,a=[],o=0;o0&&r.during&&a[0].during(function(v,p){r.during(p)});for(var h=0;h0||i.force&&!o.length){var C=void 0,M=void 0,A=void 0;if(s){M={},h&&(C={});for(var b=0;b<_;b++){var g=p[b];M[g]=r[g],h?C[g]=n[g]:r[g]=n[g]}}else if(h){A={};for(var b=0;b<_;b++){var g=p[b];A[g]=Hc(r[g]),C9(r,n,g)}}var x=new l0(r,!1,!1,c?jt(v,function(E){return E.targetName===t}):null);x.targetName=t,i.scope&&(x.scope=i.scope),h&&C&&x.whenWithKeys(0,C,p),A&&x.whenWithKeys(0,A,p),x.whenWithKeys(u??500,s?M:n,p).delay(f||0),e.addAnimator(x,t),o.push(x)}}const G2=c0;var Ur=function(e){ge(t,e);function t(r){var n=e.call(this)||this;return n.isGroup=!0,n._children=[],n.attr(r),n}return t.prototype.childrenRef=function(){return this._children},t.prototype.children=function(){return this._children.slice()},t.prototype.childAt=function(r){return this._children[r]},t.prototype.childOfName=function(r){for(var n=this._children,i=0;i=0&&(i.splice(a,0,r),this._doAdd(r))}return this},t.prototype.replace=function(r,n){var i=ot(this._children,r);return i>=0&&this.replaceAt(n,i),this},t.prototype.replaceAt=function(r,n){var i=this._children,a=i[n];if(r&&r!==this&&r.parent!==this&&r!==a){i[n]=r,a.parent=null;var o=this.__zr;o&&a.removeSelfFromZr(o),this._doAdd(r)}return this},t.prototype._doAdd=function(r){r.parent&&r.parent.remove(r),r.parent=this;var n=this.__zr;n&&n!==r.__zr&&r.addSelfToZr(n),n&&n.refresh()},t.prototype.remove=function(r){var n=this.__zr,i=this._children,a=ot(i,r);return a<0?this:(i.splice(a,1),r.parent=null,n&&r.removeSelfFromZr(n),n&&n.refresh(),this)},t.prototype.removeAll=function(){for(var r=this._children,n=this.__zr,i=0;i0&&(this._stillFrameAccum++,this._stillFrameAccum>this._sleepAfterStill&&this.animation.stop())},e.prototype.setSleepAfterStill=function(t){this._sleepAfterStill=t},e.prototype.wakeUp=function(){this.animation.start(),this._stillFrameAccum=0},e.prototype.refreshHover=function(){this._needsRefreshHover=!0},e.prototype.refreshHoverImmediately=function(){this._needsRefreshHover=!1,this.painter.refreshHover&&this.painter.getType()==="canvas"&&this.painter.refreshHover()},e.prototype.resize=function(t){t=t||{},this.painter.resize(t.width,t.height),this.handler.resize()},e.prototype.clearAnimation=function(){this.animation.clear()},e.prototype.getWidth=function(){return this.painter.getWidth()},e.prototype.getHeight=function(){return this.painter.getHeight()},e.prototype.setCursorStyle=function(t){this.handler.setCursorStyle(t)},e.prototype.findHover=function(t,r){return this.handler.findHover(t,r)},e.prototype.on=function(t,r,n){return this.handler.on(t,r,n),this},e.prototype.off=function(t,r){this.handler.off(t,r)},e.prototype.trigger=function(t,r){this.handler.trigger(t,r)},e.prototype.clear=function(){for(var t=this.storage.getRoots(),r=0;r0){if(e<=i)return o;if(e>=a)return s}else{if(e>=i)return o;if(e<=a)return s}else{if(e===i)return o;if(e===a)return s}return(e-i)/l*u+o}function yt(e,t){switch(e){case"center":case"middle":e="50%";break;case"left":case"top":e="0%";break;case"right":case"bottom":e="100%";break}return Ee(e)?D9(e).match(/%$/)?parseFloat(e)/100*t:parseFloat(e):e==null?NaN:+e}function Ft(e,t,r){return t==null&&(t=10),t=Math.min(Math.max(0,t),Y2),e=(+e).toFixed(t),r?e:+e}function vi(e){if(e=+e,isNaN(e))return 0;if(e>1e-14){for(var t=1,r=0;r<15;r++,t*=10)if(Math.round(e*t)/t===e)return r}return I9(e)}function I9(e){var t=e.toString().toLowerCase(),r=t.indexOf("e"),n=r>0?+t.slice(r+1):0,i=r>0?r:t.length,a=t.indexOf("."),o=a<0?0:i-1-a;return Math.max(0,o-n)}function O9(e,t){var r=Math.log,n=Math.LN10,i=Math.floor(r(e[1]-e[0])/n),a=Math.round(r(Math.abs(t[1]-t[0]))/n),o=Math.min(Math.max(-i+a,0),20);return isFinite(o)?o:20}function R9(e,t){var r=ca(e,function(d,v){return d+(isNaN(v)?0:v)},0);if(r===0)return[];for(var n=Math.pow(10,t),i=Ne(e,function(d){return(isNaN(d)?0:d)/r*n*100}),a=n*100,o=Ne(i,function(d){return Math.floor(d)}),s=ca(o,function(d,v){return d+v},0),l=Ne(i,function(d,v){return d-o[v]});su&&(u=l[c],f=c);++o[f],l[f]=0,++s}return Ne(o,function(d){return d/n})}function k9(e,t){var r=Math.max(vi(e),vi(t)),n=e+t;return r>Y2?n:Ft(n,r)}function j2(e){var t=Math.PI*2;return(e%t+t)%t}function Ad(e){return e>-Mw&&e=10&&t++,t}function q2(e,t){var r=d0(e),n=Math.pow(10,r),i=e/n,a;return t?i<1.5?a=1:i<2.5?a=2:i<4?a=3:i<7?a=5:a=10:i<1?a=1:i<2?a=2:i<3?a=3:i<5?a=5:a=10,e=a*n,r>=-20?+e.toFixed(r<0?-r:0):e}function Pd(e){var t=parseFloat(e);return t==e&&(t!==0||!Ee(e)||e.indexOf("x")<=0)?t:NaN}function F9(e){return!isNaN(Pd(e))}function K2(){return Math.round(Math.random()*9)}function X2(e,t){return t===0?e:X2(t,e%t)}function Aw(e,t){return e==null?t:t==null?e:e*t/X2(e,t)}function Cr(e){throw new Error(e)}function Pw(e,t,r){return(t-e)*r+e}var Z2="series\0",$9="\0_ec_\0";function pr(e){return e instanceof Array?e:e==null?[]:[e]}function em(e,t,r){if(e){e[t]=e[t]||{},e.emphasis=e.emphasis||{},e.emphasis[t]=e.emphasis[t]||{};for(var n=0,i=r.length;n=0||a&&ot(a,l)<0)){var u=n.getShallow(l,t);u!=null&&(o[e[s][0]]=u)}}return o}}var l7=[["fill","color"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["opacity"],["shadowColor"]],u7=Du(l7),f7=function(){function e(){}return e.prototype.getAreaStyle=function(t,r){return u7(this,t,r)},e}(),tm=new af(50);function c7(e){if(typeof e=="string"){var t=tm.get(e);return t&&t.image}else return e}function rP(e,t,r,n,i){if(e)if(typeof e=="string"){if(t&&t.__zrImageSrc===e||!r)return t;var a=tm.get(e),o={hostEl:r,cb:n,cbPayload:i};return a?(t=a.image,!xh(t)&&a.pending.push(o)):(t=Vs.loadImage(e,Lw,Lw),t.__zrImageSrc=e,tm.put(e,t.__cachedImgObj={image:t,pending:[o]})),t}else return e;else return t}function Lw(){var e=this.__cachedImgObj;this.onload=this.onerror=this.__cachedImgObj=null;for(var t=0;t0&&(this._stillFrameAccum++,this._stillFrameAccum>this._sleepAfterStill&&this.animation.stop())},e.prototype.setSleepAfterStill=function(t){this._sleepAfterStill=t},e.prototype.wakeUp=function(){this.animation.start(),this._stillFrameAccum=0},e.prototype.refreshHover=function(){this._needsRefreshHover=!0},e.prototype.refreshHoverImmediately=function(){this._needsRefreshHover=!1,this.painter.refreshHover&&this.painter.getType()==="canvas"&&this.painter.refreshHover()},e.prototype.resize=function(t){t=t||{},this.painter.resize(t.width,t.height),this.handler.resize()},e.prototype.clearAnimation=function(){this.animation.clear()},e.prototype.getWidth=function(){return this.painter.getWidth()},e.prototype.getHeight=function(){return this.painter.getHeight()},e.prototype.setCursorStyle=function(t){this.handler.setCursorStyle(t)},e.prototype.findHover=function(t,r){return this.handler.findHover(t,r)},e.prototype.on=function(t,r,n){return this.handler.on(t,r,n),this},e.prototype.off=function(t,r){this.handler.off(t,r)},e.prototype.trigger=function(t,r){this.handler.trigger(t,r)},e.prototype.clear=function(){for(var t=this.storage.getRoots(),r=0;r0){if(e<=i)return o;if(e>=a)return s}else{if(e>=i)return o;if(e<=a)return s}else{if(e===i)return o;if(e===a)return s}return(e-i)/l*u+o}function yt(e,t){switch(e){case"center":case"middle":e="50%";break;case"left":case"top":e="0%";break;case"right":case"bottom":e="100%";break}return Ee(e)?D9(e).match(/%$/)?parseFloat(e)/100*t:parseFloat(e):e==null?NaN:+e}function $t(e,t,r){return t==null&&(t=10),t=Math.min(Math.max(0,t),Y2),e=(+e).toFixed(t),r?e:+e}function vi(e){if(e=+e,isNaN(e))return 0;if(e>1e-14){for(var t=1,r=0;r<15;r++,t*=10)if(Math.round(e*t)/t===e)return r}return I9(e)}function I9(e){var t=e.toString().toLowerCase(),r=t.indexOf("e"),n=r>0?+t.slice(r+1):0,i=r>0?r:t.length,a=t.indexOf("."),o=a<0?0:i-1-a;return Math.max(0,o-n)}function O9(e,t){var r=Math.log,n=Math.LN10,i=Math.floor(r(e[1]-e[0])/n),a=Math.round(r(Math.abs(t[1]-t[0]))/n),o=Math.min(Math.max(-i+a,0),20);return isFinite(o)?o:20}function R9(e,t){var r=ca(e,function(d,v){return d+(isNaN(v)?0:v)},0);if(r===0)return[];for(var n=Math.pow(10,t),i=Ne(e,function(d){return(isNaN(d)?0:d)/r*n*100}),a=n*100,o=Ne(i,function(d){return Math.floor(d)}),s=ca(o,function(d,v){return d+v},0),l=Ne(i,function(d,v){return d-o[v]});su&&(u=l[c],f=c);++o[f],l[f]=0,++s}return Ne(o,function(d){return d/n})}function k9(e,t){var r=Math.max(vi(e),vi(t)),n=e+t;return r>Y2?n:$t(n,r)}function j2(e){var t=Math.PI*2;return(e%t+t)%t}function Ad(e){return e>-Mw&&e=10&&t++,t}function q2(e,t){var r=d0(e),n=Math.pow(10,r),i=e/n,a;return t?i<1.5?a=1:i<2.5?a=2:i<4?a=3:i<7?a=5:a=10:i<1?a=1:i<2?a=2:i<3?a=3:i<5?a=5:a=10,e=a*n,r>=-20?+e.toFixed(r<0?-r:0):e}function Pd(e){var t=parseFloat(e);return t==e&&(t!==0||!Ee(e)||e.indexOf("x")<=0)?t:NaN}function F9(e){return!isNaN(Pd(e))}function K2(){return Math.round(Math.random()*9)}function X2(e,t){return t===0?e:X2(t,e%t)}function Aw(e,t){return e==null?t:t==null?e:e*t/X2(e,t)}function Cr(e){throw new Error(e)}function Pw(e,t,r){return(t-e)*r+e}var Z2="series\0",$9="\0_ec_\0";function pr(e){return e instanceof Array?e:e==null?[]:[e]}function em(e,t,r){if(e){e[t]=e[t]||{},e.emphasis=e.emphasis||{},e.emphasis[t]=e.emphasis[t]||{};for(var n=0,i=r.length;n=0||a&&ot(a,l)<0)){var u=n.getShallow(l,t);u!=null&&(o[e[s][0]]=u)}}return o}}var l7=[["fill","color"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["opacity"],["shadowColor"]],u7=Du(l7),f7=function(){function e(){}return e.prototype.getAreaStyle=function(t,r){return u7(this,t,r)},e}(),tm=new af(50);function c7(e){if(typeof e=="string"){var t=tm.get(e);return t&&t.image}else return e}function rP(e,t,r,n,i){if(e)if(typeof e=="string"){if(t&&t.__zrImageSrc===e||!r)return t;var a=tm.get(e),o={hostEl:r,cb:n,cbPayload:i};return a?(t=a.image,!xh(t)&&a.pending.push(o)):(t=Gs.loadImage(e,Lw,Lw),t.__zrImageSrc=e,tm.put(e,t.__cachedImgObj={image:t,pending:[o]})),t}else return e;else return t}function Lw(){var e=this.__cachedImgObj;this.onload=this.onerror=this.__cachedImgObj=null;for(var t=0;t=o;l++)s-=o;var u=Vr(r,t);return u>s&&(r="",u=0),s=e-u,i.ellipsis=r,i.ellipsisWidth=u,i.contentWidth=s,i.containerWidth=e,i}function iP(e,t){var r=t.containerWidth,n=t.font,i=t.contentWidth;if(!r)return"";var a=Vr(e,n);if(a<=r)return e;for(var o=0;;o++){if(a<=i||o>=t.maxIterations){e+=t.ellipsis;break}var s=o===0?h7(e,i,t.ascCharWidth,t.cnCharWidth):a>0?Math.floor(e.length*i/a):0;e=e.substr(0,s),a=Vr(e,n)}return e===""&&(e=t.placeholder),e}function h7(e,t,r,n){for(var i=0,a=0,o=e.length;ad&&u){var v=Math.floor(d/s);c=c.slice(0,v)}if(e&&a&&f!=null)for(var p=nP(f,i,t.ellipsis,{minChar:t.truncateMinChar,placeholder:t.placeholder}),m=0;ms&&$v(r,e.substring(s,u),t,o),$v(r,l[2],t,o,l[1]),s=Fv.lastIndex}si){x>0?(y.tokens=y.tokens.slice(0,x),m(y,b,_),r.lines=r.lines.slice(0,g+1)):r.lines=r.lines.slice(0,g);break e}var E=S.width,L=E==null||E==="auto";if(typeof E=="string"&&E.charAt(E.length-1)==="%")w.percentWidth=E,f.push(w),w.contentWidth=Vr(w.text,A);else{if(L){var O=S.backgroundColor,N=O&&O.image;N&&(N=c7(N),xh(N)&&(w.width=Math.max(w.width,N.width*P/N.height)))}var H=v&&n!=null?n-b:null;H!=null&&H0&&v+n.accumWidth>n.width&&(f=t.split(` `),u=!0),n.accumWidth=v}else{var p=aP(t,l,n.width,n.breakAll,n.accumWidth);n.accumWidth=p.accumWidth+d,c=p.linesWidths,f=p.lines}}else f=t.split(` `);for(var m=0;m=32&&t<=591||t>=880&&t<=4351||t>=4608&&t<=5119||t>=7680&&t<=8303}var _7=ca(",&?/;] ".split(""),function(e,t){return e[t]=!0,e},{});function b7(e){return y7(e)?!!_7[e]:!0}function aP(e,t,r,n,i){for(var a=[],o=[],s="",l="",u=0,f=0,c=0;cr:i+f+d>r){f?(s||l)&&(v?(s||(s=l,l="",u=0,f=u),a.push(s),o.push(f-u),l+=h,u+=d,s="",f=u):(l&&(s+=l,l="",u=0),a.push(s),o.push(f),s=h,f=d)):v?(a.push(l),o.push(u),l=h,u=d):(a.push(h),o.push(d));continue}f+=d,v?(l+=h,u+=d):(l&&(s+=l,l="",u=0),s+=h)}return!a.length&&!s&&(s=e,l="",u=0),l&&(s+=l),s&&(a.push(s),o.push(f)),a.length===1&&(f+=i),{accumWidth:f,lines:a,linesWidths:o}}var rm="__zr_style_"+Math.round(Math.random()*10),fo={shadowBlur:0,shadowOffsetX:0,shadowOffsetY:0,shadowColor:"#000",opacity:1,blend:"source-over"},Ch={style:{shadowBlur:!0,shadowOffsetX:!0,shadowOffsetY:!0,shadowColor:!0,opacity:!0}};fo[rm]=!0;var Iw=["z","z2","invisible"],w7=["invisible"],S7=function(e){ge(t,e);function t(r){return e.call(this,r)||this}return t.prototype._init=function(r){for(var n=Ct(r),i=0;i1e-4){s[0]=e-r,s[1]=t-n,l[0]=e+r,l[1]=t+n;return}if(Wf[0]=Wv(i)*r+e,Wf[1]=Vv(i)*n+t,Gf[0]=Wv(a)*r+e,Gf[1]=Vv(a)*n+t,u(s,Wf,Gf),f(l,Wf,Gf),i=i%Pa,i<0&&(i=i+Pa),a=a%Pa,a<0&&(a=a+Pa),i>a&&!o?a+=Pa:ii&&(Uf[0]=Wv(d)*r+e,Uf[1]=Vv(d)*n+t,u(s,Uf,s),f(l,Uf,l))}var at={M:1,L:2,C:3,Q:4,A:5,Z:6,R:7},Ea=[],La=[],Nn=[],ki=[],Bn=[],Fn=[],Gv=Math.min,Uv=Math.max,Da=Math.cos,Ia=Math.sin,ui=Math.abs,nm=Math.PI,Gi=nm*2,Yv=typeof Float32Array<"u",ol=[];function jv(e){var t=Math.round(e/nm*1e8)/1e8;return t%2*nm}function A7(e,t){var r=jv(e[0]);r<0&&(r+=Gi);var n=r-e[0],i=e[1];i+=n,!t&&i-r>=Gi?i=r+Gi:t&&r-i>=Gi?i=r-Gi:!t&&r>i?i=r+(Gi-jv(r-i)):t&&r0&&(this._ux=ui(n/Td/t)||0,this._uy=ui(n/Td/r)||0)},e.prototype.setDPR=function(t){this.dpr=t},e.prototype.setContext=function(t){this._ctx=t},e.prototype.getContext=function(){return this._ctx},e.prototype.beginPath=function(){return this._ctx&&this._ctx.beginPath(),this.reset(),this},e.prototype.reset=function(){this._saveData&&(this._len=0),this._pathSegLen&&(this._pathSegLen=null,this._pathLen=0),this._version++},e.prototype.moveTo=function(t,r){return this._drawPendingPt(),this.addData(at.M,t,r),this._ctx&&this._ctx.moveTo(t,r),this._x0=t,this._y0=r,this._xi=t,this._yi=r,this},e.prototype.lineTo=function(t,r){var n=ui(t-this._xi),i=ui(r-this._yi),a=n>this._ux||i>this._uy;if(this.addData(at.L,t,r),this._ctx&&a&&this._ctx.lineTo(t,r),a)this._xi=t,this._yi=r,this._pendingPtDist=0;else{var o=n*n+i*i;o>this._pendingPtDist&&(this._pendingPtX=t,this._pendingPtY=r,this._pendingPtDist=o)}return this},e.prototype.bezierCurveTo=function(t,r,n,i,a,o){return this._drawPendingPt(),this.addData(at.C,t,r,n,i,a,o),this._ctx&&this._ctx.bezierCurveTo(t,r,n,i,a,o),this._xi=a,this._yi=o,this},e.prototype.quadraticCurveTo=function(t,r,n,i){return this._drawPendingPt(),this.addData(at.Q,t,r,n,i),this._ctx&&this._ctx.quadraticCurveTo(t,r,n,i),this._xi=n,this._yi=i,this},e.prototype.arc=function(t,r,n,i,a,o){this._drawPendingPt(),ol[0]=i,ol[1]=a,A7(ol,o),i=ol[0],a=ol[1];var s=a-i;return this.addData(at.A,t,r,n,n,i,s,0,o?0:1),this._ctx&&this._ctx.arc(t,r,n,i,a,o),this._xi=Da(a)*n+t,this._yi=Ia(a)*n+r,this},e.prototype.arcTo=function(t,r,n,i,a){return this._drawPendingPt(),this._ctx&&this._ctx.arcTo(t,r,n,i,a),this},e.prototype.rect=function(t,r,n,i){return this._drawPendingPt(),this._ctx&&this._ctx.rect(t,r,n,i),this.addData(at.R,t,r,n,i),this},e.prototype.closePath=function(){this._drawPendingPt(),this.addData(at.Z);var t=this._ctx,r=this._x0,n=this._y0;return t&&t.closePath(),this._xi=r,this._yi=n,this},e.prototype.fill=function(t){t&&t.fill(),this.toStatic()},e.prototype.stroke=function(t){t&&t.stroke(),this.toStatic()},e.prototype.len=function(){return this._len},e.prototype.setData=function(t){var r=t.length;!(this.data&&this.data.length===r)&&Yv&&(this.data=new Float32Array(r));for(var n=0;nf.length&&(this._expandData(),f=this.data);for(var c=0;c0&&(this._ctx&&this._ctx.lineTo(this._pendingPtX,this._pendingPtY),this._pendingPtDist=0)},e.prototype._expandData=function(){if(!(this.data instanceof Array)){for(var t=[],r=0;r11&&(this.data=new Float32Array(t)))}},e.prototype.getBoundingRect=function(){Nn[0]=Nn[1]=Bn[0]=Bn[1]=Number.MAX_VALUE,ki[0]=ki[1]=Fn[0]=Fn[1]=-Number.MAX_VALUE;var t=this.data,r=0,n=0,i=0,a=0,o;for(o=0;on||ui(_)>i||h===r-1)&&(p=Math.sqrt(y*y+_*_),a=m,o=g);break}case at.C:{var b=t[h++],x=t[h++],m=t[h++],g=t[h++],w=t[h++],S=t[h++];p=XU(a,o,b,x,m,g,w,S,10),a=w,o=S;break}case at.Q:{var b=t[h++],x=t[h++],m=t[h++],g=t[h++];p=QU(a,o,b,x,m,g,10),a=m,o=g;break}case at.A:var C=t[h++],M=t[h++],A=t[h++],P=t[h++],E=t[h++],L=t[h++],O=L+E;h+=1,t[h++],v&&(s=Da(E)*A+C,l=Ia(E)*P+M),p=Uv(A,P)*Gv(Gi,Math.abs(L)),a=Da(O)*A+C,o=Ia(O)*P+M;break;case at.R:{s=a=t[h++],l=o=t[h++];var N=t[h++],H=t[h++];p=N*2+H*2;break}case at.Z:{var y=s-a,_=l-o;p=Math.sqrt(y*y+_*_),a=s,o=l;break}}p>=0&&(u[c++]=p,f+=p)}return this._pathLen=f,f},e.prototype.rebuildPath=function(t,r){var n=this.data,i=this._ux,a=this._uy,o=this._len,s,l,u,f,c,h,d=r<1,v,p,m=0,g=0,y,_=0,b,x;if(!(d&&(this._pathSegLen||this._calculateLength(),v=this._pathSegLen,p=this._pathLen,y=r*p,!y)))e:for(var w=0;w0&&(t.lineTo(b,x),_=0),S){case at.M:s=u=n[w++],l=f=n[w++],t.moveTo(u,f);break;case at.L:{c=n[w++],h=n[w++];var M=ui(c-u),A=ui(h-f);if(M>i||A>a){if(d){var P=v[g++];if(m+P>y){var E=(y-m)/P;t.lineTo(u*(1-E)+c*E,f*(1-E)+h*E);break e}m+=P}t.lineTo(c,h),u=c,f=h,_=0}else{var L=M*M+A*A;L>_&&(b=c,x=h,_=L)}break}case at.C:{var O=n[w++],N=n[w++],H=n[w++],V=n[w++],U=n[w++],F=n[w++];if(d){var P=v[g++];if(m+P>y){var E=(y-m)/P;Sd(u,O,H,U,E,Ea),Sd(f,N,V,F,E,La),t.bezierCurveTo(Ea[1],La[1],Ea[2],La[2],Ea[3],La[3]);break e}m+=P}t.bezierCurveTo(O,N,H,V,U,F),u=U,f=F;break}case at.Q:{var O=n[w++],N=n[w++],H=n[w++],V=n[w++];if(d){var P=v[g++];if(m+P>y){var E=(y-m)/P;xd(u,O,H,E,Ea),xd(f,N,V,E,La),t.quadraticCurveTo(Ea[1],La[1],Ea[2],La[2]);break e}m+=P}t.quadraticCurveTo(O,N,H,V),u=H,f=V;break}case at.A:var z=n[w++],te=n[w++],J=n[w++],me=n[w++],Se=n[w++],$e=n[w++],Ie=n[w++],B=!n[w++],Y=J>me?J:me,K=ui(J-me)>.001,Q=Se+$e,oe=!1;if(d){var P=v[g++];m+P>y&&(Q=Se+$e*(y-m)/P,oe=!0),m+=P}if(K&&t.ellipse?t.ellipse(z,te,J,me,Ie,Se,Q,B):t.arc(z,te,Y,Se,Q,B),oe)break e;C&&(s=Da(Se)*J+z,l=Ia(Se)*me+te),u=Da(Q)*J+z,f=Ia(Q)*me+te;break;case at.R:s=u=n[w],l=f=n[w+1],c=n[w++],h=n[w++];var pe=n[w++],D=n[w++];if(d){var P=v[g++];if(m+P>y){var I=y-m;t.moveTo(c,h),t.lineTo(c+Gv(I,pe),h),I-=pe,I>0&&t.lineTo(c+pe,h+Gv(I,D)),I-=D,I>0&&t.lineTo(c+Uv(pe-I,0),h+D),I-=pe,I>0&&t.lineTo(c,h+Uv(D-I,0));break e}m+=P}t.rect(c,h,pe,D);break;case at.Z:if(d){var P=v[g++];if(m+P>y){var E=(y-m)/P;t.lineTo(u*(1-E)+s*E,f*(1-E)+l*E);break e}m+=P}t.closePath(),u=s,f=l}}},e.prototype.clone=function(){var t=new e,r=this.data;return t.data=r.slice?r.slice():Array.prototype.slice.call(r),t._len=this._len,t},e.CMD=at,e.initDefaultProps=function(){var t=e.prototype;t._saveData=!0,t._ux=0,t._uy=0,t._pendingPtDist=0,t._version=0}(),e}();function Fo(e,t,r,n,i,a,o){if(i===0)return!1;var s=i,l=0,u=e;if(o>t+s&&o>n+s||oe+s&&a>r+s||at+c&&f>n+c&&f>a+c&&f>s+c||fe+c&&u>r+c&&u>i+c&&u>o+c||ut+u&&l>n+u&&l>a+u||le+u&&s>r+u&&s>i+u||sr||f+ui&&(i+=sl);var h=Math.atan2(l,s);return h<0&&(h+=sl),h>=n&&h<=i||h+sl>=n&&h+sl<=i}function Oa(e,t,r,n,i,a){if(a>t&&a>n||ai?s:0}var Ni=bo.CMD,Ra=Math.PI*2,D7=1e-4;function I7(e,t){return Math.abs(e-t)t&&u>n&&u>a&&u>s||u1&&O7(),d=Zt(t,n,a,s,en[0]),h>1&&(v=Zt(t,n,a,s,en[1]))),h===2?mt&&s>n&&s>a||s=0&&u<=1){for(var f=0,c=ir(t,n,a,u),h=0;hr||s<-r)return 0;var l=Math.sqrt(r*r-s*s);cr[0]=-l,cr[1]=l;var u=Math.abs(n-i);if(u<1e-4)return 0;if(u>=Ra-1e-4){n=0,i=Ra;var f=a?1:-1;return o>=cr[0]+e&&o<=cr[1]+e?f:0}if(n>i){var c=n;n=i,i=c}n<0&&(n+=Ra,i+=Ra);for(var h=0,d=0;d<2;d++){var v=cr[d];if(v+e>o){var p=Math.atan2(s,v),f=a?1:-1;p<0&&(p=Ra+p),(p>=n&&p<=i||p+Ra>=n&&p+Ra<=i)&&(p>Math.PI/2&&p1&&(r||(s+=Oa(l,u,f,c,n,i))),m&&(l=a[v],u=a[v+1],f=l,c=u),p){case Ni.M:f=a[v++],c=a[v++],l=f,u=c;break;case Ni.L:if(r){if(Fo(l,u,a[v],a[v+1],t,n,i))return!0}else s+=Oa(l,u,a[v],a[v+1],n,i)||0;l=a[v++],u=a[v++];break;case Ni.C:if(r){if(P7(l,u,a[v++],a[v++],a[v++],a[v++],a[v],a[v+1],t,n,i))return!0}else s+=R7(l,u,a[v++],a[v++],a[v++],a[v++],a[v],a[v+1],n,i)||0;l=a[v++],u=a[v++];break;case Ni.Q:if(r){if(E7(l,u,a[v++],a[v++],a[v],a[v+1],t,n,i))return!0}else s+=k7(l,u,a[v++],a[v++],a[v],a[v+1],n,i)||0;l=a[v++],u=a[v++];break;case Ni.A:var g=a[v++],y=a[v++],_=a[v++],b=a[v++],x=a[v++],w=a[v++];v+=1;var S=!!(1-a[v++]);h=Math.cos(x)*_+g,d=Math.sin(x)*b+y,m?(f=h,c=d):s+=Oa(l,u,h,d,n,i);var C=(n-g)*b/_+g;if(r){if(L7(g,y,b,x,x+w,S,t,C,i))return!0}else s+=N7(g,y,b,x,x+w,S,C,i);l=Math.cos(x+w)*_+g,u=Math.sin(x+w)*b+y;break;case Ni.R:f=l=a[v++],c=u=a[v++];var M=a[v++],A=a[v++];if(h=f+M,d=c+A,r){if(Fo(f,c,h,c,t,n,i)||Fo(h,c,h,d,t,n,i)||Fo(h,d,f,d,t,n,i)||Fo(f,d,f,c,t,n,i))return!0}else s+=Oa(h,c,h,d,n,i),s+=Oa(f,d,f,c,n,i);break;case Ni.Z:if(r){if(Fo(l,u,f,c,t,n,i))return!0}else s+=Oa(l,u,f,c,n,i);l=f,u=c;break}}return!r&&!I7(u,c)&&(s+=Oa(l,u,f,c,n,i)||0),s!==0}function B7(e,t,r){return oP(e,0,!1,t,r)}function F7(e,t,r,n){return oP(e,t,!0,r,n)}var sP=ht({fill:"#000",stroke:null,strokePercent:1,fillOpacity:1,strokeOpacity:1,lineDashOffset:0,lineWidth:1,lineCap:"butt",miterLimit:10,strokeNoScale:!1,strokeFirst:!1},fo),$7={style:ht({fill:!0,stroke:!0,strokePercent:!0,fillOpacity:!0,strokeOpacity:!0,lineDashOffset:!0,lineWidth:!0,miterLimit:!0},Ch.style)},qv=Eu.concat(["invisible","culling","z","z2","zlevel","parent"]),H7=function(e){ge(t,e);function t(r){return e.call(this,r)||this}return t.prototype.update=function(){var r=this;e.prototype.update.call(this);var n=this.style;if(n.decal){var i=this._decalEl=this._decalEl||new t;i.buildPath===t.prototype.buildPath&&(i.buildPath=function(l){r.buildPath(l,r.shape)}),i.silent=!0;var a=i.style;for(var o in n)a[o]!==n[o]&&(a[o]=n[o]);a.fill=n.fill?n.decal:null,a.decal=null,a.shadowColor=null,n.strokeFirst&&(a.stroke=null);for(var s=0;s.5?Zg:n>.2?_9:Qg}else if(r)return Qg}return Zg},t.prototype.getInsideTextStroke=function(r){var n=this.style.fill;if(Ee(n)){var i=this.__zr,a=!!(i&&i.isDarkMode()),o=Cd(r,0)0))},t.prototype.hasFill=function(){var r=this.style,n=r.fill;return n!=null&&n!=="none"},t.prototype.getBoundingRect=function(){var r=this._rect,n=this.style,i=!r;if(i){var a=!1;this.path||(a=!0,this.createPathProxy());var o=this.path;(a||this.__dirty&Xo)&&(o.beginPath(),this.buildPath(o,this.shape,!1),this.pathUpdated()),r=o.getBoundingRect()}if(this._rect=r,this.hasStroke()&&this.path&&this.path.len()>0){var s=this._rectStroke||(this._rectStroke=r.clone());if(this.__dirty||i){s.copy(r);var l=n.strokeNoScale?this.getLineScale():1,u=n.lineWidth;if(!this.hasFill()){var f=this.strokeContainThreshold;u=Math.max(u,f??4)}l>1e-10&&(s.width+=u/l,s.height+=u/l,s.x-=u/l/2,s.y-=u/l/2)}return s}return r},t.prototype.contain=function(r,n){var i=this.transformCoordToLocal(r,n),a=this.getBoundingRect(),o=this.style;if(r=i[0],n=i[1],a.contain(r,n)){var s=this.path;if(this.hasStroke()){var l=o.lineWidth,u=o.strokeNoScale?this.getLineScale():1;if(u>1e-10&&(this.hasFill()||(l=Math.max(l,this.strokeContainThreshold)),F7(s,l/u,r,n)))return!0}if(this.hasFill())return B7(s,r,n)}return!1},t.prototype.dirtyShape=function(){this.__dirty|=Xo,this._rect&&(this._rect=null),this._decalEl&&this._decalEl.dirtyShape(),this.markRedraw()},t.prototype.dirty=function(){this.dirtyStyle(),this.dirtyShape()},t.prototype.animateShape=function(r){return this.animate("shape",r)},t.prototype.updateDuringAnimation=function(r){r==="style"?this.dirtyStyle():r==="shape"?this.dirtyShape():this.markRedraw()},t.prototype.attrKV=function(r,n){r==="shape"?this.setShape(n):e.prototype.attrKV.call(this,r,n)},t.prototype.setShape=function(r,n){var i=this.shape;return i||(i=this.shape={}),typeof r=="string"?i[r]=n:ue(i,r),this.dirtyShape(),this},t.prototype.shapeChanged=function(){return!!(this.__dirty&Xo)},t.prototype.createStyle=function(r){return _h(sP,r)},t.prototype._innerSaveToNormal=function(r){e.prototype._innerSaveToNormal.call(this,r);var n=this._normalState;r.shape&&!n.shape&&(n.shape=ue({},this.shape))},t.prototype._applyStateObj=function(r,n,i,a,o,s){e.prototype._applyStateObj.call(this,r,n,i,a,o,s);var l=!(n&&a),u;if(n&&n.shape?o?a?u=n.shape:(u=ue({},i.shape),ue(u,n.shape)):(u=ue({},a?this.shape:i.shape),ue(u,n.shape)):l&&(u=i.shape),u)if(o){this.shape=ue({},this.shape);for(var f={},c=Ct(u),h=0;h0},t.prototype.hasFill=function(){var r=this.style,n=r.fill;return n!=null&&n!=="none"},t.prototype.createStyle=function(r){return _h(z7,r)},t.prototype.setBoundingRect=function(r){this._rect=r},t.prototype.getBoundingRect=function(){var r=this.style;if(!this._rect){var n=r.text;n!=null?n+="":n="";var i=u0(n,r.font,r.textAlign,r.textBaseline);if(i.x+=r.x||0,i.y+=r.y||0,this.hasStroke()){var a=r.lineWidth;i.x-=a/2,i.y-=a/2,i.width+=a,i.height+=a}this._rect=i}return this._rect},t.initDefaultProps=function(){var r=t.prototype;r.dirtyRectTolerance=10}(),t}(uf);lP.prototype.type="tspan";const im=lP;var V7=ht({x:0,y:0},fo),W7={style:ht({x:!0,y:!0,width:!0,height:!0,sx:!0,sy:!0,sWidth:!0,sHeight:!0},Ch.style)};function G7(e){return!!(e&&typeof e!="string"&&e.width&&e.height)}var uP=function(e){ge(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.createStyle=function(r){return _h(V7,r)},t.prototype._getSize=function(r){var n=this.style,i=n[r];if(i!=null)return i;var a=G7(n.image)?n.image:this.__image;if(!a)return 0;var o=r==="width"?"height":"width",s=n[o];return s==null?a[r]:a[r]/a[o]*s},t.prototype.getWidth=function(){return this._getSize("width")},t.prototype.getHeight=function(){return this._getSize("height")},t.prototype.getAnimationStyleProps=function(){return W7},t.prototype.getBoundingRect=function(){var r=this.style;return this._rect||(this._rect=new nt(r.x||0,r.y||0,this.getWidth(),this.getHeight())),this._rect},t}(uf);uP.prototype.type="image";const Gs=uP;function U7(e,t){var r=t.x,n=t.y,i=t.width,a=t.height,o=t.r,s,l,u,f;i<0&&(r=r+i,i=-i),a<0&&(n=n+a,a=-a),typeof o=="number"?s=l=u=f=o:o instanceof Array?o.length===1?s=l=u=f=o[0]:o.length===2?(s=u=o[0],l=f=o[1]):o.length===3?(s=o[0],l=f=o[1],u=o[2]):(s=o[0],l=o[1],u=o[2],f=o[3]):s=l=u=f=0;var c;s+l>i&&(c=s+l,s*=i/c,l*=i/c),u+f>i&&(c=u+f,u*=i/c,f*=i/c),l+u>a&&(c=l+u,l*=a/c,u*=a/c),s+f>a&&(c=s+f,s*=a/c,f*=a/c),e.moveTo(r+s,n),e.lineTo(r+i-l,n),l!==0&&e.arc(r+i-l,n+l,l,-Math.PI/2,0),e.lineTo(r+i,n+a-u),u!==0&&e.arc(r+i-u,n+a-u,u,0,Math.PI/2),e.lineTo(r+f,n+a),f!==0&&e.arc(r+f,n+a-f,f,Math.PI/2,Math.PI),e.lineTo(r,n+s),s!==0&&e.arc(r+s,n+s,s,Math.PI,Math.PI*1.5)}var rs=Math.round;function fP(e,t,r){if(t){var n=t.x1,i=t.x2,a=t.y1,o=t.y2;e.x1=n,e.x2=i,e.y1=a,e.y2=o;var s=r&&r.lineWidth;return s&&(rs(n*2)===rs(i*2)&&(e.x1=e.x2=to(n,s,!0)),rs(a*2)===rs(o*2)&&(e.y1=e.y2=to(a,s,!0))),e}}function cP(e,t,r){if(t){var n=t.x,i=t.y,a=t.width,o=t.height;e.x=n,e.y=i,e.width=a,e.height=o;var s=r&&r.lineWidth;return s&&(e.x=to(n,s,!0),e.y=to(i,s,!0),e.width=Math.max(to(n+a,s,!1)-e.x,a===0?0:1),e.height=Math.max(to(i+o,s,!1)-e.y,o===0?0:1)),e}}function to(e,t,r){if(!t)return e;var n=rs(e*2);return(n+rs(t))%2===0?n/2:(n+(r?1:-1))/2}var Y7=function(){function e(){this.x=0,this.y=0,this.width=0,this.height=0}return e}(),j7={},dP=function(e){ge(t,e);function t(r){return e.call(this,r)||this}return t.prototype.getDefaultShape=function(){return new Y7},t.prototype.buildPath=function(r,n){var i,a,o,s;if(this.subPixelOptimize){var l=cP(j7,n,this.style);i=l.x,a=l.y,o=l.width,s=l.height,l.r=n.r,n=l}else i=n.x,a=n.y,o=n.width,s=n.height;n.r?U7(r,n):r.rect(i,a,o,s)},t.prototype.isZeroArea=function(){return!this.shape.width||!this.shape.height},t}(vt);dP.prototype.type="rect";const Gt=dP;var Bw={fill:"#000"},Fw=2,q7={style:ht({fill:!0,stroke:!0,fillOpacity:!0,strokeOpacity:!0,lineWidth:!0,fontSize:!0,lineHeight:!0,width:!0,height:!0,textShadowColor:!0,textShadowBlur:!0,textShadowOffsetX:!0,textShadowOffsetY:!0,backgroundColor:!0,padding:!0,borderColor:!0,borderWidth:!0,borderRadius:!0},Ch.style)},hP=function(e){ge(t,e);function t(r){var n=e.call(this)||this;return n.type="text",n._children=[],n._defaultStyle=Bw,n.attr(r),n}return t.prototype.childrenRef=function(){return this._children},t.prototype.update=function(){e.prototype.update.call(this),this.styleChanged()&&this._updateSubTexts();for(var r=0;r0,E=r.width!=null&&(r.overflow==="truncate"||r.overflow==="break"||r.overflow==="breakAll"),L=o.calculatedLineHeight,O=0;O=0&&(O=w[L],O.align==="right");)this._placeToken(O,r,C,g,E,"right",_),M-=O.width,E-=O.width,L--;for(P+=(a-(P-m)-(y-E)-M)/2;A<=L;)O=w[A],this._placeToken(O,r,C,g,P+O.width/2,"center",_),P+=O.width,A++;g+=C}},t.prototype._placeToken=function(r,n,i,a,o,s,l){var u=n.rich[r.styleName]||{};u.text=r.text;var f=r.verticalAlign,c=a+i/2;f==="top"?c=a+r.height/2:f==="bottom"&&(c=a+i-r.height/2);var h=!r.isLineHolder&&Kv(u);h&&this._renderBackground(u,n,s==="right"?o-r.width:s==="center"?o-r.width/2:o,c-r.height/2,r.width,r.height);var d=!!u.backgroundColor,v=r.textPadding;v&&(o=Gw(o,s,v),c-=r.height/2-v[0]-r.innerHeight/2);var p=this._getOrCreateChild(im),m=p.createStyle();p.useStyle(m);var g=this._defaultStyle,y=!1,_=0,b=Ww("fill"in u?u.fill:"fill"in n?n.fill:(y=!0,g.fill)),x=Vw("stroke"in u?u.stroke:"stroke"in n?n.stroke:!d&&!l&&(!g.autoStroke||y)?(_=Fw,g.stroke):null),w=u.textShadowBlur>0||n.textShadowBlur>0;m.text=r.text,m.x=o,m.y=c,w&&(m.shadowBlur=u.textShadowBlur||n.textShadowBlur||0,m.shadowColor=u.textShadowColor||n.textShadowColor||"transparent",m.shadowOffsetX=u.textShadowOffsetX||n.textShadowOffsetX||0,m.shadowOffsetY=u.textShadowOffsetY||n.textShadowOffsetY||0),m.textAlign=s,m.textBaseline="middle",m.font=r.font||_o,m.opacity=Yl(u.opacity,n.opacity,1),Hw(m,u),x&&(m.lineWidth=Yl(u.lineWidth,n.lineWidth,_),m.lineDash=Ze(u.lineDash,n.lineDash),m.lineDashOffset=n.lineDashOffset||0,m.stroke=x),b&&(m.fill=b);var S=r.contentWidth,C=r.contentHeight;p.setBoundingRect(new nt(Ml(m.x,S,m.textAlign),Zo(m.y,C,m.textBaseline),S,C))},t.prototype._renderBackground=function(r,n,i,a,o,s){var l=r.backgroundColor,u=r.borderWidth,f=r.borderColor,c=l&&l.image,h=l&&!c,d=r.borderRadius,v=this,p,m;if(h||r.lineHeight||u&&f){p=this._getOrCreateChild(Gt),p.useStyle(p.createStyle()),p.style.fill=null;var g=p.shape;g.x=i,g.y=a,g.width=o,g.height=s,g.r=d,p.dirtyShape()}if(h){var y=p.style;y.fill=l||null,y.fillOpacity=Ze(r.fillOpacity,1)}else if(c){m=this._getOrCreateChild(Gs),m.onload=function(){v.dirtyStyle()};var _=m.style;_.image=l.image,_.x=i,_.y=a,_.width=o,_.height=s}if(u&&f){var y=p.style;y.lineWidth=u,y.stroke=f,y.strokeOpacity=Ze(r.strokeOpacity,1),y.lineDash=r.borderDash,y.lineDashOffset=r.borderDashOffset||0,p.strokeContainThreshold=0,p.hasFill()&&p.hasStroke()&&(y.strokeFirst=!0,y.lineWidth*=2)}var b=(p||m).style;b.shadowBlur=r.shadowBlur||0,b.shadowColor=r.shadowColor||"transparent",b.shadowOffsetX=r.shadowOffsetX||0,b.shadowOffsetY=r.shadowOffsetY||0,b.opacity=Yl(r.opacity,n.opacity,1)},t.makeFont=function(r){var n="";return Q7(r)&&(n=[r.fontStyle,r.fontWeight,Z7(r.fontSize),r.fontFamily||"sans-serif"].join(" ")),n&&Gn(n)||r.textFont||r.font},t}(uf),K7={left:!0,right:1,center:1},X7={top:1,bottom:1,middle:1},$w=["fontStyle","fontWeight","fontSize","fontFamily"];function Z7(e){return typeof e=="string"&&(e.indexOf("px")!==-1||e.indexOf("rem")!==-1||e.indexOf("em")!==-1)?e:isNaN(+e)?Jy+"px":e+"px"}function Hw(e,t){for(var r=0;r<$w.length;r++){var n=$w[r],i=t[n];i!=null&&(e[n]=i)}}function Q7(e){return e.fontSize!=null||e.fontFamily||e.fontWeight}function J7(e){return zw(e),R(e.rich,zw),e}function zw(e){if(e){e.font=hP.makeFont(e);var t=e.align;t==="middle"&&(t="center"),e.align=t==null||K7[t]?t:"left";var r=e.verticalAlign;r==="center"&&(r="middle"),e.verticalAlign=r==null||X7[r]?r:"top";var n=e.padding;n&&(e.padding=_2(e.padding))}}function Vw(e,t){return e==null||t<=0||e==="transparent"||e==="none"?null:e.image||e.colorStops?"#000":e}function Ww(e){return e==null||e==="none"?null:e.image||e.colorStops?"#000":e}function Gw(e,t,r){return t==="right"?e-r[1]:t==="center"?e+r[3]/2-r[1]/2:e+r[3]}function Uw(e){var t=e.text;return t!=null&&(t+=""),t}function Kv(e){return!!(e.backgroundColor||e.lineHeight||e.borderWidth&&e.borderColor)}const mr=hP;var dt=Et(),eY=function(e,t,r,n){if(n){var i=dt(n);i.dataIndex=r,i.dataType=t,i.seriesIndex=e,n.type==="group"&&n.traverse(function(a){var o=dt(a);o.seriesIndex=e,o.dataIndex=r,o.dataType=t})}},Yw=1,jw={},vP=Et(),g0=Et(),pP=0,m0=1,y0=2,Jn=["emphasis","blur","select"],Ed=["normal","emphasis","blur","select"],tY=10,rY=9,co="highlight",Uc="downplay",Ql="select",Yc="unselect",Jl="toggleSelect";function $o(e){return e!=null&&e!=="none"}var qw=new af(100);function Kw(e){if(Ee(e)){var t=qw.get(e);return t||(t=vw(e,-.1),qw.put(e,t)),t}else if(yh(e)){var r=ue({},e);return r.colorStops=Ne(e.colorStops,function(n){return{offset:n.offset,color:vw(n.color,-.1)}}),r}return e}function Th(e,t,r){e.onHoverStateChange&&(e.hoverState||0)!==r&&e.onHoverStateChange(t),e.hoverState=r}function gP(e){Th(e,"emphasis",y0)}function mP(e){e.hoverState===y0&&Th(e,"normal",pP)}function _0(e){Th(e,"blur",m0)}function yP(e){e.hoverState===m0&&Th(e,"normal",pP)}function nY(e){e.selected=!0}function iY(e){e.selected=!1}function Xw(e,t,r){t(e,r)}function Li(e,t,r){Xw(e,t,r),e.isGroup&&e.traverse(function(n){Xw(n,t,r)})}function aY(e,t,r,n){for(var i=e.style,a={},o=0;o=0,a=!1;if(e instanceof vt){var o=vP(e),s=i&&o.selectFill||o.normalFill,l=i&&o.selectStroke||o.normalStroke;if($o(s)||$o(l)){n=n||{};var u=n.style||{};u.fill==="inherit"?(a=!0,n=ue({},n),u=ue({},u),u.fill=s):!$o(u.fill)&&$o(s)?(a=!0,n=ue({},n),u=ue({},u),u.fill=Kw(s)):!$o(u.stroke)&&$o(l)&&(a||(n=ue({},n),u=ue({},u)),u.stroke=Kw(l)),n.style=u}}if(n&&n.z2==null){a||(n=ue({},n));var f=e.z2EmphasisLift;n.z2=e.z2+(f??tY)}return n}function sY(e,t,r){if(r&&r.z2==null){r=ue({},r);var n=e.z2SelectLift;r.z2=e.z2+(n??rY)}return r}function lY(e,t,r){var n=ot(e.currentStates,t)>=0,i=e.style.opacity,a=n?null:aY(e,["opacity"],t,{opacity:1});r=r||{};var o=r.style||{};return o.opacity==null&&(r=ue({},r),o=ue({opacity:n?i:a.opacity*.1},o),r.style=o),r}function Xv(e,t){var r=this.states[e];if(this.style){if(e==="emphasis")return oY(this,e,t,r);if(e==="blur")return lY(this,e,r);if(e==="select")return sY(this,e,r)}return r}function uY(e){e.stateProxy=Xv;var t=e.getTextContent(),r=e.getTextGuideLine();t&&(t.stateProxy=Xv),r&&(r.stateProxy=Xv)}function Zw(e,t){!SP(e,t)&&!e.__highByOuter&&Li(e,gP)}function Qw(e,t){!SP(e,t)&&!e.__highByOuter&&Li(e,mP)}function am(e,t){e.__highByOuter|=1<<(t||0),Li(e,gP)}function om(e,t){!(e.__highByOuter&=~(1<<(t||0)))&&Li(e,mP)}function fY(e){Li(e,_0)}function _P(e){Li(e,yP)}function bP(e){Li(e,nY)}function wP(e){Li(e,iY)}function SP(e,t){return e.__highDownSilentOnTouch&&t.zrByTouch}function xP(e){var t=e.getModel(),r=[],n=[];t.eachComponent(function(i,a){var o=g0(a),s=i==="series",l=s?e.getViewOfSeriesModel(a):e.getViewOfComponentModel(a);!s&&n.push(l),o.isBlured&&(l.group.traverse(function(u){yP(u)}),s&&r.push(a)),o.isBlured=!1}),R(n,function(i){i&&i.toggleBlurSeries&&i.toggleBlurSeries(r,!1,t)})}function sm(e,t,r,n){var i=n.getModel();r=r||"coordinateSystem";function a(u,f){for(var c=0;c0){var s={dataIndex:o,seriesIndex:r.seriesIndex};a!=null&&(s.dataType=a),t.push(s)}})}),t}function um(e,t,r){MP(e,!0),Li(e,uY),mY(e,t,r)}function gY(e){MP(e,!1)}function CP(e,t,r,n){n?gY(e):um(e,t,r)}function mY(e,t,r){var n=dt(e);t!=null?(n.focus=t,n.blurScope=r):n.focus&&(n.focus=null)}var eS=["emphasis","blur","select"],yY={itemStyle:"getItemStyle",lineStyle:"getLineStyle",areaStyle:"getAreaStyle"};function TP(e,t,r,n){r=r||"itemStyle";for(var i=0;i1&&(o*=Zv(v),s*=Zv(v));var p=(i===a?-1:1)*Zv((o*o*(s*s)-o*o*(d*d)-s*s*(h*h))/(o*o*(d*d)+s*s*(h*h)))||0,m=p*o*d/s,g=p*-s*h/o,y=(e+r)/2+jf(c)*m-Yf(c)*g,_=(t+n)/2+Yf(c)*m+jf(c)*g,b=iS([1,0],[(h-m)/o,(d-g)/s]),x=[(h-m)/o,(d-g)/s],w=[(-1*h-m)/o,(-1*d-g)/s],S=iS(x,w);if(dm(x,w)<=-1&&(S=ll),dm(x,w)>=1&&(S=0),S<0){var C=Math.round(S/ll*1e6)/1e6;S=ll*2+C%2*ll}f.addData(u,y,_,o,s,b,S,c,a)}var CY=/([mlvhzcqtsa])([^mlvhzcqtsa]*)/ig,TY=/-?([0-9]*\.)?[0-9]+([eE]-?[0-9]+)?/g;function MY(e){var t=new bo;if(!e)return t;var r=0,n=0,i=r,a=n,o,s=bo.CMD,l=e.match(CY);if(!l)return t;for(var u=0;uO*O+N*N&&(C=A,M=P),{cx:C,cy:M,x0:-f,y0:-c,x1:C*(i/x-1),y1:M*(i/x-1)}}function RY(e){var t;if(ye(e)){var r=e.length;if(!r)return e;r===1?t=[e[0],e[0],0,0]:r===2?t=[e[0],e[0],e[1],e[1]]:r===3?t=e.concat(e[2]):t=e}else t=[e,e,e,e];return t}function kY(e,t){var r,n=Al(t.r,0),i=Al(t.r0||0,0),a=n>0,o=i>0;if(!(!a&&!o)){if(a||(n=i,i=0),i>n){var s=n;n=i,i=s}var l=t.startAngle,u=t.endAngle;if(!(isNaN(l)||isNaN(u))){var f=t.cx,c=t.cy,h=!!t.clockwise,d=oS(u-l),v=d>Qv&&d%Qv;if(v>mn&&(d=v),!(n>mn))e.moveTo(f,c);else if(d>Qv-mn)e.moveTo(f+n*zo(l),c+n*ka(l)),e.arc(f,c,n,l,u,!h),i>mn&&(e.moveTo(f+i*zo(u),c+i*ka(u)),e.arc(f,c,i,u,l,h));else{var p=void 0,m=void 0,g=void 0,y=void 0,_=void 0,b=void 0,x=void 0,w=void 0,S=void 0,C=void 0,M=void 0,A=void 0,P=void 0,E=void 0,L=void 0,O=void 0,N=n*zo(l),H=n*ka(l),V=i*zo(u),U=i*ka(u),F=d>mn;if(F){var z=t.cornerRadius;z&&(r=RY(z),p=r[0],m=r[1],g=r[2],y=r[3]);var te=oS(n-i)/2;if(_=$n(te,g),b=$n(te,y),x=$n(te,p),w=$n(te,m),M=S=Al(_,b),A=C=Al(x,w),(S>mn||C>mn)&&(P=n*zo(u),E=n*ka(u),L=i*zo(l),O=i*ka(l),dmn){var K=$n(g,M),Q=$n(y,M),oe=qf(L,O,N,H,n,K,h),pe=qf(P,E,V,U,n,Q,h);e.moveTo(f+oe.cx+oe.x0,c+oe.cy+oe.y0),M0&&e.arc(f+oe.cx,c+oe.cy,K,rr(oe.y0,oe.x0),rr(oe.y1,oe.x1),!h),e.arc(f,c,n,rr(oe.cy+oe.y1,oe.cx+oe.x1),rr(pe.cy+pe.y1,pe.cx+pe.x1),!h),Q>0&&e.arc(f+pe.cx,c+pe.cy,Q,rr(pe.y1,pe.x1),rr(pe.y0,pe.x0),!h))}else e.moveTo(f+N,c+H),e.arc(f,c,n,l,u,!h);if(!(i>mn)||!F)e.lineTo(f+V,c+U);else if(A>mn){var K=$n(p,A),Q=$n(m,A),oe=qf(V,U,P,E,i,-Q,h),pe=qf(N,H,L,O,i,-K,h);e.lineTo(f+oe.cx+oe.x0,c+oe.cy+oe.y0),A0&&e.arc(f+oe.cx,c+oe.cy,Q,rr(oe.y0,oe.x0),rr(oe.y1,oe.x1),!h),e.arc(f,c,i,rr(oe.cy+oe.y1,oe.cx+oe.x1),rr(pe.cy+pe.y1,pe.cx+pe.x1),h),K>0&&e.arc(f+pe.cx,c+pe.cy,K,rr(pe.y1,pe.x1),rr(pe.y0,pe.x0),!h))}else e.lineTo(f+V,c+U),e.arc(f,c,i,u,l,h)}e.closePath()}}}var NY=function(){function e(){this.cx=0,this.cy=0,this.r0=0,this.r=0,this.startAngle=0,this.endAngle=Math.PI*2,this.clockwise=!0,this.cornerRadius=0}return e}(),RP=function(e){ge(t,e);function t(r){return e.call(this,r)||this}return t.prototype.getDefaultShape=function(){return new NY},t.prototype.buildPath=function(r,n){kY(r,n)},t.prototype.isZeroArea=function(){return this.shape.startAngle===this.shape.endAngle||this.shape.r===this.shape.r0},t}(vt);RP.prototype.type="sector";const Eo=RP;var BY=function(){function e(){this.cx=0,this.cy=0,this.r=0,this.r0=0}return e}(),kP=function(e){ge(t,e);function t(r){return e.call(this,r)||this}return t.prototype.getDefaultShape=function(){return new BY},t.prototype.buildPath=function(r,n){var i=n.cx,a=n.cy,o=Math.PI*2;r.moveTo(i+n.r,a),r.arc(i,a,n.r,0,o,!1),r.moveTo(i+n.r0,a),r.arc(i,a,n.r0,0,o,!0)},t}(vt);kP.prototype.type="ring";const NP=kP;function FY(e,t,r,n){var i=[],a=[],o=[],s=[],l,u,f,c;if(n){f=[1/0,1/0],c=[-1/0,-1/0];for(var h=0,d=e.length;h=2){if(n){var a=FY(i,n,r,t.smoothConstraint);e.moveTo(i[0][0],i[0][1]);for(var o=i.length,s=0;s<(r?o:o-1);s++){var l=a[s*2],u=a[s*2+1],f=i[(s+1)%o];e.bezierCurveTo(l[0],l[1],u[0],u[1],f[0],f[1])}}else{e.moveTo(i[0][0],i[0][1]);for(var s=1,c=i.length;sBa[1]){if(s=!1,a)return s;var f=Math.abs(Ba[0]-Na[1]),c=Math.abs(Na[0]-Ba[1]);Math.min(f,c)>i.len()&&(f0){var c=f.duration,h=f.delay,d=f.easing,v={duration:c,delay:h||0,easing:d,done:a,force:!!a||!!o,setToFinal:!u,scope:e,during:o};s?t.animateFrom(r,v):t.animateTo(r,v)}else t.stopAnimation(),!s&&t.attr(r),o&&o(1),a&&a()}function Or(e,t,r,n,i,a){x0("update",e,t,r,n,i,a)}function Wr(e,t,r,n,i,a){x0("enter",e,t,r,n,i,a)}function fs(e){if(!e.__zr)return!0;for(var t=0;tMath.abs(a[1])?a[0]>0?"right":"left":a[1]>0?"bottom":"top"}function uS(e){return!e.isGroup}function dj(e){return e.shape!=null}function XP(e,t,r){if(!e||!t)return;function n(o){var s={};return o.traverse(function(l){uS(l)&&l.anid&&(s[l.anid]=l)}),s}function i(o){var s={x:o.x,y:o.y,rotation:o.rotation};return dj(o)&&(s.shape=ue({},o.shape)),s}var a=n(e);t.traverse(function(o){if(uS(o)&&o.anid){var s=a[o.anid];if(s){var l=i(o);o.attr(i(s)),Or(o,l,r,dt(o).dataIndex)}}})}function hj(e,t){return Ne(e,function(r){var n=r[0];n=Id(n,t.x),n=Od(n,t.x+t.width);var i=r[1];return i=Id(i,t.y),i=Od(i,t.y+t.height),[n,i]})}function vj(e,t){var r=Id(e.x,t.x),n=Od(e.x+e.width,t.x+t.width),i=Id(e.y,t.y),a=Od(e.y+e.height,t.y+t.height);if(n>=r&&a>=i)return{x:r,y:i,width:n-r,height:a-i}}function M0(e,t,r){var n=ue({rectHover:!0},t),i=n.style={strokeNoScale:!0};if(r=r||{x:-1,y:-1,width:2,height:2},e)return e.indexOf("image://")===0?(i.image=e.slice(8),ht(i,r),new Gs(n)):C0(e.replace("path://",""),n,r,"center")}function pj(e,t,r,n,i){for(var a=0,o=i[i.length-1];a1)return!1;var m=Jv(d,v,f,c)/h;return!(m<0||m>1)}function Jv(e,t,r,n){return e*n-r*t}function gj(e){return e<=1e-6&&e>=-1e-6}function A0(e){var t=e.itemTooltipOption,r=e.componentModel,n=e.itemName,i=Ee(t)?{formatter:t}:t,a=r.mainType,o=r.componentIndex,s={componentType:a,name:n,$vars:["name"]};s[a+"Index"]=o;var l=e.formatterParamsExtra;l&&R(Ct(l),function(f){Es(s,f)||(s[f]=l[f],s.$vars.push(f))});var u=dt(e.el);u.componentMainType=a,u.componentIndex=o,u.tooltipConfig={name:n,option:ht({content:n,formatterParams:s},i)}}function fS(e,t){var r;e.isGroup&&(r=t(e)),r||e.traverse(t)}function P0(e,t){if(e)if(ye(e))for(var r=0;r=0&&s.push(l)}),s}}function rE(e,t){return st(st({},e,!0),t,!0)}const Oj={time:{month:["January","February","March","April","May","June","July","August","September","October","November","December"],monthAbbr:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayOfWeek:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayOfWeekAbbr:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},legend:{selector:{all:"All",inverse:"Inv"}},toolbox:{brush:{title:{rect:"Box Select",polygon:"Lasso Select",lineX:"Horizontally Select",lineY:"Vertically Select",keep:"Keep Selections",clear:"Clear Selections"}},dataView:{title:"Data View",lang:["Data View","Close","Refresh"]},dataZoom:{title:{zoom:"Zoom",back:"Zoom Reset"}},magicType:{title:{line:"Switch to Line Chart",bar:"Switch to Bar Chart",stack:"Stack",tiled:"Tile"}},restore:{title:"Restore"},saveAsImage:{title:"Save as Image",lang:["Right Click to Save Image"]}},series:{typeNames:{pie:"Pie chart",bar:"Bar chart",line:"Line chart",scatter:"Scatter plot",effectScatter:"Ripple scatter plot",radar:"Radar chart",tree:"Tree",treemap:"Treemap",boxplot:"Boxplot",candlestick:"Candlestick",k:"K line chart",heatmap:"Heat map",map:"Map",parallel:"Parallel coordinate map",lines:"Line graph",graph:"Relationship graph",sankey:"Sankey diagram",funnel:"Funnel chart",gauge:"Gauge",pictorialBar:"Pictorial bar",themeRiver:"Theme River Map",sunburst:"Sunburst"}},aria:{general:{withTitle:'This is a chart about "{title}"',withoutTitle:"This is a chart"},series:{single:{prefix:"",withName:" with type {seriesType} named {seriesName}.",withoutName:" with type {seriesType}."},multiple:{prefix:". It consists of {seriesCount} series count.",withName:" The {seriesId} series is a {seriesType} representing {seriesName}.",withoutName:" The {seriesId} series is a {seriesType}.",separator:{middle:"",end:""}}},data:{allData:"The data is as follows: ",partialData:"The first {displayCnt} items are: ",withName:"the data for {name} is {value}",withoutName:"{value}",separator:{middle:", ",end:". "}}}},Rj={time:{month:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthAbbr:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],dayOfWeek:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dayOfWeekAbbr:["日","一","二","三","四","五","六"]},legend:{selector:{all:"全选",inverse:"反选"}},toolbox:{brush:{title:{rect:"矩形选择",polygon:"圈选",lineX:"横向选择",lineY:"纵向选择",keep:"保持选择",clear:"清除选择"}},dataView:{title:"数据视图",lang:["数据视图","关闭","刷新"]},dataZoom:{title:{zoom:"区域缩放",back:"区域缩放还原"}},magicType:{title:{line:"切换为折线图",bar:"切换为柱状图",stack:"切换为堆叠",tiled:"切换为平铺"}},restore:{title:"还原"},saveAsImage:{title:"保存为图片",lang:["右键另存为图片"]}},series:{typeNames:{pie:"饼图",bar:"柱状图",line:"折线图",scatter:"散点图",effectScatter:"涟漪散点图",radar:"雷达图",tree:"树图",treemap:"矩形树图",boxplot:"箱型图",candlestick:"K线图",k:"K线图",heatmap:"热力图",map:"地图",parallel:"平行坐标图",lines:"线图",graph:"关系图",sankey:"桑基图",funnel:"漏斗图",gauge:"仪表盘图",pictorialBar:"象形柱图",themeRiver:"主题河流图",sunburst:"旭日图"}},aria:{general:{withTitle:"这是一个关于“{title}”的图表。",withoutTitle:"这是一个图表,"},series:{single:{prefix:"",withName:"图表类型是{seriesType},表示{seriesName}。",withoutName:"图表类型是{seriesType}。"},multiple:{prefix:"它由{seriesCount}个图表系列组成。",withName:"第{seriesId}个系列是一个表示{seriesName}的{seriesType},",withoutName:"第{seriesId}个系列是一个{seriesType},",separator:{middle:";",end:"。"}}},data:{allData:"其数据是——",partialData:"其中,前{displayCnt}项是——",withName:"{name}的数据是{value}",withoutName:"{value}",separator:{middle:",",end:""}}}};var Rd="ZH",L0="EN",Ou=L0,jc={},D0={},nE=He.domSupported?function(){var e=(document.documentElement.lang||navigator.language||navigator.browserLanguage).toUpperCase();return e.indexOf(Rd)>-1?Rd:Ou}():Ou;function iE(e,t){e=e.toUpperCase(),D0[e]=new sr(t),jc[e]=t}function kj(e){if(Ee(e)){var t=jc[e.toUpperCase()]||{};return e===Rd||e===L0?tt(t):st(tt(t),tt(jc[Ou]),!1)}else return st(tt(e),tt(jc[Ou]),!1)}function Nj(e){return D0[e]}function Bj(){return D0[Ou]}iE(L0,Oj);iE(Rd,Rj);var I0=1e3,O0=I0*60,tu=O0*60,on=tu*24,gS=on*365,Pl={year:"{yyyy}",month:"{MMM}",day:"{d}",hour:"{HH}:{mm}",minute:"{HH}:{mm}",second:"{HH}:{mm}:{ss}",millisecond:"{HH}:{mm}:{ss} {SSS}",none:"{yyyy}-{MM}-{dd} {HH}:{mm}:{ss} {SSS}"},Zf="{yyyy}-{MM}-{dd}",mS={year:"{yyyy}",month:"{yyyy}-{MM}",day:Zf,hour:Zf+" "+Pl.hour,minute:Zf+" "+Pl.minute,second:Zf+" "+Pl.second,millisecond:Pl.none},rp=["year","month","day","hour","minute","second","millisecond"],aE=["year","half-year","quarter","month","week","half-week","day","half-day","quarter-day","hour","minute","second","millisecond"];function Bi(e,t){return e+="","0000".substr(0,t-e.length)+e}function cs(e){switch(e){case"half-year":case"quarter":return"month";case"week":case"half-week":return"day";case"half-day":case"quarter-day":return"hour";default:return e}}function Fj(e){return e===cs(e)}function $j(e){switch(e){case"year":case"month":return"day";case"millisecond":return"millisecond";default:return"second"}}function Ph(e,t,r,n){var i=Ti(e),a=i[R0(r)](),o=i[ds(r)]()+1,s=Math.floor((o-1)/3)+1,l=i[Eh(r)](),u=i["get"+(r?"UTC":"")+"Day"](),f=i[Ru(r)](),c=(f-1)%12+1,h=i[Lh(r)](),d=i[Dh(r)](),v=i[Ih(r)](),p=n instanceof sr?n:Nj(n||nE)||Bj(),m=p.getModel("time"),g=m.get("month"),y=m.get("monthAbbr"),_=m.get("dayOfWeek"),b=m.get("dayOfWeekAbbr");return(t||"").replace(/{yyyy}/g,a+"").replace(/{yy}/g,Bi(a%100+"",2)).replace(/{Q}/g,s+"").replace(/{MMMM}/g,g[o-1]).replace(/{MMM}/g,y[o-1]).replace(/{MM}/g,Bi(o,2)).replace(/{M}/g,o+"").replace(/{dd}/g,Bi(l,2)).replace(/{d}/g,l+"").replace(/{eeee}/g,_[u]).replace(/{ee}/g,b[u]).replace(/{e}/g,u+"").replace(/{HH}/g,Bi(f,2)).replace(/{H}/g,f+"").replace(/{hh}/g,Bi(c+"",2)).replace(/{h}/g,c+"").replace(/{mm}/g,Bi(h,2)).replace(/{m}/g,h+"").replace(/{ss}/g,Bi(d,2)).replace(/{s}/g,d+"").replace(/{SSS}/g,Bi(v,3)).replace(/{S}/g,v+"")}function Hj(e,t,r,n,i){var a=null;if(Ee(r))a=r;else if(Ye(r))a=r(e.value,t,{level:e.level});else{var o=ue({},Pl);if(e.level>0)for(var s=0;s=0;--s)if(l[u]){a=l[u];break}a=a||o.none}if(ye(a)){var c=e.level==null?0:e.level>=0?e.level:a.length+e.level;c=Math.min(c,a.length-1),a=a[c]}}return Ph(new Date(e.value),a,i,n)}function oE(e,t){var r=Ti(e),n=r[ds(t)]()+1,i=r[Eh(t)](),a=r[Ru(t)](),o=r[Lh(t)](),s=r[Dh(t)](),l=r[Ih(t)](),u=l===0,f=u&&s===0,c=f&&o===0,h=c&&a===0,d=h&&i===1,v=d&&n===1;return v?"year":d?"month":h?"day":c?"hour":f?"minute":u?"second":"millisecond"}function yS(e,t,r){var n=Tt(e)?Ti(e):e;switch(t=t||oE(e,r),t){case"year":return n[R0(r)]();case"half-year":return n[ds(r)]()>=6?1:0;case"quarter":return Math.floor((n[ds(r)]()+1)/4);case"month":return n[ds(r)]();case"day":return n[Eh(r)]();case"half-day":return n[Ru(r)]()/24;case"hour":return n[Ru(r)]();case"minute":return n[Lh(r)]();case"second":return n[Dh(r)]();case"millisecond":return n[Ih(r)]()}}function R0(e){return e?"getUTCFullYear":"getFullYear"}function ds(e){return e?"getUTCMonth":"getMonth"}function Eh(e){return e?"getUTCDate":"getDate"}function Ru(e){return e?"getUTCHours":"getHours"}function Lh(e){return e?"getUTCMinutes":"getMinutes"}function Dh(e){return e?"getUTCSeconds":"getSeconds"}function Ih(e){return e?"getUTCMilliseconds":"getMilliseconds"}function zj(e){return e?"setUTCFullYear":"setFullYear"}function sE(e){return e?"setUTCMonth":"setMonth"}function lE(e){return e?"setUTCDate":"setDate"}function uE(e){return e?"setUTCHours":"setHours"}function fE(e){return e?"setUTCMinutes":"setMinutes"}function cE(e){return e?"setUTCSeconds":"setSeconds"}function dE(e){return e?"setUTCMilliseconds":"setMilliseconds"}function hE(e){if(!F9(e))return Ee(e)?e:"-";var t=(e+"").split(".");return t[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g,"$1,")+(t.length>1?"."+t[1]:"")}function vE(e,t){return e=(e||"").toLowerCase().replace(/-(.)/g,function(r,n){return n.toUpperCase()}),t&&e&&(e=e.charAt(0).toUpperCase()+e.slice(1)),e}var Oh=_2;function pm(e,t,r){var n="{yyyy}-{MM}-{dd} {HH}:{mm}:{ss}";function i(f){return f&&Gn(f)?f:"-"}function a(f){return!!(f!=null&&!isNaN(f)&&isFinite(f))}var o=t==="time",s=e instanceof Date;if(o||s){var l=o?Ti(e):e;if(isNaN(+l)){if(s)return"-"}else return Ph(l,n,r)}if(t==="ordinal")return kg(e)?i(e):Tt(e)&&a(e)?e+"":"-";var u=Pd(e);return a(u)?hE(u):kg(e)?i(e):typeof e=="boolean"?e+"":"-"}var _S=["a","b","c","d","e","f","g"],np=function(e,t){return"{"+e+(t??"")+"}"};function pE(e,t,r){ye(t)||(t=[t]);var n=t.length;if(!n)return"";for(var i=t[0].$vars||[],a=0;a':'';var o=r.markerId||"markerX";return{renderMode:a,content:"{"+o+"|} ",style:i==="subItem"?{width:4,height:4,borderRadius:2,backgroundColor:n}:{width:10,height:10,borderRadius:5,backgroundColor:n}}}function ku(e,t){return t=t||"transparent",Ee(e)?e:Re(e)&&e.colorStops&&(e.colorStops[0]||{}).color||t}function bS(e,t){if(t==="_blank"||t==="blank"){var r=window.open();r.opener=null,r.location.href=e}else window.open(e,t)}var qc=R,Wj=["left","right","top","bottom","width","height"],Qf=[["width","left","right"],["height","top","bottom"]];function k0(e,t,r,n,i){var a=0,o=0;n==null&&(n=1/0),i==null&&(i=1/0);var s=0;t.eachChild(function(l,u){var f=l.getBoundingRect(),c=t.childAt(u+1),h=c&&c.getBoundingRect(),d,v;if(e==="horizontal"){var p=f.width+(h?-h.x+f.x:0);d=a+p,d>n||l.newline?(a=0,d=p,o+=s+r,s=f.height):s=Math.max(s,f.height)}else{var m=f.height+(h?-h.y+f.y:0);v=o+m,v>i||l.newline?(a+=s+r,o=0,v=m,s=f.width):s=Math.max(s,f.width)}l.newline||(l.x=a,l.y=o,l.markRedraw(),e==="horizontal"?a=d+r:o=v+r)})}var ru=k0;Ot(k0,"vertical");Ot(k0,"horizontal");function Ls(e,t,r){r=Oh(r||0);var n=t.width,i=t.height,a=yt(e.left,n),o=yt(e.top,i),s=yt(e.right,n),l=yt(e.bottom,i),u=yt(e.width,n),f=yt(e.height,i),c=r[2]+r[0],h=r[1]+r[3],d=e.aspect;switch(isNaN(u)&&(u=n-s-h-a),isNaN(f)&&(f=i-l-c-o),d!=null&&(isNaN(u)&&isNaN(f)&&(d>n/i?u=n*.8:f=i*.8),isNaN(u)&&(u=d*f),isNaN(f)&&(f=u/d)),isNaN(a)&&(a=n-s-u-h),isNaN(o)&&(o=i-l-f-c),e.left||e.right){case"center":a=n/2-u/2-r[3];break;case"right":a=n-u-h;break}switch(e.top||e.bottom){case"middle":case"center":o=i/2-f/2-r[0];break;case"bottom":o=i-f-c;break}a=a||0,o=o||0,isNaN(u)&&(u=n-h-a-(s||0)),isNaN(f)&&(f=i-c-o-(l||0));var v=new nt(a+r[3],o+r[0],u,f);return v.margin=r,v}function Nu(e){var t=e.layoutMode||e.constructor.layoutMode;return Re(t)?t:t?{type:t}:null}function Ds(e,t,r){var n=r&&r.ignoreSize;!ye(n)&&(n=[n,n]);var i=o(Qf[0],0),a=o(Qf[1],1);u(Qf[0],e,i),u(Qf[1],e,a);function o(f,c){var h={},d=0,v={},p=0,m=2;if(qc(f,function(_){v[_]=e[_]}),qc(f,function(_){s(t,_)&&(h[_]=v[_]=t[_]),l(h,_)&&d++,l(v,_)&&p++}),n[c])return l(t,f[1])?v[f[2]]=null:l(t,f[2])&&(v[f[1]]=null),v;if(p===m||!d)return v;if(d>=m)return h;for(var g=0;g=0;l--)s=st(s,i[l],!0);n.defaultOption=s}return n.defaultOption},t.prototype.getReferringComponents=function(r,n){var i=r+"Index",a=r+"Id";return lf(this.ecModel,r,{index:this.get(i,!0),id:this.get(a,!0)},n)},t.prototype.getBoxLayoutParams=function(){var r=this;return{left:r.get("left"),top:r.get("top"),right:r.get("right"),bottom:r.get("bottom"),width:r.get("width"),height:r.get("height")}},t.prototype.getZLevelKey=function(){return""},t.prototype.setZLevel=function(r){this.option.zlevel=r},t.protoInitialize=function(){var r=t.prototype;r.type="component",r.id="",r.name="",r.mainType="",r.subType="",r.componentIndex=0}(),t}(sr);tP(Us,sr);Sh(Us);Dj(Us);Ij(Us,Yj);function Yj(e){var t=[];return R(Us.getClassesByMainType(e),function(r){t=t.concat(r.dependencies||r.prototype.dependencies||[])}),t=Ne(t,function(r){return Un(r).main}),e!=="dataset"&&ot(t,"dataset")<=0&&t.unshift("dataset"),t}const Mt=Us;var gE="";typeof navigator<"u"&&(gE=navigator.platform||"");var Vo="rgba(0, 0, 0, 0.2)";const jj={darkMode:"auto",colorBy:"series",color:["#5470c6","#91cc75","#fac858","#ee6666","#73c0de","#3ba272","#fc8452","#9a60b4","#ea7ccc"],gradientColor:["#f6efa6","#d88273","#bf444c"],aria:{decal:{decals:[{color:Vo,dashArrayX:[1,0],dashArrayY:[2,5],symbolSize:1,rotation:Math.PI/6},{color:Vo,symbol:"circle",dashArrayX:[[8,8],[0,8,8,0]],dashArrayY:[6,0],symbolSize:.8},{color:Vo,dashArrayX:[1,0],dashArrayY:[4,3],rotation:-Math.PI/4},{color:Vo,dashArrayX:[[6,6],[0,6,6,0]],dashArrayY:[6,0]},{color:Vo,dashArrayX:[[1,0],[1,6]],dashArrayY:[1,0,6,0],rotation:Math.PI/4},{color:Vo,symbol:"triangle",dashArrayX:[[9,9],[0,9,9,0]],dashArrayY:[7,2],symbolSize:.75}]}},textStyle:{fontFamily:gE.match(/^Win/)?"Microsoft YaHei":"sans-serif",fontSize:12,fontStyle:"normal",fontWeight:"normal"},blendMode:null,stateAnimation:{duration:300,easing:"cubicOut"},animation:"auto",animationDuration:1e3,animationDurationUpdate:500,animationEasing:"cubicInOut",animationEasingUpdate:"cubicInOut",animationThreshold:2e3,progressiveThreshold:3e3,progressive:400,hoverLayerThreshold:3e3,useUTC:!1};var mE=je(["tooltip","label","itemName","itemId","itemGroupId","seriesName"]),hn="original",Rr="arrayRows",Rn="objectRows",ai="keyedColumns",aa="typedArray",yE="unknown",yi="column",Ys="row",Xt={Must:1,Might:2,Not:3},_E=Et();function qj(e){_E(e).datasetMap=je()}function Kj(e,t,r){var n={},i=N0(t);if(!i||!e)return n;var a=[],o=[],s=t.ecModel,l=_E(s).datasetMap,u=i.uid+"_"+r.seriesLayoutBy,f,c;e=e.slice(),R(e,function(p,m){var g=Re(p)?p:e[m]={name:p};g.type==="ordinal"&&f==null&&(f=m,c=v(g)),n[g.name]=[]});var h=l.get(u)||l.set(u,{categoryWayDim:c,valueWayDim:0});R(e,function(p,m){var g=p.name,y=v(p);if(f==null){var _=h.valueWayDim;d(n[g],_,y),d(o,_,y),h.valueWayDim+=y}else if(f===m)d(n[g],0,y),d(a,0,y);else{var _=h.categoryWayDim;d(n[g],_,y),d(o,_,y),h.categoryWayDim+=y}});function d(p,m,g){for(var y=0;yt)return e[n];return e[r-1]}function tq(e,t,r,n,i,a,o){a=a||e;var s=t(a),l=s.paletteIdx||0,u=s.paletteNameMap=s.paletteNameMap||{};if(u.hasOwnProperty(i))return u[i];var f=o==null||!n?r:eq(n,o);if(f=f||r,!(!f||!f.length)){var c=f[l];return i&&(u[i]=c),s.paletteIdx=(l+1)%f.length,c}}function rq(e,t){t(e).paletteIdx=0,t(e).paletteNameMap={}}var Jf,ul,SS,xS="\0_ec_inner",nq=1,F0=function(e){ge(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.init=function(r,n,i,a,o,s){a=a||{},this.option=null,this._theme=new sr(a),this._locale=new sr(o),this._optionManager=s},t.prototype.setOption=function(r,n,i){var a=MS(n);this._optionManager.setOption(r,i,a),this._resetOption(null,a)},t.prototype.resetOption=function(r,n){return this._resetOption(r,MS(n))},t.prototype._resetOption=function(r,n){var i=!1,a=this._optionManager;if(!r||r==="recreate"){var o=a.mountOption(r==="recreate");!this.option||r==="recreate"?SS(this,o):(this.restoreData(),this._mergeOption(o,n)),i=!0}if((r==="timeline"||r==="media")&&this.restoreData(),!r||r==="recreate"||r==="timeline"){var s=a.getTimelineOption(this);s&&(i=!0,this._mergeOption(s,n))}if(!r||r==="recreate"||r==="media"){var l=a.getMediaOption(this);l.length&&R(l,function(u){i=!0,this._mergeOption(u,n)},this)}return i},t.prototype.mergeOption=function(r){this._mergeOption(r,null)},t.prototype._mergeOption=function(r,n){var i=this.option,a=this._componentsMap,o=this._componentsCount,s=[],l=je(),u=n&&n.replaceMergeMainTypeMap;qj(this),R(r,function(c,h){c!=null&&(Mt.hasClass(h)?h&&(s.push(h),l.set(h,!0)):i[h]=i[h]==null?tt(c):st(i[h],c,!0))}),u&&u.each(function(c,h){Mt.hasClass(h)&&!l.get(h)&&(s.push(h),l.set(h,!0))}),Mt.topologicalTravel(s,Mt.getAllClassMainTypes(),f,this);function f(c){var h=Jj(this,c,pr(r[c])),d=a.get(c),v=d?u&&u.get(c)?"replaceMerge":"normalMerge":"replaceAll",p=z9(d,h,v);q9(p,c,Mt),i[c]=null,a.set(c,null),o.set(c,0);var m=[],g=[],y=0,_;R(p,function(b,x){var w=b.existing,S=b.newOption;if(!S)w&&(w.mergeOption({},this),w.optionUpdated({},!1));else{var C=c==="series",M=Mt.getClass(c,b.keyInfo.subType,!C);if(!M)return;if(c==="tooltip"){if(_)return;_=!0}if(w&&w.constructor===M)w.name=b.keyInfo.name,w.mergeOption(S,this),w.optionUpdated(S,!1);else{var A=ue({componentIndex:x},b.keyInfo);w=new M(S,this,this,A),ue(w,A),b.brandNew&&(w.__requireNewView=!0),w.init(S,this,this),w.optionUpdated(null,!0)}}w?(m.push(w.option),g.push(w),y++):(m.push(void 0),g.push(void 0))},this),i[c]=m,a.set(c,g),o.set(c,y),c==="series"&&Jf(this)}this._seriesIndices||Jf(this)},t.prototype.getOption=function(){var r=tt(this.option);return R(r,function(n,i){if(Mt.hasClass(i)){for(var a=pr(n),o=a.length,s=!1,l=o-1;l>=0;l--)a[l]&&!Lu(a[l])?s=!0:(a[l]=null,!s&&o--);a.length=o,r[i]=a}}),delete r[xS],r},t.prototype.getTheme=function(){return this._theme},t.prototype.getLocaleModel=function(){return this._locale},t.prototype.setUpdatePayload=function(r){this._payload=r},t.prototype.getUpdatePayload=function(){return this._payload},t.prototype.getComponent=function(r,n){var i=this._componentsMap.get(r);if(i){var a=i[n||0];if(a)return a;if(n==null){for(var o=0;o=t:r==="max"?e<=t:e===t}function hq(e,t){return e.join(",")===t.join(",")}const vq=uq;var vn=R,Bu=Re,AS=["areaStyle","lineStyle","nodeStyle","linkStyle","chordStyle","label","labelLine"];function ap(e){var t=e&&e.itemStyle;if(t)for(var r=0,n=AS.length;r=0;m--){var g=e[m];if(s||(v=g.data.rawIndexOf(g.stackedByDimension,d)),v>=0){var y=g.data.getByRawIndex(g.stackResultDimension,v);if(l==="all"||l==="positive"&&y>0||l==="negative"&&y<0||l==="samesign"&&h>=0&&y>0||l==="samesign"&&h<=0&&y<0){h=k9(h,y),p=y;break}}}return n[0]=h,n[1]=p,n})})}var kh=function(){function e(t){this.data=t.data||(t.sourceFormat===ai?{}:[]),this.sourceFormat=t.sourceFormat||yE,this.seriesLayoutBy=t.seriesLayoutBy||yi,this.startIndex=t.startIndex||0,this.dimensionsDetectedCount=t.dimensionsDetectedCount,this.metaRawOption=t.metaRawOption;var r=this.dimensionsDefine=t.dimensionsDefine;if(r)for(var n=0;np&&(p=_)}d[0]=v,d[1]=p}},i=function(){return this._data?this._data.length/this._dimSize:0};RS=(t={},t[Rr+"_"+yi]={pure:!0,appendData:a},t[Rr+"_"+Ys]={pure:!0,appendData:function(){throw new Error('Do not support appendData when set seriesLayoutBy: "row".')}},t[Rn]={pure:!0,appendData:a},t[ai]={pure:!0,appendData:function(o){var s=this._data;R(o,function(l,u){for(var f=s[u]||(s[u]=[]),c=0;c<(l||[]).length;c++)f.push(l[c])})}},t[hn]={appendData:a},t[aa]={persistent:!1,pure:!0,appendData:function(o){this._data=o},clean:function(){this._offset+=this.count(),this._data=null}},t);function a(o){for(var s=0;s=0&&(p=o.interpolatedValue[m])}return p!=null?p+"":""})}},e.prototype.getRawValue=function(t,r){return Is(this.getData(r),t)},e.prototype.formatTooltip=function(t,r,n){},e}();function FS(e){var t,r;return Re(e)?e.type&&(r=e):t=e,{text:t,frag:r}}function nu(e){return new Iq(e)}var Iq=function(){function e(t){t=t||{},this._reset=t.reset,this._plan=t.plan,this._count=t.count,this._onDirty=t.onDirty,this._dirty=!0}return e.prototype.perform=function(t){var r=this._upstream,n=t&&t.skip;if(this._dirty&&r){var i=this.context;i.data=i.outputData=r.context.outputData}this.__pipeline&&(this.__pipeline.currentTask=this);var a;this._plan&&!n&&(a=this._plan(this.context));var o=f(this._modBy),s=this._modDataCount||0,l=f(t&&t.modBy),u=t&&t.modDataCount||0;(o!==l||s!==u)&&(a="reset");function f(y){return!(y>=1)&&(y=1),y}var c;(this._dirty||a==="reset")&&(this._dirty=!1,c=this._doReset(n)),this._modBy=l,this._modDataCount=u;var h=t&&t.step;if(r?this._dueEnd=r._outputDueEnd:this._dueEnd=this._count?this._count(this.context):1/0,this._progress){var d=this._dueIndex,v=Math.min(h!=null?this._dueIndex+h:1/0,this._dueEnd);if(!n&&(c||d1&&n>0?s:o}};return a;function o(){return t=e?null:li?-this._resultLT:0},e}(),Rq=function(){function e(){}return e.prototype.getRawData=function(){throw new Error("not supported")},e.prototype.getRawDataItem=function(t){throw new Error("not supported")},e.prototype.cloneRawData=function(){},e.prototype.getDimensionInfo=function(t){},e.prototype.cloneAllDimensionInfo=function(){},e.prototype.count=function(){},e.prototype.retrieveValue=function(t,r){},e.prototype.retrieveValueFromItem=function(t,r){},e.prototype.convertValue=function(t,r){return Kc(t,r)},e}();function kq(e,t){var r=new Rq,n=e.data,i=r.sourceFormat=e.sourceFormat,a=e.startIndex,o="";e.seriesLayoutBy!==yi&&Cr(o);var s=[],l={},u=e.dimensionsDefine;if(u)R(u,function(p,m){var g=p.name,y={index:m,name:g,displayName:p.displayName};if(s.push(y),g!=null){var _="";Es(l,g)&&Cr(_),l[g]=y}});else for(var f=0;f65535?Wq:Gq}function Wo(){return[1/0,-1/0]}function Uq(e){var t=e.constructor;return t===Array?e.slice():new t(e)}function zS(e,t,r,n,i){var a=OE[r||"float"];if(i){var o=e[t],s=o&&o.length;if(s!==n){for(var l=new a(n),u=0;um[1]&&(m[1]=p)}return this._rawCount=this._count=l,{start:s,end:l}},e.prototype._initDataFromProvider=function(t,r,n){for(var i=this._provider,a=this._chunks,o=this._dimensions,s=o.length,l=this._rawExtent,u=Ne(o,function(y){return y.property}),f=0;fg[1]&&(g[1]=m)}}!i.persistent&&i.clean&&i.clean(),this._rawCount=this._count=r,this._extent=[]},e.prototype.count=function(){return this._count},e.prototype.get=function(t,r){if(!(r>=0&&r=0&&r=this._rawCount||t<0)return-1;if(!this._indices)return t;var r=this._indices,n=r[t];if(n!=null&&nt)a=o-1;else return o}return-1},e.prototype.indicesOfNearest=function(t,r,n){var i=this._chunks,a=i[t],o=[];if(!a)return o;n==null&&(n=1/0);for(var s=1/0,l=-1,u=0,f=0,c=this.count();f=0&&l<0)&&(s=v,l=d,u=0),d===l&&(o[u++]=f))}return o.length=u,o},e.prototype.getIndices=function(){var t,r=this._indices;if(r){var n=r.constructor,i=this._count;if(n===Array){t=new n(i);for(var a=0;a=c&&y<=h||isNaN(y))&&(l[u++]=p),p++}v=!0}else if(a===2){for(var m=d[i[0]],_=d[i[1]],b=t[i[1]][0],x=t[i[1]][1],g=0;g=c&&y<=h||isNaN(y))&&(w>=b&&w<=x||isNaN(w))&&(l[u++]=p),p++}v=!0}}if(!v)if(a===1)for(var g=0;g=c&&y<=h||isNaN(y))&&(l[u++]=S)}else for(var g=0;gt[A][1])&&(C=!1)}C&&(l[u++]=r.getRawIndex(g))}return ug[1]&&(g[1]=m)}}}},e.prototype.lttbDownSample=function(t,r){var n=this.clone([t],!0),i=n._chunks,a=i[t],o=this.count(),s=0,l=Math.floor(1/r),u=this.getRawIndex(0),f,c,h,d=new(cl(this._rawCount))(Math.min((Math.ceil(o/l)+2)*2,o));d[s++]=u;for(var v=1;vf&&(f=c,h=b)}P>0&&Pf-v&&(l=f-v,s.length=l);for(var p=0;pc[1]&&(c[1]=g),h[d++]=y}return a._count=d,a._indices=h,a._updateGetRawIdx(),a},e.prototype.each=function(t,r){if(this._count)for(var n=t.length,i=this._chunks,a=0,o=this.count();al&&(l=c)}return o=[s,l],this._extent[t]=o,o},e.prototype.getRawDataItem=function(t){var r=this.getRawIndex(t);if(this._provider.persistent)return this._provider.getItem(r);for(var n=[],i=this._chunks,a=0;a=0?this._indices[t]:-1},e.prototype._updateGetRawIdx=function(){this.getRawIndex=this._indices?this._getRawIdx:this._getRawIdxIdentity},e.internalField=function(){function t(r,n,i,a){return Kc(r[a],this._dimensions[a])}lp={arrayRows:t,objectRows:function(r,n,i,a){return Kc(r[n],this._dimensions[a])},keyedColumns:t,original:function(r,n,i,a){var o=r&&(r.value==null?r:r.value);return Kc(o instanceof Array?o[a]:o,this._dimensions[a])},typedArray:function(r,n,i,a){return r[a]}}}(),e}(),Yq=function(){function e(t){this._sourceList=[],this._storeList=[],this._upstreamSignList=[],this._versionSignBase=0,this._dirty=!0,this._sourceHost=t}return e.prototype.dirty=function(){this._setLocalSource([],[]),this._storeList=[],this._dirty=!0},e.prototype._setLocalSource=function(t,r){this._sourceList=t,this._upstreamSignList=r,this._versionSignBase++,this._versionSignBase>9e10&&(this._versionSignBase=0)},e.prototype._getVersionSign=function(){return this._sourceHost.uid+"_"+this._versionSignBase},e.prototype.prepareSource=function(){this._isDirty()&&(this._createSource(),this._dirty=!1)},e.prototype._createSource=function(){this._setLocalSource([],[]);var t=this._sourceHost,r=this._getUpstreamSourceManagers(),n=!!r.length,i,a;if(ec(t)){var o=t,s=void 0,l=void 0,u=void 0;if(n){var f=r[0];f.prepareSource(),u=f.getSource(),s=u.data,l=u.sourceFormat,a=[f._getVersionSign()]}else s=o.get("data",!0),l=Gr(s)?aa:hn,a=[];var c=this._getSourceMetaRawOption()||{},h=u&&u.metaRawOption||{},d=Ze(c.seriesLayoutBy,h.seriesLayoutBy)||null,v=Ze(c.sourceHeader,h.sourceHeader),p=Ze(c.dimensions,h.dimensions),m=d!==h.seriesLayoutBy||!!v!=!!h.sourceHeader||p;i=m?[gm(s,{seriesLayoutBy:d,sourceHeader:v,dimensions:p},l)]:[]}else{var g=t;if(n){var y=this._applyTransform(r);i=y.sourceList,a=y.upstreamSignList}else{var _=g.get("source",!0);i=[gm(_,this._getSourceMetaRawOption(),null)],a=[]}}this._setLocalSource(i,a)},e.prototype._applyTransform=function(t){var r=this._sourceHost,n=r.get("transform",!0),i=r.get("fromTransformResult",!0);if(i!=null){var a="";t.length!==1&&VS(a)}var o,s=[],l=[];return R(t,function(u){u.prepareSource();var f=u.getSource(i||0),c="";i!=null&&!f&&VS(c),s.push(f),l.push(u._getVersionSign())}),n?o=zq(n,s,{datasetIndex:r.componentIndex}):i!=null&&(o=[Cq(s[0])]),{sourceList:o,upstreamSignList:l}},e.prototype._isDirty=function(){if(this._dirty)return!0;for(var t=this._getUpstreamSourceManagers(),r=0;rr:i+f+d>r){f?(s||l)&&(v?(s||(s=l,l="",u=0,f=u),a.push(s),o.push(f-u),l+=h,u+=d,s="",f=u):(l&&(s+=l,l="",u=0),a.push(s),o.push(f),s=h,f=d)):v?(a.push(l),o.push(u),l=h,u=d):(a.push(h),o.push(d));continue}f+=d,v?(l+=h,u+=d):(l&&(s+=l,l="",u=0),s+=h)}return!a.length&&!s&&(s=e,l="",u=0),l&&(s+=l),s&&(a.push(s),o.push(f)),a.length===1&&(f+=i),{accumWidth:f,lines:a,linesWidths:o}}var rm="__zr_style_"+Math.round(Math.random()*10),fo={shadowBlur:0,shadowOffsetX:0,shadowOffsetY:0,shadowColor:"#000",opacity:1,blend:"source-over"},Ch={style:{shadowBlur:!0,shadowOffsetX:!0,shadowOffsetY:!0,shadowColor:!0,opacity:!0}};fo[rm]=!0;var Iw=["z","z2","invisible"],w7=["invisible"],S7=function(e){ge(t,e);function t(r){return e.call(this,r)||this}return t.prototype._init=function(r){for(var n=Ct(r),i=0;i1e-4){s[0]=e-r,s[1]=t-n,l[0]=e+r,l[1]=t+n;return}if(Wf[0]=Wv(i)*r+e,Wf[1]=Vv(i)*n+t,Gf[0]=Wv(a)*r+e,Gf[1]=Vv(a)*n+t,u(s,Wf,Gf),f(l,Wf,Gf),i=i%Pa,i<0&&(i=i+Pa),a=a%Pa,a<0&&(a=a+Pa),i>a&&!o?a+=Pa:ii&&(Uf[0]=Wv(d)*r+e,Uf[1]=Vv(d)*n+t,u(s,Uf,s),f(l,Uf,l))}var at={M:1,L:2,C:3,Q:4,A:5,Z:6,R:7},Ea=[],La=[],Nn=[],ki=[],Bn=[],Fn=[],Gv=Math.min,Uv=Math.max,Da=Math.cos,Ia=Math.sin,ui=Math.abs,nm=Math.PI,Gi=nm*2,Yv=typeof Float32Array<"u",ol=[];function jv(e){var t=Math.round(e/nm*1e8)/1e8;return t%2*nm}function A7(e,t){var r=jv(e[0]);r<0&&(r+=Gi);var n=r-e[0],i=e[1];i+=n,!t&&i-r>=Gi?i=r+Gi:t&&r-i>=Gi?i=r-Gi:!t&&r>i?i=r+(Gi-jv(r-i)):t&&r0&&(this._ux=ui(n/Td/t)||0,this._uy=ui(n/Td/r)||0)},e.prototype.setDPR=function(t){this.dpr=t},e.prototype.setContext=function(t){this._ctx=t},e.prototype.getContext=function(){return this._ctx},e.prototype.beginPath=function(){return this._ctx&&this._ctx.beginPath(),this.reset(),this},e.prototype.reset=function(){this._saveData&&(this._len=0),this._pathSegLen&&(this._pathSegLen=null,this._pathLen=0),this._version++},e.prototype.moveTo=function(t,r){return this._drawPendingPt(),this.addData(at.M,t,r),this._ctx&&this._ctx.moveTo(t,r),this._x0=t,this._y0=r,this._xi=t,this._yi=r,this},e.prototype.lineTo=function(t,r){var n=ui(t-this._xi),i=ui(r-this._yi),a=n>this._ux||i>this._uy;if(this.addData(at.L,t,r),this._ctx&&a&&this._ctx.lineTo(t,r),a)this._xi=t,this._yi=r,this._pendingPtDist=0;else{var o=n*n+i*i;o>this._pendingPtDist&&(this._pendingPtX=t,this._pendingPtY=r,this._pendingPtDist=o)}return this},e.prototype.bezierCurveTo=function(t,r,n,i,a,o){return this._drawPendingPt(),this.addData(at.C,t,r,n,i,a,o),this._ctx&&this._ctx.bezierCurveTo(t,r,n,i,a,o),this._xi=a,this._yi=o,this},e.prototype.quadraticCurveTo=function(t,r,n,i){return this._drawPendingPt(),this.addData(at.Q,t,r,n,i),this._ctx&&this._ctx.quadraticCurveTo(t,r,n,i),this._xi=n,this._yi=i,this},e.prototype.arc=function(t,r,n,i,a,o){this._drawPendingPt(),ol[0]=i,ol[1]=a,A7(ol,o),i=ol[0],a=ol[1];var s=a-i;return this.addData(at.A,t,r,n,n,i,s,0,o?0:1),this._ctx&&this._ctx.arc(t,r,n,i,a,o),this._xi=Da(a)*n+t,this._yi=Ia(a)*n+r,this},e.prototype.arcTo=function(t,r,n,i,a){return this._drawPendingPt(),this._ctx&&this._ctx.arcTo(t,r,n,i,a),this},e.prototype.rect=function(t,r,n,i){return this._drawPendingPt(),this._ctx&&this._ctx.rect(t,r,n,i),this.addData(at.R,t,r,n,i),this},e.prototype.closePath=function(){this._drawPendingPt(),this.addData(at.Z);var t=this._ctx,r=this._x0,n=this._y0;return t&&t.closePath(),this._xi=r,this._yi=n,this},e.prototype.fill=function(t){t&&t.fill(),this.toStatic()},e.prototype.stroke=function(t){t&&t.stroke(),this.toStatic()},e.prototype.len=function(){return this._len},e.prototype.setData=function(t){var r=t.length;!(this.data&&this.data.length===r)&&Yv&&(this.data=new Float32Array(r));for(var n=0;nf.length&&(this._expandData(),f=this.data);for(var c=0;c0&&(this._ctx&&this._ctx.lineTo(this._pendingPtX,this._pendingPtY),this._pendingPtDist=0)},e.prototype._expandData=function(){if(!(this.data instanceof Array)){for(var t=[],r=0;r11&&(this.data=new Float32Array(t)))}},e.prototype.getBoundingRect=function(){Nn[0]=Nn[1]=Bn[0]=Bn[1]=Number.MAX_VALUE,ki[0]=ki[1]=Fn[0]=Fn[1]=-Number.MAX_VALUE;var t=this.data,r=0,n=0,i=0,a=0,o;for(o=0;on||ui(_)>i||h===r-1)&&(p=Math.sqrt(y*y+_*_),a=m,o=g);break}case at.C:{var b=t[h++],x=t[h++],m=t[h++],g=t[h++],w=t[h++],S=t[h++];p=XU(a,o,b,x,m,g,w,S,10),a=w,o=S;break}case at.Q:{var b=t[h++],x=t[h++],m=t[h++],g=t[h++];p=QU(a,o,b,x,m,g,10),a=m,o=g;break}case at.A:var C=t[h++],M=t[h++],A=t[h++],P=t[h++],E=t[h++],L=t[h++],O=L+E;h+=1,t[h++],v&&(s=Da(E)*A+C,l=Ia(E)*P+M),p=Uv(A,P)*Gv(Gi,Math.abs(L)),a=Da(O)*A+C,o=Ia(O)*P+M;break;case at.R:{s=a=t[h++],l=o=t[h++];var N=t[h++],H=t[h++];p=N*2+H*2;break}case at.Z:{var y=s-a,_=l-o;p=Math.sqrt(y*y+_*_),a=s,o=l;break}}p>=0&&(u[c++]=p,f+=p)}return this._pathLen=f,f},e.prototype.rebuildPath=function(t,r){var n=this.data,i=this._ux,a=this._uy,o=this._len,s,l,u,f,c,h,d=r<1,v,p,m=0,g=0,y,_=0,b,x;if(!(d&&(this._pathSegLen||this._calculateLength(),v=this._pathSegLen,p=this._pathLen,y=r*p,!y)))e:for(var w=0;w0&&(t.lineTo(b,x),_=0),S){case at.M:s=u=n[w++],l=f=n[w++],t.moveTo(u,f);break;case at.L:{c=n[w++],h=n[w++];var M=ui(c-u),A=ui(h-f);if(M>i||A>a){if(d){var P=v[g++];if(m+P>y){var E=(y-m)/P;t.lineTo(u*(1-E)+c*E,f*(1-E)+h*E);break e}m+=P}t.lineTo(c,h),u=c,f=h,_=0}else{var L=M*M+A*A;L>_&&(b=c,x=h,_=L)}break}case at.C:{var O=n[w++],N=n[w++],H=n[w++],V=n[w++],U=n[w++],F=n[w++];if(d){var P=v[g++];if(m+P>y){var E=(y-m)/P;Sd(u,O,H,U,E,Ea),Sd(f,N,V,F,E,La),t.bezierCurveTo(Ea[1],La[1],Ea[2],La[2],Ea[3],La[3]);break e}m+=P}t.bezierCurveTo(O,N,H,V,U,F),u=U,f=F;break}case at.Q:{var O=n[w++],N=n[w++],H=n[w++],V=n[w++];if(d){var P=v[g++];if(m+P>y){var E=(y-m)/P;xd(u,O,H,E,Ea),xd(f,N,V,E,La),t.quadraticCurveTo(Ea[1],La[1],Ea[2],La[2]);break e}m+=P}t.quadraticCurveTo(O,N,H,V),u=H,f=V;break}case at.A:var z=n[w++],ee=n[w++],J=n[w++],me=n[w++],we=n[w++],$e=n[w++],Ie=n[w++],B=!n[w++],Y=J>me?J:me,K=ui(J-me)>.001,Q=we+$e,oe=!1;if(d){var P=v[g++];m+P>y&&(Q=we+$e*(y-m)/P,oe=!0),m+=P}if(K&&t.ellipse?t.ellipse(z,ee,J,me,Ie,we,Q,B):t.arc(z,ee,Y,we,Q,B),oe)break e;C&&(s=Da(we)*J+z,l=Ia(we)*me+ee),u=Da(Q)*J+z,f=Ia(Q)*me+ee;break;case at.R:s=u=n[w],l=f=n[w+1],c=n[w++],h=n[w++];var pe=n[w++],D=n[w++];if(d){var P=v[g++];if(m+P>y){var I=y-m;t.moveTo(c,h),t.lineTo(c+Gv(I,pe),h),I-=pe,I>0&&t.lineTo(c+pe,h+Gv(I,D)),I-=D,I>0&&t.lineTo(c+Uv(pe-I,0),h+D),I-=pe,I>0&&t.lineTo(c,h+Uv(D-I,0));break e}m+=P}t.rect(c,h,pe,D);break;case at.Z:if(d){var P=v[g++];if(m+P>y){var E=(y-m)/P;t.lineTo(u*(1-E)+s*E,f*(1-E)+l*E);break e}m+=P}t.closePath(),u=s,f=l}}},e.prototype.clone=function(){var t=new e,r=this.data;return t.data=r.slice?r.slice():Array.prototype.slice.call(r),t._len=this._len,t},e.CMD=at,e.initDefaultProps=function(){var t=e.prototype;t._saveData=!0,t._ux=0,t._uy=0,t._pendingPtDist=0,t._version=0}(),e}();function Ho(e,t,r,n,i,a,o){if(i===0)return!1;var s=i,l=0,u=e;if(o>t+s&&o>n+s||oe+s&&a>r+s||at+c&&f>n+c&&f>a+c&&f>s+c||fe+c&&u>r+c&&u>i+c&&u>o+c||ut+u&&l>n+u&&l>a+u||le+u&&s>r+u&&s>i+u||sr||f+ui&&(i+=sl);var h=Math.atan2(l,s);return h<0&&(h+=sl),h>=n&&h<=i||h+sl>=n&&h+sl<=i}function Oa(e,t,r,n,i,a){if(a>t&&a>n||ai?s:0}var Ni=bo.CMD,Ra=Math.PI*2,D7=1e-4;function I7(e,t){return Math.abs(e-t)t&&u>n&&u>a&&u>s||u1&&O7(),d=Zt(t,n,a,s,en[0]),h>1&&(v=Zt(t,n,a,s,en[1]))),h===2?mt&&s>n&&s>a||s=0&&u<=1){for(var f=0,c=ir(t,n,a,u),h=0;hr||s<-r)return 0;var l=Math.sqrt(r*r-s*s);cr[0]=-l,cr[1]=l;var u=Math.abs(n-i);if(u<1e-4)return 0;if(u>=Ra-1e-4){n=0,i=Ra;var f=a?1:-1;return o>=cr[0]+e&&o<=cr[1]+e?f:0}if(n>i){var c=n;n=i,i=c}n<0&&(n+=Ra,i+=Ra);for(var h=0,d=0;d<2;d++){var v=cr[d];if(v+e>o){var p=Math.atan2(s,v),f=a?1:-1;p<0&&(p=Ra+p),(p>=n&&p<=i||p+Ra>=n&&p+Ra<=i)&&(p>Math.PI/2&&p1&&(r||(s+=Oa(l,u,f,c,n,i))),m&&(l=a[v],u=a[v+1],f=l,c=u),p){case Ni.M:f=a[v++],c=a[v++],l=f,u=c;break;case Ni.L:if(r){if(Ho(l,u,a[v],a[v+1],t,n,i))return!0}else s+=Oa(l,u,a[v],a[v+1],n,i)||0;l=a[v++],u=a[v++];break;case Ni.C:if(r){if(P7(l,u,a[v++],a[v++],a[v++],a[v++],a[v],a[v+1],t,n,i))return!0}else s+=R7(l,u,a[v++],a[v++],a[v++],a[v++],a[v],a[v+1],n,i)||0;l=a[v++],u=a[v++];break;case Ni.Q:if(r){if(E7(l,u,a[v++],a[v++],a[v],a[v+1],t,n,i))return!0}else s+=k7(l,u,a[v++],a[v++],a[v],a[v+1],n,i)||0;l=a[v++],u=a[v++];break;case Ni.A:var g=a[v++],y=a[v++],_=a[v++],b=a[v++],x=a[v++],w=a[v++];v+=1;var S=!!(1-a[v++]);h=Math.cos(x)*_+g,d=Math.sin(x)*b+y,m?(f=h,c=d):s+=Oa(l,u,h,d,n,i);var C=(n-g)*b/_+g;if(r){if(L7(g,y,b,x,x+w,S,t,C,i))return!0}else s+=N7(g,y,b,x,x+w,S,C,i);l=Math.cos(x+w)*_+g,u=Math.sin(x+w)*b+y;break;case Ni.R:f=l=a[v++],c=u=a[v++];var M=a[v++],A=a[v++];if(h=f+M,d=c+A,r){if(Ho(f,c,h,c,t,n,i)||Ho(h,c,h,d,t,n,i)||Ho(h,d,f,d,t,n,i)||Ho(f,d,f,c,t,n,i))return!0}else s+=Oa(h,c,h,d,n,i),s+=Oa(f,d,f,c,n,i);break;case Ni.Z:if(r){if(Ho(l,u,f,c,t,n,i))return!0}else s+=Oa(l,u,f,c,n,i);l=f,u=c;break}}return!r&&!I7(u,c)&&(s+=Oa(l,u,f,c,n,i)||0),s!==0}function B7(e,t,r){return oP(e,0,!1,t,r)}function F7(e,t,r,n){return oP(e,t,!0,r,n)}var sP=ht({fill:"#000",stroke:null,strokePercent:1,fillOpacity:1,strokeOpacity:1,lineDashOffset:0,lineWidth:1,lineCap:"butt",miterLimit:10,strokeNoScale:!1,strokeFirst:!1},fo),$7={style:ht({fill:!0,stroke:!0,strokePercent:!0,fillOpacity:!0,strokeOpacity:!0,lineDashOffset:!0,lineWidth:!0,miterLimit:!0},Ch.style)},qv=Eu.concat(["invisible","culling","z","z2","zlevel","parent"]),H7=function(e){ge(t,e);function t(r){return e.call(this,r)||this}return t.prototype.update=function(){var r=this;e.prototype.update.call(this);var n=this.style;if(n.decal){var i=this._decalEl=this._decalEl||new t;i.buildPath===t.prototype.buildPath&&(i.buildPath=function(l){r.buildPath(l,r.shape)}),i.silent=!0;var a=i.style;for(var o in n)a[o]!==n[o]&&(a[o]=n[o]);a.fill=n.fill?n.decal:null,a.decal=null,a.shadowColor=null,n.strokeFirst&&(a.stroke=null);for(var s=0;s.5?Zg:n>.2?_9:Qg}else if(r)return Qg}return Zg},t.prototype.getInsideTextStroke=function(r){var n=this.style.fill;if(Ee(n)){var i=this.__zr,a=!!(i&&i.isDarkMode()),o=Cd(r,0)0))},t.prototype.hasFill=function(){var r=this.style,n=r.fill;return n!=null&&n!=="none"},t.prototype.getBoundingRect=function(){var r=this._rect,n=this.style,i=!r;if(i){var a=!1;this.path||(a=!0,this.createPathProxy());var o=this.path;(a||this.__dirty&Qo)&&(o.beginPath(),this.buildPath(o,this.shape,!1),this.pathUpdated()),r=o.getBoundingRect()}if(this._rect=r,this.hasStroke()&&this.path&&this.path.len()>0){var s=this._rectStroke||(this._rectStroke=r.clone());if(this.__dirty||i){s.copy(r);var l=n.strokeNoScale?this.getLineScale():1,u=n.lineWidth;if(!this.hasFill()){var f=this.strokeContainThreshold;u=Math.max(u,f??4)}l>1e-10&&(s.width+=u/l,s.height+=u/l,s.x-=u/l/2,s.y-=u/l/2)}return s}return r},t.prototype.contain=function(r,n){var i=this.transformCoordToLocal(r,n),a=this.getBoundingRect(),o=this.style;if(r=i[0],n=i[1],a.contain(r,n)){var s=this.path;if(this.hasStroke()){var l=o.lineWidth,u=o.strokeNoScale?this.getLineScale():1;if(u>1e-10&&(this.hasFill()||(l=Math.max(l,this.strokeContainThreshold)),F7(s,l/u,r,n)))return!0}if(this.hasFill())return B7(s,r,n)}return!1},t.prototype.dirtyShape=function(){this.__dirty|=Qo,this._rect&&(this._rect=null),this._decalEl&&this._decalEl.dirtyShape(),this.markRedraw()},t.prototype.dirty=function(){this.dirtyStyle(),this.dirtyShape()},t.prototype.animateShape=function(r){return this.animate("shape",r)},t.prototype.updateDuringAnimation=function(r){r==="style"?this.dirtyStyle():r==="shape"?this.dirtyShape():this.markRedraw()},t.prototype.attrKV=function(r,n){r==="shape"?this.setShape(n):e.prototype.attrKV.call(this,r,n)},t.prototype.setShape=function(r,n){var i=this.shape;return i||(i=this.shape={}),typeof r=="string"?i[r]=n:ue(i,r),this.dirtyShape(),this},t.prototype.shapeChanged=function(){return!!(this.__dirty&Qo)},t.prototype.createStyle=function(r){return _h(sP,r)},t.prototype._innerSaveToNormal=function(r){e.prototype._innerSaveToNormal.call(this,r);var n=this._normalState;r.shape&&!n.shape&&(n.shape=ue({},this.shape))},t.prototype._applyStateObj=function(r,n,i,a,o,s){e.prototype._applyStateObj.call(this,r,n,i,a,o,s);var l=!(n&&a),u;if(n&&n.shape?o?a?u=n.shape:(u=ue({},i.shape),ue(u,n.shape)):(u=ue({},a?this.shape:i.shape),ue(u,n.shape)):l&&(u=i.shape),u)if(o){this.shape=ue({},this.shape);for(var f={},c=Ct(u),h=0;h0},t.prototype.hasFill=function(){var r=this.style,n=r.fill;return n!=null&&n!=="none"},t.prototype.createStyle=function(r){return _h(z7,r)},t.prototype.setBoundingRect=function(r){this._rect=r},t.prototype.getBoundingRect=function(){var r=this.style;if(!this._rect){var n=r.text;n!=null?n+="":n="";var i=u0(n,r.font,r.textAlign,r.textBaseline);if(i.x+=r.x||0,i.y+=r.y||0,this.hasStroke()){var a=r.lineWidth;i.x-=a/2,i.y-=a/2,i.width+=a,i.height+=a}this._rect=i}return this._rect},t.initDefaultProps=function(){var r=t.prototype;r.dirtyRectTolerance=10}(),t}(uf);lP.prototype.type="tspan";const im=lP;var V7=ht({x:0,y:0},fo),W7={style:ht({x:!0,y:!0,width:!0,height:!0,sx:!0,sy:!0,sWidth:!0,sHeight:!0},Ch.style)};function G7(e){return!!(e&&typeof e!="string"&&e.width&&e.height)}var uP=function(e){ge(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.createStyle=function(r){return _h(V7,r)},t.prototype._getSize=function(r){var n=this.style,i=n[r];if(i!=null)return i;var a=G7(n.image)?n.image:this.__image;if(!a)return 0;var o=r==="width"?"height":"width",s=n[o];return s==null?a[r]:a[r]/a[o]*s},t.prototype.getWidth=function(){return this._getSize("width")},t.prototype.getHeight=function(){return this._getSize("height")},t.prototype.getAnimationStyleProps=function(){return W7},t.prototype.getBoundingRect=function(){var r=this.style;return this._rect||(this._rect=new nt(r.x||0,r.y||0,this.getWidth(),this.getHeight())),this._rect},t}(uf);uP.prototype.type="image";const Ys=uP;function U7(e,t){var r=t.x,n=t.y,i=t.width,a=t.height,o=t.r,s,l,u,f;i<0&&(r=r+i,i=-i),a<0&&(n=n+a,a=-a),typeof o=="number"?s=l=u=f=o:o instanceof Array?o.length===1?s=l=u=f=o[0]:o.length===2?(s=u=o[0],l=f=o[1]):o.length===3?(s=o[0],l=f=o[1],u=o[2]):(s=o[0],l=o[1],u=o[2],f=o[3]):s=l=u=f=0;var c;s+l>i&&(c=s+l,s*=i/c,l*=i/c),u+f>i&&(c=u+f,u*=i/c,f*=i/c),l+u>a&&(c=l+u,l*=a/c,u*=a/c),s+f>a&&(c=s+f,s*=a/c,f*=a/c),e.moveTo(r+s,n),e.lineTo(r+i-l,n),l!==0&&e.arc(r+i-l,n+l,l,-Math.PI/2,0),e.lineTo(r+i,n+a-u),u!==0&&e.arc(r+i-u,n+a-u,u,0,Math.PI/2),e.lineTo(r+f,n+a),f!==0&&e.arc(r+f,n+a-f,f,Math.PI/2,Math.PI),e.lineTo(r,n+s),s!==0&&e.arc(r+s,n+s,s,Math.PI,Math.PI*1.5)}var is=Math.round;function fP(e,t,r){if(t){var n=t.x1,i=t.x2,a=t.y1,o=t.y2;e.x1=n,e.x2=i,e.y1=a,e.y2=o;var s=r&&r.lineWidth;return s&&(is(n*2)===is(i*2)&&(e.x1=e.x2=to(n,s,!0)),is(a*2)===is(o*2)&&(e.y1=e.y2=to(a,s,!0))),e}}function cP(e,t,r){if(t){var n=t.x,i=t.y,a=t.width,o=t.height;e.x=n,e.y=i,e.width=a,e.height=o;var s=r&&r.lineWidth;return s&&(e.x=to(n,s,!0),e.y=to(i,s,!0),e.width=Math.max(to(n+a,s,!1)-e.x,a===0?0:1),e.height=Math.max(to(i+o,s,!1)-e.y,o===0?0:1)),e}}function to(e,t,r){if(!t)return e;var n=is(e*2);return(n+is(t))%2===0?n/2:(n+(r?1:-1))/2}var Y7=function(){function e(){this.x=0,this.y=0,this.width=0,this.height=0}return e}(),j7={},dP=function(e){ge(t,e);function t(r){return e.call(this,r)||this}return t.prototype.getDefaultShape=function(){return new Y7},t.prototype.buildPath=function(r,n){var i,a,o,s;if(this.subPixelOptimize){var l=cP(j7,n,this.style);i=l.x,a=l.y,o=l.width,s=l.height,l.r=n.r,n=l}else i=n.x,a=n.y,o=n.width,s=n.height;n.r?U7(r,n):r.rect(i,a,o,s)},t.prototype.isZeroArea=function(){return!this.shape.width||!this.shape.height},t}(vt);dP.prototype.type="rect";const Gt=dP;var Bw={fill:"#000"},Fw=2,q7={style:ht({fill:!0,stroke:!0,fillOpacity:!0,strokeOpacity:!0,lineWidth:!0,fontSize:!0,lineHeight:!0,width:!0,height:!0,textShadowColor:!0,textShadowBlur:!0,textShadowOffsetX:!0,textShadowOffsetY:!0,backgroundColor:!0,padding:!0,borderColor:!0,borderWidth:!0,borderRadius:!0},Ch.style)},hP=function(e){ge(t,e);function t(r){var n=e.call(this)||this;return n.type="text",n._children=[],n._defaultStyle=Bw,n.attr(r),n}return t.prototype.childrenRef=function(){return this._children},t.prototype.update=function(){e.prototype.update.call(this),this.styleChanged()&&this._updateSubTexts();for(var r=0;r0,E=r.width!=null&&(r.overflow==="truncate"||r.overflow==="break"||r.overflow==="breakAll"),L=o.calculatedLineHeight,O=0;O=0&&(O=w[L],O.align==="right");)this._placeToken(O,r,C,g,E,"right",_),M-=O.width,E-=O.width,L--;for(P+=(a-(P-m)-(y-E)-M)/2;A<=L;)O=w[A],this._placeToken(O,r,C,g,P+O.width/2,"center",_),P+=O.width,A++;g+=C}},t.prototype._placeToken=function(r,n,i,a,o,s,l){var u=n.rich[r.styleName]||{};u.text=r.text;var f=r.verticalAlign,c=a+i/2;f==="top"?c=a+r.height/2:f==="bottom"&&(c=a+i-r.height/2);var h=!r.isLineHolder&&Kv(u);h&&this._renderBackground(u,n,s==="right"?o-r.width:s==="center"?o-r.width/2:o,c-r.height/2,r.width,r.height);var d=!!u.backgroundColor,v=r.textPadding;v&&(o=Gw(o,s,v),c-=r.height/2-v[0]-r.innerHeight/2);var p=this._getOrCreateChild(im),m=p.createStyle();p.useStyle(m);var g=this._defaultStyle,y=!1,_=0,b=Ww("fill"in u?u.fill:"fill"in n?n.fill:(y=!0,g.fill)),x=Vw("stroke"in u?u.stroke:"stroke"in n?n.stroke:!d&&!l&&(!g.autoStroke||y)?(_=Fw,g.stroke):null),w=u.textShadowBlur>0||n.textShadowBlur>0;m.text=r.text,m.x=o,m.y=c,w&&(m.shadowBlur=u.textShadowBlur||n.textShadowBlur||0,m.shadowColor=u.textShadowColor||n.textShadowColor||"transparent",m.shadowOffsetX=u.textShadowOffsetX||n.textShadowOffsetX||0,m.shadowOffsetY=u.textShadowOffsetY||n.textShadowOffsetY||0),m.textAlign=s,m.textBaseline="middle",m.font=r.font||_o,m.opacity=Yl(u.opacity,n.opacity,1),Hw(m,u),x&&(m.lineWidth=Yl(u.lineWidth,n.lineWidth,_),m.lineDash=Ze(u.lineDash,n.lineDash),m.lineDashOffset=n.lineDashOffset||0,m.stroke=x),b&&(m.fill=b);var S=r.contentWidth,C=r.contentHeight;p.setBoundingRect(new nt(Ml(m.x,S,m.textAlign),Jo(m.y,C,m.textBaseline),S,C))},t.prototype._renderBackground=function(r,n,i,a,o,s){var l=r.backgroundColor,u=r.borderWidth,f=r.borderColor,c=l&&l.image,h=l&&!c,d=r.borderRadius,v=this,p,m;if(h||r.lineHeight||u&&f){p=this._getOrCreateChild(Gt),p.useStyle(p.createStyle()),p.style.fill=null;var g=p.shape;g.x=i,g.y=a,g.width=o,g.height=s,g.r=d,p.dirtyShape()}if(h){var y=p.style;y.fill=l||null,y.fillOpacity=Ze(r.fillOpacity,1)}else if(c){m=this._getOrCreateChild(Ys),m.onload=function(){v.dirtyStyle()};var _=m.style;_.image=l.image,_.x=i,_.y=a,_.width=o,_.height=s}if(u&&f){var y=p.style;y.lineWidth=u,y.stroke=f,y.strokeOpacity=Ze(r.strokeOpacity,1),y.lineDash=r.borderDash,y.lineDashOffset=r.borderDashOffset||0,p.strokeContainThreshold=0,p.hasFill()&&p.hasStroke()&&(y.strokeFirst=!0,y.lineWidth*=2)}var b=(p||m).style;b.shadowBlur=r.shadowBlur||0,b.shadowColor=r.shadowColor||"transparent",b.shadowOffsetX=r.shadowOffsetX||0,b.shadowOffsetY=r.shadowOffsetY||0,b.opacity=Yl(r.opacity,n.opacity,1)},t.makeFont=function(r){var n="";return Q7(r)&&(n=[r.fontStyle,r.fontWeight,Z7(r.fontSize),r.fontFamily||"sans-serif"].join(" ")),n&&Gn(n)||r.textFont||r.font},t}(uf),K7={left:!0,right:1,center:1},X7={top:1,bottom:1,middle:1},$w=["fontStyle","fontWeight","fontSize","fontFamily"];function Z7(e){return typeof e=="string"&&(e.indexOf("px")!==-1||e.indexOf("rem")!==-1||e.indexOf("em")!==-1)?e:isNaN(+e)?Jy+"px":e+"px"}function Hw(e,t){for(var r=0;r<$w.length;r++){var n=$w[r],i=t[n];i!=null&&(e[n]=i)}}function Q7(e){return e.fontSize!=null||e.fontFamily||e.fontWeight}function J7(e){return zw(e),R(e.rich,zw),e}function zw(e){if(e){e.font=hP.makeFont(e);var t=e.align;t==="middle"&&(t="center"),e.align=t==null||K7[t]?t:"left";var r=e.verticalAlign;r==="center"&&(r="middle"),e.verticalAlign=r==null||X7[r]?r:"top";var n=e.padding;n&&(e.padding=_2(e.padding))}}function Vw(e,t){return e==null||t<=0||e==="transparent"||e==="none"?null:e.image||e.colorStops?"#000":e}function Ww(e){return e==null||e==="none"?null:e.image||e.colorStops?"#000":e}function Gw(e,t,r){return t==="right"?e-r[1]:t==="center"?e+r[3]/2-r[1]/2:e+r[3]}function Uw(e){var t=e.text;return t!=null&&(t+=""),t}function Kv(e){return!!(e.backgroundColor||e.lineHeight||e.borderWidth&&e.borderColor)}const mr=hP;var dt=Et(),eY=function(e,t,r,n){if(n){var i=dt(n);i.dataIndex=r,i.dataType=t,i.seriesIndex=e,n.type==="group"&&n.traverse(function(a){var o=dt(a);o.seriesIndex=e,o.dataIndex=r,o.dataType=t})}},Yw=1,jw={},vP=Et(),g0=Et(),pP=0,m0=1,y0=2,Jn=["emphasis","blur","select"],Ed=["normal","emphasis","blur","select"],tY=10,rY=9,co="highlight",Uc="downplay",Ql="select",Yc="unselect",Jl="toggleSelect";function zo(e){return e!=null&&e!=="none"}var qw=new af(100);function Kw(e){if(Ee(e)){var t=qw.get(e);return t||(t=vw(e,-.1),qw.put(e,t)),t}else if(yh(e)){var r=ue({},e);return r.colorStops=Ne(e.colorStops,function(n){return{offset:n.offset,color:vw(n.color,-.1)}}),r}return e}function Th(e,t,r){e.onHoverStateChange&&(e.hoverState||0)!==r&&e.onHoverStateChange(t),e.hoverState=r}function gP(e){Th(e,"emphasis",y0)}function mP(e){e.hoverState===y0&&Th(e,"normal",pP)}function _0(e){Th(e,"blur",m0)}function yP(e){e.hoverState===m0&&Th(e,"normal",pP)}function nY(e){e.selected=!0}function iY(e){e.selected=!1}function Xw(e,t,r){t(e,r)}function Li(e,t,r){Xw(e,t,r),e.isGroup&&e.traverse(function(n){Xw(n,t,r)})}function aY(e,t,r,n){for(var i=e.style,a={},o=0;o=0,a=!1;if(e instanceof vt){var o=vP(e),s=i&&o.selectFill||o.normalFill,l=i&&o.selectStroke||o.normalStroke;if(zo(s)||zo(l)){n=n||{};var u=n.style||{};u.fill==="inherit"?(a=!0,n=ue({},n),u=ue({},u),u.fill=s):!zo(u.fill)&&zo(s)?(a=!0,n=ue({},n),u=ue({},u),u.fill=Kw(s)):!zo(u.stroke)&&zo(l)&&(a||(n=ue({},n),u=ue({},u)),u.stroke=Kw(l)),n.style=u}}if(n&&n.z2==null){a||(n=ue({},n));var f=e.z2EmphasisLift;n.z2=e.z2+(f??tY)}return n}function sY(e,t,r){if(r&&r.z2==null){r=ue({},r);var n=e.z2SelectLift;r.z2=e.z2+(n??rY)}return r}function lY(e,t,r){var n=ot(e.currentStates,t)>=0,i=e.style.opacity,a=n?null:aY(e,["opacity"],t,{opacity:1});r=r||{};var o=r.style||{};return o.opacity==null&&(r=ue({},r),o=ue({opacity:n?i:a.opacity*.1},o),r.style=o),r}function Xv(e,t){var r=this.states[e];if(this.style){if(e==="emphasis")return oY(this,e,t,r);if(e==="blur")return lY(this,e,r);if(e==="select")return sY(this,e,r)}return r}function uY(e){e.stateProxy=Xv;var t=e.getTextContent(),r=e.getTextGuideLine();t&&(t.stateProxy=Xv),r&&(r.stateProxy=Xv)}function Zw(e,t){!SP(e,t)&&!e.__highByOuter&&Li(e,gP)}function Qw(e,t){!SP(e,t)&&!e.__highByOuter&&Li(e,mP)}function am(e,t){e.__highByOuter|=1<<(t||0),Li(e,gP)}function om(e,t){!(e.__highByOuter&=~(1<<(t||0)))&&Li(e,mP)}function fY(e){Li(e,_0)}function _P(e){Li(e,yP)}function bP(e){Li(e,nY)}function wP(e){Li(e,iY)}function SP(e,t){return e.__highDownSilentOnTouch&&t.zrByTouch}function xP(e){var t=e.getModel(),r=[],n=[];t.eachComponent(function(i,a){var o=g0(a),s=i==="series",l=s?e.getViewOfSeriesModel(a):e.getViewOfComponentModel(a);!s&&n.push(l),o.isBlured&&(l.group.traverse(function(u){yP(u)}),s&&r.push(a)),o.isBlured=!1}),R(n,function(i){i&&i.toggleBlurSeries&&i.toggleBlurSeries(r,!1,t)})}function sm(e,t,r,n){var i=n.getModel();r=r||"coordinateSystem";function a(u,f){for(var c=0;c0){var s={dataIndex:o,seriesIndex:r.seriesIndex};a!=null&&(s.dataType=a),t.push(s)}})}),t}function um(e,t,r){MP(e,!0),Li(e,uY),mY(e,t,r)}function gY(e){MP(e,!1)}function CP(e,t,r,n){n?gY(e):um(e,t,r)}function mY(e,t,r){var n=dt(e);t!=null?(n.focus=t,n.blurScope=r):n.focus&&(n.focus=null)}var eS=["emphasis","blur","select"],yY={itemStyle:"getItemStyle",lineStyle:"getLineStyle",areaStyle:"getAreaStyle"};function TP(e,t,r,n){r=r||"itemStyle";for(var i=0;i1&&(o*=Zv(v),s*=Zv(v));var p=(i===a?-1:1)*Zv((o*o*(s*s)-o*o*(d*d)-s*s*(h*h))/(o*o*(d*d)+s*s*(h*h)))||0,m=p*o*d/s,g=p*-s*h/o,y=(e+r)/2+jf(c)*m-Yf(c)*g,_=(t+n)/2+Yf(c)*m+jf(c)*g,b=iS([1,0],[(h-m)/o,(d-g)/s]),x=[(h-m)/o,(d-g)/s],w=[(-1*h-m)/o,(-1*d-g)/s],S=iS(x,w);if(dm(x,w)<=-1&&(S=ll),dm(x,w)>=1&&(S=0),S<0){var C=Math.round(S/ll*1e6)/1e6;S=ll*2+C%2*ll}f.addData(u,y,_,o,s,b,S,c,a)}var CY=/([mlvhzcqtsa])([^mlvhzcqtsa]*)/ig,TY=/-?([0-9]*\.)?[0-9]+([eE]-?[0-9]+)?/g;function MY(e){var t=new bo;if(!e)return t;var r=0,n=0,i=r,a=n,o,s=bo.CMD,l=e.match(CY);if(!l)return t;for(var u=0;uO*O+N*N&&(C=A,M=P),{cx:C,cy:M,x0:-f,y0:-c,x1:C*(i/x-1),y1:M*(i/x-1)}}function RY(e){var t;if(ye(e)){var r=e.length;if(!r)return e;r===1?t=[e[0],e[0],0,0]:r===2?t=[e[0],e[0],e[1],e[1]]:r===3?t=e.concat(e[2]):t=e}else t=[e,e,e,e];return t}function kY(e,t){var r,n=Al(t.r,0),i=Al(t.r0||0,0),a=n>0,o=i>0;if(!(!a&&!o)){if(a||(n=i,i=0),i>n){var s=n;n=i,i=s}var l=t.startAngle,u=t.endAngle;if(!(isNaN(l)||isNaN(u))){var f=t.cx,c=t.cy,h=!!t.clockwise,d=oS(u-l),v=d>Qv&&d%Qv;if(v>mn&&(d=v),!(n>mn))e.moveTo(f,c);else if(d>Qv-mn)e.moveTo(f+n*Wo(l),c+n*ka(l)),e.arc(f,c,n,l,u,!h),i>mn&&(e.moveTo(f+i*Wo(u),c+i*ka(u)),e.arc(f,c,i,u,l,h));else{var p=void 0,m=void 0,g=void 0,y=void 0,_=void 0,b=void 0,x=void 0,w=void 0,S=void 0,C=void 0,M=void 0,A=void 0,P=void 0,E=void 0,L=void 0,O=void 0,N=n*Wo(l),H=n*ka(l),V=i*Wo(u),U=i*ka(u),F=d>mn;if(F){var z=t.cornerRadius;z&&(r=RY(z),p=r[0],m=r[1],g=r[2],y=r[3]);var ee=oS(n-i)/2;if(_=$n(ee,g),b=$n(ee,y),x=$n(ee,p),w=$n(ee,m),M=S=Al(_,b),A=C=Al(x,w),(S>mn||C>mn)&&(P=n*Wo(u),E=n*ka(u),L=i*Wo(l),O=i*ka(l),dmn){var K=$n(g,M),Q=$n(y,M),oe=qf(L,O,N,H,n,K,h),pe=qf(P,E,V,U,n,Q,h);e.moveTo(f+oe.cx+oe.x0,c+oe.cy+oe.y0),M0&&e.arc(f+oe.cx,c+oe.cy,K,rr(oe.y0,oe.x0),rr(oe.y1,oe.x1),!h),e.arc(f,c,n,rr(oe.cy+oe.y1,oe.cx+oe.x1),rr(pe.cy+pe.y1,pe.cx+pe.x1),!h),Q>0&&e.arc(f+pe.cx,c+pe.cy,Q,rr(pe.y1,pe.x1),rr(pe.y0,pe.x0),!h))}else e.moveTo(f+N,c+H),e.arc(f,c,n,l,u,!h);if(!(i>mn)||!F)e.lineTo(f+V,c+U);else if(A>mn){var K=$n(p,A),Q=$n(m,A),oe=qf(V,U,P,E,i,-Q,h),pe=qf(N,H,L,O,i,-K,h);e.lineTo(f+oe.cx+oe.x0,c+oe.cy+oe.y0),A0&&e.arc(f+oe.cx,c+oe.cy,Q,rr(oe.y0,oe.x0),rr(oe.y1,oe.x1),!h),e.arc(f,c,i,rr(oe.cy+oe.y1,oe.cx+oe.x1),rr(pe.cy+pe.y1,pe.cx+pe.x1),h),K>0&&e.arc(f+pe.cx,c+pe.cy,K,rr(pe.y1,pe.x1),rr(pe.y0,pe.x0),!h))}else e.lineTo(f+V,c+U),e.arc(f,c,i,u,l,h)}e.closePath()}}}var NY=function(){function e(){this.cx=0,this.cy=0,this.r0=0,this.r=0,this.startAngle=0,this.endAngle=Math.PI*2,this.clockwise=!0,this.cornerRadius=0}return e}(),RP=function(e){ge(t,e);function t(r){return e.call(this,r)||this}return t.prototype.getDefaultShape=function(){return new NY},t.prototype.buildPath=function(r,n){kY(r,n)},t.prototype.isZeroArea=function(){return this.shape.startAngle===this.shape.endAngle||this.shape.r===this.shape.r0},t}(vt);RP.prototype.type="sector";const Eo=RP;var BY=function(){function e(){this.cx=0,this.cy=0,this.r=0,this.r0=0}return e}(),kP=function(e){ge(t,e);function t(r){return e.call(this,r)||this}return t.prototype.getDefaultShape=function(){return new BY},t.prototype.buildPath=function(r,n){var i=n.cx,a=n.cy,o=Math.PI*2;r.moveTo(i+n.r,a),r.arc(i,a,n.r,0,o,!1),r.moveTo(i+n.r0,a),r.arc(i,a,n.r0,0,o,!0)},t}(vt);kP.prototype.type="ring";const NP=kP;function FY(e,t,r,n){var i=[],a=[],o=[],s=[],l,u,f,c;if(n){f=[1/0,1/0],c=[-1/0,-1/0];for(var h=0,d=e.length;h=2){if(n){var a=FY(i,n,r,t.smoothConstraint);e.moveTo(i[0][0],i[0][1]);for(var o=i.length,s=0;s<(r?o:o-1);s++){var l=a[s*2],u=a[s*2+1],f=i[(s+1)%o];e.bezierCurveTo(l[0],l[1],u[0],u[1],f[0],f[1])}}else{e.moveTo(i[0][0],i[0][1]);for(var s=1,c=i.length;sBa[1]){if(s=!1,a)return s;var f=Math.abs(Ba[0]-Na[1]),c=Math.abs(Na[0]-Ba[1]);Math.min(f,c)>i.len()&&(f0){var c=f.duration,h=f.delay,d=f.easing,v={duration:c,delay:h||0,easing:d,done:a,force:!!a||!!o,setToFinal:!u,scope:e,during:o};s?t.animateFrom(r,v):t.animateTo(r,v)}else t.stopAnimation(),!s&&t.attr(r),o&&o(1),a&&a()}function Or(e,t,r,n,i,a){x0("update",e,t,r,n,i,a)}function Wr(e,t,r,n,i,a){x0("enter",e,t,r,n,i,a)}function ds(e){if(!e.__zr)return!0;for(var t=0;tMath.abs(a[1])?a[0]>0?"right":"left":a[1]>0?"bottom":"top"}function uS(e){return!e.isGroup}function dj(e){return e.shape!=null}function XP(e,t,r){if(!e||!t)return;function n(o){var s={};return o.traverse(function(l){uS(l)&&l.anid&&(s[l.anid]=l)}),s}function i(o){var s={x:o.x,y:o.y,rotation:o.rotation};return dj(o)&&(s.shape=ue({},o.shape)),s}var a=n(e);t.traverse(function(o){if(uS(o)&&o.anid){var s=a[o.anid];if(s){var l=i(o);o.attr(i(s)),Or(o,l,r,dt(o).dataIndex)}}})}function hj(e,t){return Ne(e,function(r){var n=r[0];n=Id(n,t.x),n=Od(n,t.x+t.width);var i=r[1];return i=Id(i,t.y),i=Od(i,t.y+t.height),[n,i]})}function vj(e,t){var r=Id(e.x,t.x),n=Od(e.x+e.width,t.x+t.width),i=Id(e.y,t.y),a=Od(e.y+e.height,t.y+t.height);if(n>=r&&a>=i)return{x:r,y:i,width:n-r,height:a-i}}function M0(e,t,r){var n=ue({rectHover:!0},t),i=n.style={strokeNoScale:!0};if(r=r||{x:-1,y:-1,width:2,height:2},e)return e.indexOf("image://")===0?(i.image=e.slice(8),ht(i,r),new Ys(n)):C0(e.replace("path://",""),n,r,"center")}function pj(e,t,r,n,i){for(var a=0,o=i[i.length-1];a1)return!1;var m=Jv(d,v,f,c)/h;return!(m<0||m>1)}function Jv(e,t,r,n){return e*n-r*t}function gj(e){return e<=1e-6&&e>=-1e-6}function A0(e){var t=e.itemTooltipOption,r=e.componentModel,n=e.itemName,i=Ee(t)?{formatter:t}:t,a=r.mainType,o=r.componentIndex,s={componentType:a,name:n,$vars:["name"]};s[a+"Index"]=o;var l=e.formatterParamsExtra;l&&R(Ct(l),function(f){Ds(s,f)||(s[f]=l[f],s.$vars.push(f))});var u=dt(e.el);u.componentMainType=a,u.componentIndex=o,u.tooltipConfig={name:n,option:ht({content:n,formatterParams:s},i)}}function fS(e,t){var r;e.isGroup&&(r=t(e)),r||e.traverse(t)}function P0(e,t){if(e)if(ye(e))for(var r=0;r=0&&s.push(l)}),s}}function rE(e,t){return st(st({},e,!0),t,!0)}const Oj={time:{month:["January","February","March","April","May","June","July","August","September","October","November","December"],monthAbbr:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayOfWeek:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayOfWeekAbbr:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},legend:{selector:{all:"All",inverse:"Inv"}},toolbox:{brush:{title:{rect:"Box Select",polygon:"Lasso Select",lineX:"Horizontally Select",lineY:"Vertically Select",keep:"Keep Selections",clear:"Clear Selections"}},dataView:{title:"Data View",lang:["Data View","Close","Refresh"]},dataZoom:{title:{zoom:"Zoom",back:"Zoom Reset"}},magicType:{title:{line:"Switch to Line Chart",bar:"Switch to Bar Chart",stack:"Stack",tiled:"Tile"}},restore:{title:"Restore"},saveAsImage:{title:"Save as Image",lang:["Right Click to Save Image"]}},series:{typeNames:{pie:"Pie chart",bar:"Bar chart",line:"Line chart",scatter:"Scatter plot",effectScatter:"Ripple scatter plot",radar:"Radar chart",tree:"Tree",treemap:"Treemap",boxplot:"Boxplot",candlestick:"Candlestick",k:"K line chart",heatmap:"Heat map",map:"Map",parallel:"Parallel coordinate map",lines:"Line graph",graph:"Relationship graph",sankey:"Sankey diagram",funnel:"Funnel chart",gauge:"Gauge",pictorialBar:"Pictorial bar",themeRiver:"Theme River Map",sunburst:"Sunburst"}},aria:{general:{withTitle:'This is a chart about "{title}"',withoutTitle:"This is a chart"},series:{single:{prefix:"",withName:" with type {seriesType} named {seriesName}.",withoutName:" with type {seriesType}."},multiple:{prefix:". It consists of {seriesCount} series count.",withName:" The {seriesId} series is a {seriesType} representing {seriesName}.",withoutName:" The {seriesId} series is a {seriesType}.",separator:{middle:"",end:""}}},data:{allData:"The data is as follows: ",partialData:"The first {displayCnt} items are: ",withName:"the data for {name} is {value}",withoutName:"{value}",separator:{middle:", ",end:". "}}}},Rj={time:{month:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthAbbr:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],dayOfWeek:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dayOfWeekAbbr:["日","一","二","三","四","五","六"]},legend:{selector:{all:"全选",inverse:"反选"}},toolbox:{brush:{title:{rect:"矩形选择",polygon:"圈选",lineX:"横向选择",lineY:"纵向选择",keep:"保持选择",clear:"清除选择"}},dataView:{title:"数据视图",lang:["数据视图","关闭","刷新"]},dataZoom:{title:{zoom:"区域缩放",back:"区域缩放还原"}},magicType:{title:{line:"切换为折线图",bar:"切换为柱状图",stack:"切换为堆叠",tiled:"切换为平铺"}},restore:{title:"还原"},saveAsImage:{title:"保存为图片",lang:["右键另存为图片"]}},series:{typeNames:{pie:"饼图",bar:"柱状图",line:"折线图",scatter:"散点图",effectScatter:"涟漪散点图",radar:"雷达图",tree:"树图",treemap:"矩形树图",boxplot:"箱型图",candlestick:"K线图",k:"K线图",heatmap:"热力图",map:"地图",parallel:"平行坐标图",lines:"线图",graph:"关系图",sankey:"桑基图",funnel:"漏斗图",gauge:"仪表盘图",pictorialBar:"象形柱图",themeRiver:"主题河流图",sunburst:"旭日图"}},aria:{general:{withTitle:"这是一个关于“{title}”的图表。",withoutTitle:"这是一个图表,"},series:{single:{prefix:"",withName:"图表类型是{seriesType},表示{seriesName}。",withoutName:"图表类型是{seriesType}。"},multiple:{prefix:"它由{seriesCount}个图表系列组成。",withName:"第{seriesId}个系列是一个表示{seriesName}的{seriesType},",withoutName:"第{seriesId}个系列是一个{seriesType},",separator:{middle:";",end:"。"}}},data:{allData:"其数据是——",partialData:"其中,前{displayCnt}项是——",withName:"{name}的数据是{value}",withoutName:"{value}",separator:{middle:",",end:""}}}};var Rd="ZH",L0="EN",Ou=L0,jc={},D0={},nE=He.domSupported?function(){var e=(document.documentElement.lang||navigator.language||navigator.browserLanguage).toUpperCase();return e.indexOf(Rd)>-1?Rd:Ou}():Ou;function iE(e,t){e=e.toUpperCase(),D0[e]=new sr(t),jc[e]=t}function kj(e){if(Ee(e)){var t=jc[e.toUpperCase()]||{};return e===Rd||e===L0?tt(t):st(tt(t),tt(jc[Ou]),!1)}else return st(tt(e),tt(jc[Ou]),!1)}function Nj(e){return D0[e]}function Bj(){return D0[Ou]}iE(L0,Oj);iE(Rd,Rj);var I0=1e3,O0=I0*60,tu=O0*60,on=tu*24,gS=on*365,Pl={year:"{yyyy}",month:"{MMM}",day:"{d}",hour:"{HH}:{mm}",minute:"{HH}:{mm}",second:"{HH}:{mm}:{ss}",millisecond:"{HH}:{mm}:{ss} {SSS}",none:"{yyyy}-{MM}-{dd} {HH}:{mm}:{ss} {SSS}"},Zf="{yyyy}-{MM}-{dd}",mS={year:"{yyyy}",month:"{yyyy}-{MM}",day:Zf,hour:Zf+" "+Pl.hour,minute:Zf+" "+Pl.minute,second:Zf+" "+Pl.second,millisecond:Pl.none},rp=["year","month","day","hour","minute","second","millisecond"],aE=["year","half-year","quarter","month","week","half-week","day","half-day","quarter-day","hour","minute","second","millisecond"];function Bi(e,t){return e+="","0000".substr(0,t-e.length)+e}function hs(e){switch(e){case"half-year":case"quarter":return"month";case"week":case"half-week":return"day";case"half-day":case"quarter-day":return"hour";default:return e}}function Fj(e){return e===hs(e)}function $j(e){switch(e){case"year":case"month":return"day";case"millisecond":return"millisecond";default:return"second"}}function Ph(e,t,r,n){var i=Ti(e),a=i[R0(r)](),o=i[vs(r)]()+1,s=Math.floor((o-1)/3)+1,l=i[Eh(r)](),u=i["get"+(r?"UTC":"")+"Day"](),f=i[Ru(r)](),c=(f-1)%12+1,h=i[Lh(r)](),d=i[Dh(r)](),v=i[Ih(r)](),p=n instanceof sr?n:Nj(n||nE)||Bj(),m=p.getModel("time"),g=m.get("month"),y=m.get("monthAbbr"),_=m.get("dayOfWeek"),b=m.get("dayOfWeekAbbr");return(t||"").replace(/{yyyy}/g,a+"").replace(/{yy}/g,Bi(a%100+"",2)).replace(/{Q}/g,s+"").replace(/{MMMM}/g,g[o-1]).replace(/{MMM}/g,y[o-1]).replace(/{MM}/g,Bi(o,2)).replace(/{M}/g,o+"").replace(/{dd}/g,Bi(l,2)).replace(/{d}/g,l+"").replace(/{eeee}/g,_[u]).replace(/{ee}/g,b[u]).replace(/{e}/g,u+"").replace(/{HH}/g,Bi(f,2)).replace(/{H}/g,f+"").replace(/{hh}/g,Bi(c+"",2)).replace(/{h}/g,c+"").replace(/{mm}/g,Bi(h,2)).replace(/{m}/g,h+"").replace(/{ss}/g,Bi(d,2)).replace(/{s}/g,d+"").replace(/{SSS}/g,Bi(v,3)).replace(/{S}/g,v+"")}function Hj(e,t,r,n,i){var a=null;if(Ee(r))a=r;else if(Ye(r))a=r(e.value,t,{level:e.level});else{var o=ue({},Pl);if(e.level>0)for(var s=0;s=0;--s)if(l[u]){a=l[u];break}a=a||o.none}if(ye(a)){var c=e.level==null?0:e.level>=0?e.level:a.length+e.level;c=Math.min(c,a.length-1),a=a[c]}}return Ph(new Date(e.value),a,i,n)}function oE(e,t){var r=Ti(e),n=r[vs(t)]()+1,i=r[Eh(t)](),a=r[Ru(t)](),o=r[Lh(t)](),s=r[Dh(t)](),l=r[Ih(t)](),u=l===0,f=u&&s===0,c=f&&o===0,h=c&&a===0,d=h&&i===1,v=d&&n===1;return v?"year":d?"month":h?"day":c?"hour":f?"minute":u?"second":"millisecond"}function yS(e,t,r){var n=Tt(e)?Ti(e):e;switch(t=t||oE(e,r),t){case"year":return n[R0(r)]();case"half-year":return n[vs(r)]()>=6?1:0;case"quarter":return Math.floor((n[vs(r)]()+1)/4);case"month":return n[vs(r)]();case"day":return n[Eh(r)]();case"half-day":return n[Ru(r)]()/24;case"hour":return n[Ru(r)]();case"minute":return n[Lh(r)]();case"second":return n[Dh(r)]();case"millisecond":return n[Ih(r)]()}}function R0(e){return e?"getUTCFullYear":"getFullYear"}function vs(e){return e?"getUTCMonth":"getMonth"}function Eh(e){return e?"getUTCDate":"getDate"}function Ru(e){return e?"getUTCHours":"getHours"}function Lh(e){return e?"getUTCMinutes":"getMinutes"}function Dh(e){return e?"getUTCSeconds":"getSeconds"}function Ih(e){return e?"getUTCMilliseconds":"getMilliseconds"}function zj(e){return e?"setUTCFullYear":"setFullYear"}function sE(e){return e?"setUTCMonth":"setMonth"}function lE(e){return e?"setUTCDate":"setDate"}function uE(e){return e?"setUTCHours":"setHours"}function fE(e){return e?"setUTCMinutes":"setMinutes"}function cE(e){return e?"setUTCSeconds":"setSeconds"}function dE(e){return e?"setUTCMilliseconds":"setMilliseconds"}function hE(e){if(!F9(e))return Ee(e)?e:"-";var t=(e+"").split(".");return t[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g,"$1,")+(t.length>1?"."+t[1]:"")}function vE(e,t){return e=(e||"").toLowerCase().replace(/-(.)/g,function(r,n){return n.toUpperCase()}),t&&e&&(e=e.charAt(0).toUpperCase()+e.slice(1)),e}var Oh=_2;function pm(e,t,r){var n="{yyyy}-{MM}-{dd} {HH}:{mm}:{ss}";function i(f){return f&&Gn(f)?f:"-"}function a(f){return!!(f!=null&&!isNaN(f)&&isFinite(f))}var o=t==="time",s=e instanceof Date;if(o||s){var l=o?Ti(e):e;if(isNaN(+l)){if(s)return"-"}else return Ph(l,n,r)}if(t==="ordinal")return kg(e)?i(e):Tt(e)&&a(e)?e+"":"-";var u=Pd(e);return a(u)?hE(u):kg(e)?i(e):typeof e=="boolean"?e+"":"-"}var _S=["a","b","c","d","e","f","g"],np=function(e,t){return"{"+e+(t??"")+"}"};function pE(e,t,r){ye(t)||(t=[t]);var n=t.length;if(!n)return"";for(var i=t[0].$vars||[],a=0;a':'';var o=r.markerId||"markerX";return{renderMode:a,content:"{"+o+"|} ",style:i==="subItem"?{width:4,height:4,borderRadius:2,backgroundColor:n}:{width:10,height:10,borderRadius:5,backgroundColor:n}}}function ku(e,t){return t=t||"transparent",Ee(e)?e:Re(e)&&e.colorStops&&(e.colorStops[0]||{}).color||t}function bS(e,t){if(t==="_blank"||t==="blank"){var r=window.open();r.opener=null,r.location.href=e}else window.open(e,t)}var qc=R,Wj=["left","right","top","bottom","width","height"],Qf=[["width","left","right"],["height","top","bottom"]];function k0(e,t,r,n,i){var a=0,o=0;n==null&&(n=1/0),i==null&&(i=1/0);var s=0;t.eachChild(function(l,u){var f=l.getBoundingRect(),c=t.childAt(u+1),h=c&&c.getBoundingRect(),d,v;if(e==="horizontal"){var p=f.width+(h?-h.x+f.x:0);d=a+p,d>n||l.newline?(a=0,d=p,o+=s+r,s=f.height):s=Math.max(s,f.height)}else{var m=f.height+(h?-h.y+f.y:0);v=o+m,v>i||l.newline?(a+=s+r,o=0,v=m,s=f.width):s=Math.max(s,f.width)}l.newline||(l.x=a,l.y=o,l.markRedraw(),e==="horizontal"?a=d+r:o=v+r)})}var ru=k0;Rt(k0,"vertical");Rt(k0,"horizontal");function Is(e,t,r){r=Oh(r||0);var n=t.width,i=t.height,a=yt(e.left,n),o=yt(e.top,i),s=yt(e.right,n),l=yt(e.bottom,i),u=yt(e.width,n),f=yt(e.height,i),c=r[2]+r[0],h=r[1]+r[3],d=e.aspect;switch(isNaN(u)&&(u=n-s-h-a),isNaN(f)&&(f=i-l-c-o),d!=null&&(isNaN(u)&&isNaN(f)&&(d>n/i?u=n*.8:f=i*.8),isNaN(u)&&(u=d*f),isNaN(f)&&(f=u/d)),isNaN(a)&&(a=n-s-u-h),isNaN(o)&&(o=i-l-f-c),e.left||e.right){case"center":a=n/2-u/2-r[3];break;case"right":a=n-u-h;break}switch(e.top||e.bottom){case"middle":case"center":o=i/2-f/2-r[0];break;case"bottom":o=i-f-c;break}a=a||0,o=o||0,isNaN(u)&&(u=n-h-a-(s||0)),isNaN(f)&&(f=i-c-o-(l||0));var v=new nt(a+r[3],o+r[0],u,f);return v.margin=r,v}function Nu(e){var t=e.layoutMode||e.constructor.layoutMode;return Re(t)?t:t?{type:t}:null}function Os(e,t,r){var n=r&&r.ignoreSize;!ye(n)&&(n=[n,n]);var i=o(Qf[0],0),a=o(Qf[1],1);u(Qf[0],e,i),u(Qf[1],e,a);function o(f,c){var h={},d=0,v={},p=0,m=2;if(qc(f,function(_){v[_]=e[_]}),qc(f,function(_){s(t,_)&&(h[_]=v[_]=t[_]),l(h,_)&&d++,l(v,_)&&p++}),n[c])return l(t,f[1])?v[f[2]]=null:l(t,f[2])&&(v[f[1]]=null),v;if(p===m||!d)return v;if(d>=m)return h;for(var g=0;g=0;l--)s=st(s,i[l],!0);n.defaultOption=s}return n.defaultOption},t.prototype.getReferringComponents=function(r,n){var i=r+"Index",a=r+"Id";return lf(this.ecModel,r,{index:this.get(i,!0),id:this.get(a,!0)},n)},t.prototype.getBoxLayoutParams=function(){var r=this;return{left:r.get("left"),top:r.get("top"),right:r.get("right"),bottom:r.get("bottom"),width:r.get("width"),height:r.get("height")}},t.prototype.getZLevelKey=function(){return""},t.prototype.setZLevel=function(r){this.option.zlevel=r},t.protoInitialize=function(){var r=t.prototype;r.type="component",r.id="",r.name="",r.mainType="",r.subType="",r.componentIndex=0}(),t}(sr);tP(js,sr);Sh(js);Dj(js);Ij(js,Yj);function Yj(e){var t=[];return R(js.getClassesByMainType(e),function(r){t=t.concat(r.dependencies||r.prototype.dependencies||[])}),t=Ne(t,function(r){return Un(r).main}),e!=="dataset"&&ot(t,"dataset")<=0&&t.unshift("dataset"),t}const Mt=js;var gE="";typeof navigator<"u"&&(gE=navigator.platform||"");var Go="rgba(0, 0, 0, 0.2)";const jj={darkMode:"auto",colorBy:"series",color:["#5470c6","#91cc75","#fac858","#ee6666","#73c0de","#3ba272","#fc8452","#9a60b4","#ea7ccc"],gradientColor:["#f6efa6","#d88273","#bf444c"],aria:{decal:{decals:[{color:Go,dashArrayX:[1,0],dashArrayY:[2,5],symbolSize:1,rotation:Math.PI/6},{color:Go,symbol:"circle",dashArrayX:[[8,8],[0,8,8,0]],dashArrayY:[6,0],symbolSize:.8},{color:Go,dashArrayX:[1,0],dashArrayY:[4,3],rotation:-Math.PI/4},{color:Go,dashArrayX:[[6,6],[0,6,6,0]],dashArrayY:[6,0]},{color:Go,dashArrayX:[[1,0],[1,6]],dashArrayY:[1,0,6,0],rotation:Math.PI/4},{color:Go,symbol:"triangle",dashArrayX:[[9,9],[0,9,9,0]],dashArrayY:[7,2],symbolSize:.75}]}},textStyle:{fontFamily:gE.match(/^Win/)?"Microsoft YaHei":"sans-serif",fontSize:12,fontStyle:"normal",fontWeight:"normal"},blendMode:null,stateAnimation:{duration:300,easing:"cubicOut"},animation:"auto",animationDuration:1e3,animationDurationUpdate:500,animationEasing:"cubicInOut",animationEasingUpdate:"cubicInOut",animationThreshold:2e3,progressiveThreshold:3e3,progressive:400,hoverLayerThreshold:3e3,useUTC:!1};var mE=je(["tooltip","label","itemName","itemId","itemGroupId","seriesName"]),hn="original",Rr="arrayRows",Rn="objectRows",ai="keyedColumns",aa="typedArray",yE="unknown",yi="column",qs="row",Xt={Must:1,Might:2,Not:3},_E=Et();function qj(e){_E(e).datasetMap=je()}function Kj(e,t,r){var n={},i=N0(t);if(!i||!e)return n;var a=[],o=[],s=t.ecModel,l=_E(s).datasetMap,u=i.uid+"_"+r.seriesLayoutBy,f,c;e=e.slice(),R(e,function(p,m){var g=Re(p)?p:e[m]={name:p};g.type==="ordinal"&&f==null&&(f=m,c=v(g)),n[g.name]=[]});var h=l.get(u)||l.set(u,{categoryWayDim:c,valueWayDim:0});R(e,function(p,m){var g=p.name,y=v(p);if(f==null){var _=h.valueWayDim;d(n[g],_,y),d(o,_,y),h.valueWayDim+=y}else if(f===m)d(n[g],0,y),d(a,0,y);else{var _=h.categoryWayDim;d(n[g],_,y),d(o,_,y),h.categoryWayDim+=y}});function d(p,m,g){for(var y=0;yt)return e[n];return e[r-1]}function tq(e,t,r,n,i,a,o){a=a||e;var s=t(a),l=s.paletteIdx||0,u=s.paletteNameMap=s.paletteNameMap||{};if(u.hasOwnProperty(i))return u[i];var f=o==null||!n?r:eq(n,o);if(f=f||r,!(!f||!f.length)){var c=f[l];return i&&(u[i]=c),s.paletteIdx=(l+1)%f.length,c}}function rq(e,t){t(e).paletteIdx=0,t(e).paletteNameMap={}}var Jf,ul,SS,xS="\0_ec_inner",nq=1,F0=function(e){ge(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.init=function(r,n,i,a,o,s){a=a||{},this.option=null,this._theme=new sr(a),this._locale=new sr(o),this._optionManager=s},t.prototype.setOption=function(r,n,i){var a=MS(n);this._optionManager.setOption(r,i,a),this._resetOption(null,a)},t.prototype.resetOption=function(r,n){return this._resetOption(r,MS(n))},t.prototype._resetOption=function(r,n){var i=!1,a=this._optionManager;if(!r||r==="recreate"){var o=a.mountOption(r==="recreate");!this.option||r==="recreate"?SS(this,o):(this.restoreData(),this._mergeOption(o,n)),i=!0}if((r==="timeline"||r==="media")&&this.restoreData(),!r||r==="recreate"||r==="timeline"){var s=a.getTimelineOption(this);s&&(i=!0,this._mergeOption(s,n))}if(!r||r==="recreate"||r==="media"){var l=a.getMediaOption(this);l.length&&R(l,function(u){i=!0,this._mergeOption(u,n)},this)}return i},t.prototype.mergeOption=function(r){this._mergeOption(r,null)},t.prototype._mergeOption=function(r,n){var i=this.option,a=this._componentsMap,o=this._componentsCount,s=[],l=je(),u=n&&n.replaceMergeMainTypeMap;qj(this),R(r,function(c,h){c!=null&&(Mt.hasClass(h)?h&&(s.push(h),l.set(h,!0)):i[h]=i[h]==null?tt(c):st(i[h],c,!0))}),u&&u.each(function(c,h){Mt.hasClass(h)&&!l.get(h)&&(s.push(h),l.set(h,!0))}),Mt.topologicalTravel(s,Mt.getAllClassMainTypes(),f,this);function f(c){var h=Jj(this,c,pr(r[c])),d=a.get(c),v=d?u&&u.get(c)?"replaceMerge":"normalMerge":"replaceAll",p=z9(d,h,v);q9(p,c,Mt),i[c]=null,a.set(c,null),o.set(c,0);var m=[],g=[],y=0,_;R(p,function(b,x){var w=b.existing,S=b.newOption;if(!S)w&&(w.mergeOption({},this),w.optionUpdated({},!1));else{var C=c==="series",M=Mt.getClass(c,b.keyInfo.subType,!C);if(!M)return;if(c==="tooltip"){if(_)return;_=!0}if(w&&w.constructor===M)w.name=b.keyInfo.name,w.mergeOption(S,this),w.optionUpdated(S,!1);else{var A=ue({componentIndex:x},b.keyInfo);w=new M(S,this,this,A),ue(w,A),b.brandNew&&(w.__requireNewView=!0),w.init(S,this,this),w.optionUpdated(null,!0)}}w?(m.push(w.option),g.push(w),y++):(m.push(void 0),g.push(void 0))},this),i[c]=m,a.set(c,g),o.set(c,y),c==="series"&&Jf(this)}this._seriesIndices||Jf(this)},t.prototype.getOption=function(){var r=tt(this.option);return R(r,function(n,i){if(Mt.hasClass(i)){for(var a=pr(n),o=a.length,s=!1,l=o-1;l>=0;l--)a[l]&&!Lu(a[l])?s=!0:(a[l]=null,!s&&o--);a.length=o,r[i]=a}}),delete r[xS],r},t.prototype.getTheme=function(){return this._theme},t.prototype.getLocaleModel=function(){return this._locale},t.prototype.setUpdatePayload=function(r){this._payload=r},t.prototype.getUpdatePayload=function(){return this._payload},t.prototype.getComponent=function(r,n){var i=this._componentsMap.get(r);if(i){var a=i[n||0];if(a)return a;if(n==null){for(var o=0;o=t:r==="max"?e<=t:e===t}function hq(e,t){return e.join(",")===t.join(",")}const vq=uq;var vn=R,Bu=Re,AS=["areaStyle","lineStyle","nodeStyle","linkStyle","chordStyle","label","labelLine"];function ap(e){var t=e&&e.itemStyle;if(t)for(var r=0,n=AS.length;r=0;m--){var g=e[m];if(s||(v=g.data.rawIndexOf(g.stackedByDimension,d)),v>=0){var y=g.data.getByRawIndex(g.stackResultDimension,v);if(l==="all"||l==="positive"&&y>0||l==="negative"&&y<0||l==="samesign"&&h>=0&&y>0||l==="samesign"&&h<=0&&y<0){h=k9(h,y),p=y;break}}}return n[0]=h,n[1]=p,n})})}var kh=function(){function e(t){this.data=t.data||(t.sourceFormat===ai?{}:[]),this.sourceFormat=t.sourceFormat||yE,this.seriesLayoutBy=t.seriesLayoutBy||yi,this.startIndex=t.startIndex||0,this.dimensionsDetectedCount=t.dimensionsDetectedCount,this.metaRawOption=t.metaRawOption;var r=this.dimensionsDefine=t.dimensionsDefine;if(r)for(var n=0;np&&(p=_)}d[0]=v,d[1]=p}},i=function(){return this._data?this._data.length/this._dimSize:0};RS=(t={},t[Rr+"_"+yi]={pure:!0,appendData:a},t[Rr+"_"+qs]={pure:!0,appendData:function(){throw new Error('Do not support appendData when set seriesLayoutBy: "row".')}},t[Rn]={pure:!0,appendData:a},t[ai]={pure:!0,appendData:function(o){var s=this._data;R(o,function(l,u){for(var f=s[u]||(s[u]=[]),c=0;c<(l||[]).length;c++)f.push(l[c])})}},t[hn]={appendData:a},t[aa]={persistent:!1,pure:!0,appendData:function(o){this._data=o},clean:function(){this._offset+=this.count(),this._data=null}},t);function a(o){for(var s=0;s=0&&(p=o.interpolatedValue[m])}return p!=null?p+"":""})}},e.prototype.getRawValue=function(t,r){return Rs(this.getData(r),t)},e.prototype.formatTooltip=function(t,r,n){},e}();function FS(e){var t,r;return Re(e)?e.type&&(r=e):t=e,{text:t,frag:r}}function nu(e){return new Iq(e)}var Iq=function(){function e(t){t=t||{},this._reset=t.reset,this._plan=t.plan,this._count=t.count,this._onDirty=t.onDirty,this._dirty=!0}return e.prototype.perform=function(t){var r=this._upstream,n=t&&t.skip;if(this._dirty&&r){var i=this.context;i.data=i.outputData=r.context.outputData}this.__pipeline&&(this.__pipeline.currentTask=this);var a;this._plan&&!n&&(a=this._plan(this.context));var o=f(this._modBy),s=this._modDataCount||0,l=f(t&&t.modBy),u=t&&t.modDataCount||0;(o!==l||s!==u)&&(a="reset");function f(y){return!(y>=1)&&(y=1),y}var c;(this._dirty||a==="reset")&&(this._dirty=!1,c=this._doReset(n)),this._modBy=l,this._modDataCount=u;var h=t&&t.step;if(r?this._dueEnd=r._outputDueEnd:this._dueEnd=this._count?this._count(this.context):1/0,this._progress){var d=this._dueIndex,v=Math.min(h!=null?this._dueIndex+h:1/0,this._dueEnd);if(!n&&(c||d1&&n>0?s:o}};return a;function o(){return t=e?null:li?-this._resultLT:0},e}(),Rq=function(){function e(){}return e.prototype.getRawData=function(){throw new Error("not supported")},e.prototype.getRawDataItem=function(t){throw new Error("not supported")},e.prototype.cloneRawData=function(){},e.prototype.getDimensionInfo=function(t){},e.prototype.cloneAllDimensionInfo=function(){},e.prototype.count=function(){},e.prototype.retrieveValue=function(t,r){},e.prototype.retrieveValueFromItem=function(t,r){},e.prototype.convertValue=function(t,r){return Kc(t,r)},e}();function kq(e,t){var r=new Rq,n=e.data,i=r.sourceFormat=e.sourceFormat,a=e.startIndex,o="";e.seriesLayoutBy!==yi&&Cr(o);var s=[],l={},u=e.dimensionsDefine;if(u)R(u,function(p,m){var g=p.name,y={index:m,name:g,displayName:p.displayName};if(s.push(y),g!=null){var _="";Ds(l,g)&&Cr(_),l[g]=y}});else for(var f=0;f65535?Wq:Gq}function Uo(){return[1/0,-1/0]}function Uq(e){var t=e.constructor;return t===Array?e.slice():new t(e)}function zS(e,t,r,n,i){var a=OE[r||"float"];if(i){var o=e[t],s=o&&o.length;if(s!==n){for(var l=new a(n),u=0;um[1]&&(m[1]=p)}return this._rawCount=this._count=l,{start:s,end:l}},e.prototype._initDataFromProvider=function(t,r,n){for(var i=this._provider,a=this._chunks,o=this._dimensions,s=o.length,l=this._rawExtent,u=Ne(o,function(y){return y.property}),f=0;fg[1]&&(g[1]=m)}}!i.persistent&&i.clean&&i.clean(),this._rawCount=this._count=r,this._extent=[]},e.prototype.count=function(){return this._count},e.prototype.get=function(t,r){if(!(r>=0&&r=0&&r=this._rawCount||t<0)return-1;if(!this._indices)return t;var r=this._indices,n=r[t];if(n!=null&&nt)a=o-1;else return o}return-1},e.prototype.indicesOfNearest=function(t,r,n){var i=this._chunks,a=i[t],o=[];if(!a)return o;n==null&&(n=1/0);for(var s=1/0,l=-1,u=0,f=0,c=this.count();f=0&&l<0)&&(s=v,l=d,u=0),d===l&&(o[u++]=f))}return o.length=u,o},e.prototype.getIndices=function(){var t,r=this._indices;if(r){var n=r.constructor,i=this._count;if(n===Array){t=new n(i);for(var a=0;a=c&&y<=h||isNaN(y))&&(l[u++]=p),p++}v=!0}else if(a===2){for(var m=d[i[0]],_=d[i[1]],b=t[i[1]][0],x=t[i[1]][1],g=0;g=c&&y<=h||isNaN(y))&&(w>=b&&w<=x||isNaN(w))&&(l[u++]=p),p++}v=!0}}if(!v)if(a===1)for(var g=0;g=c&&y<=h||isNaN(y))&&(l[u++]=S)}else for(var g=0;gt[A][1])&&(C=!1)}C&&(l[u++]=r.getRawIndex(g))}return ug[1]&&(g[1]=m)}}}},e.prototype.lttbDownSample=function(t,r){var n=this.clone([t],!0),i=n._chunks,a=i[t],o=this.count(),s=0,l=Math.floor(1/r),u=this.getRawIndex(0),f,c,h,d=new(cl(this._rawCount))(Math.min((Math.ceil(o/l)+2)*2,o));d[s++]=u;for(var v=1;vf&&(f=c,h=b)}P>0&&Pf-v&&(l=f-v,s.length=l);for(var p=0;pc[1]&&(c[1]=g),h[d++]=y}return a._count=d,a._indices=h,a._updateGetRawIdx(),a},e.prototype.each=function(t,r){if(this._count)for(var n=t.length,i=this._chunks,a=0,o=this.count();al&&(l=c)}return o=[s,l],this._extent[t]=o,o},e.prototype.getRawDataItem=function(t){var r=this.getRawIndex(t);if(this._provider.persistent)return this._provider.getItem(r);for(var n=[],i=this._chunks,a=0;a=0?this._indices[t]:-1},e.prototype._updateGetRawIdx=function(){this.getRawIndex=this._indices?this._getRawIdx:this._getRawIdxIdentity},e.internalField=function(){function t(r,n,i,a){return Kc(r[a],this._dimensions[a])}lp={arrayRows:t,objectRows:function(r,n,i,a){return Kc(r[n],this._dimensions[a])},keyedColumns:t,original:function(r,n,i,a){var o=r&&(r.value==null?r:r.value);return Kc(o instanceof Array?o[a]:o,this._dimensions[a])},typedArray:function(r,n,i,a){return r[a]}}}(),e}(),Yq=function(){function e(t){this._sourceList=[],this._storeList=[],this._upstreamSignList=[],this._versionSignBase=0,this._dirty=!0,this._sourceHost=t}return e.prototype.dirty=function(){this._setLocalSource([],[]),this._storeList=[],this._dirty=!0},e.prototype._setLocalSource=function(t,r){this._sourceList=t,this._upstreamSignList=r,this._versionSignBase++,this._versionSignBase>9e10&&(this._versionSignBase=0)},e.prototype._getVersionSign=function(){return this._sourceHost.uid+"_"+this._versionSignBase},e.prototype.prepareSource=function(){this._isDirty()&&(this._createSource(),this._dirty=!1)},e.prototype._createSource=function(){this._setLocalSource([],[]);var t=this._sourceHost,r=this._getUpstreamSourceManagers(),n=!!r.length,i,a;if(ec(t)){var o=t,s=void 0,l=void 0,u=void 0;if(n){var f=r[0];f.prepareSource(),u=f.getSource(),s=u.data,l=u.sourceFormat,a=[f._getVersionSign()]}else s=o.get("data",!0),l=Gr(s)?aa:hn,a=[];var c=this._getSourceMetaRawOption()||{},h=u&&u.metaRawOption||{},d=Ze(c.seriesLayoutBy,h.seriesLayoutBy)||null,v=Ze(c.sourceHeader,h.sourceHeader),p=Ze(c.dimensions,h.dimensions),m=d!==h.seriesLayoutBy||!!v!=!!h.sourceHeader||p;i=m?[gm(s,{seriesLayoutBy:d,sourceHeader:v,dimensions:p},l)]:[]}else{var g=t;if(n){var y=this._applyTransform(r);i=y.sourceList,a=y.upstreamSignList}else{var _=g.get("source",!0);i=[gm(_,this._getSourceMetaRawOption(),null)],a=[]}}this._setLocalSource(i,a)},e.prototype._applyTransform=function(t){var r=this._sourceHost,n=r.get("transform",!0),i=r.get("fromTransformResult",!0);if(i!=null){var a="";t.length!==1&&VS(a)}var o,s=[],l=[];return R(t,function(u){u.prepareSource();var f=u.getSource(i||0),c="";i!=null&&!f&&VS(c),s.push(f),l.push(u._getVersionSign())}),n?o=zq(n,s,{datasetIndex:r.componentIndex}):i!=null&&(o=[Cq(s[0])]),{sourceList:o,upstreamSignList:l}},e.prototype._isDirty=function(){if(this._dirty)return!0;for(var t=this._getUpstreamSourceManagers(),r=0;r1||r>0&&!e.noHeader;return R(e.blocks,function(i){var a=BE(i);a>=t&&(t=a+ +(n&&(!a||ym(i)&&!i.noHeader)))}),t}return 0}function Kq(e,t,r,n){var i=t.noHeader,a=Zq(BE(t)),o=[],s=t.blocks||[];Ci(!s||ye(s)),s=s||[];var l=e.orderMode;if(t.sortBlocks&&l){s=s.slice();var u={valueAsc:"asc",valueDesc:"desc"};if(Es(u,l)){var f=new Oq(u[l],null);s.sort(function(v,p){return f.evaluate(v.sortParam,p.sortParam)})}else l==="seriesDesc"&&s.reverse()}R(s,function(v,p){var m=t.valueFormatter,g=NE(v)(m?ue(ue({},e),{valueFormatter:m}):e,v,p>0?a.html:0,n);g!=null&&o.push(g)});var c=e.renderMode==="richText"?o.join(a.richText):_m(o.join(""),i?r:a.html);if(i)return c;var h=pm(t.header,"ordinal",e.useUTC),d=kE(n,e.renderMode).nameStyle;return e.renderMode==="richText"?FE(e,h,d)+a.richText+c:_m('
'+tn(h)+"
"+c,r)}function Xq(e,t,r,n){var i=e.renderMode,a=t.noName,o=t.noValue,s=!t.markerType,l=t.name,u=e.useUTC,f=t.valueFormatter||e.valueFormatter||function(b){return b=ye(b)?b:[b],Ne(b,function(x,w){return pm(x,ye(d)?d[w]:d,u)})};if(!(a&&o)){var c=s?"":e.markupStyleCreator.makeTooltipMarker(t.markerType,t.markerColor||"#333",i),h=a?"":pm(l,"ordinal",u),d=t.valueType,v=o?[]:f(t.value),p=!s||!a,m=!s&&a,g=kE(n,i),y=g.nameStyle,_=g.valueStyle;return i==="richText"?(s?"":c)+(a?"":FE(e,h,y))+(o?"":eK(e,v,p,m,_)):_m((s?"":c)+(a?"":Qq(h,!s,y))+(o?"":Jq(v,p,m,_)),r)}}function WS(e,t,r,n,i,a){if(e){var o=NE(e),s={useUTC:i,renderMode:r,orderMode:n,markupStyleCreator:t,valueFormatter:e.valueFormatter};return o(s,e,0,a)}}function Zq(e){return{html:jq[e],richText:qq[e]}}function _m(e,t){var r='
',n="margin: "+t+"px 0 0";return'
'+e+r+"
"}function Qq(e,t,r){var n=t?"margin-left:2px":"";return''+tn(e)+""}function Jq(e,t,r,n){var i=r?"10px":"20px",a=t?"float:right;margin-left:"+i:"";return e=ye(e)?e:[e],''+Ne(e,function(o){return tn(o)}).join("  ")+""}function FE(e,t,r){return e.markupStyleCreator.wrapRichTextStyle(t,r)}function eK(e,t,r,n,i){var a=[i],o=n?10:20;return r&&a.push({padding:[0,0,0,o],align:"right"}),e.markupStyleCreator.wrapRichTextStyle(ye(t)?t.join(" "):t,a)}function tK(e,t){var r=e.getData().getItemVisual(t,"style"),n=r[e.visualDrawType];return ku(n)}function $E(e,t){var r=e.get("padding");return r??(t==="richText"?[8,10]:10)}var up=function(){function e(){this.richTextStyles={},this._nextStyleNameId=K2()}return e.prototype._generateStyleName=function(){return"__EC_aUTo_"+this._nextStyleNameId++},e.prototype.makeTooltipMarker=function(t,r,n){var i=n==="richText"?this._generateStyleName():null,a=Vj({color:r,type:t,renderMode:n,markerId:i});return Ee(a)?a:(this.richTextStyles[i]=a.style,a.content)},e.prototype.wrapRichTextStyle=function(t,r){var n={};ye(r)?R(r,function(a){return ue(n,a)}):ue(n,r);var i=this._generateStyleName();return this.richTextStyles[i]=n,"{"+i+"|"+t+"}"},e}();function rK(e){var t=e.series,r=e.dataIndex,n=e.multipleSeries,i=t.getData(),a=i.mapDimensionsAll("defaultedTooltip"),o=a.length,s=t.getRawValue(r),l=ye(s),u=tK(t,r),f,c,h,d;if(o>1||l&&!o){var v=nK(s,t,r,a,u);f=v.inlineValues,c=v.inlineValueTypes,h=v.blocks,d=v.inlineValues[0]}else if(o){var p=i.getDimensionInfo(a[0]);d=f=Is(i,r,a[0]),c=p.type}else d=f=l?s[0]:s;var m=h0(t),g=m&&t.name||"",y=i.getName(r),_=n?g:y;return Fu("section",{header:g,noHeader:n||!m,sortParam:d,blocks:[Fu("nameValue",{markerType:"item",markerColor:u,name:_,noName:!Gn(_),value:f,valueType:c})].concat(h||[])})}function nK(e,t,r,n,i){var a=t.getData(),o=ca(e,function(c,h,d){var v=a.getDimensionInfo(d);return c=c||v&&v.tooltip!==!1&&v.displayName!=null},!1),s=[],l=[],u=[];n.length?R(n,function(c){f(Is(a,r,c),c)}):R(e,f);function f(c,h){var d=a.getDimensionInfo(h);!d||d.otherDims.tooltip===!1||(o?u.push(Fu("nameValue",{markerType:"subItem",markerColor:i,name:d.displayName,value:c,valueType:d.type})):(s.push(c),l.push(d.type)))}return{inlineValues:s,inlineValueTypes:l,blocks:u}}var Fi=Et();function tc(e,t){return e.getName(t)||e.getId(t)}var iK="__universalTransitionEnabled",Bh=function(e){ge(t,e);function t(){var r=e!==null&&e.apply(this,arguments)||this;return r._selectedDataIndicesMap={},r}return t.prototype.init=function(r,n,i){this.seriesIndex=this.componentIndex,this.dataTask=nu({count:oK,reset:sK}),this.dataTask.context={model:this},this.mergeDefaultAndTheme(r,i);var a=Fi(this).sourceManager=new Yq(this);a.prepareSource();var o=this.getInitialData(r,i);US(o,this),this.dataTask.context.data=o,Fi(this).dataBeforeProcessed=o,GS(this),this._initSelectedMapFromData(o)},t.prototype.mergeDefaultAndTheme=function(r,n){var i=Nu(this),a=i?Rh(r):{},o=this.subType;Mt.hasClass(o)&&(o+="Series"),st(r,n.getTheme().get(this.subType)),st(r,this.getDefaultOption()),em(r,"label",["show"]),this.fillDataTextStyle(r.data),i&&Ds(r,a,i)},t.prototype.mergeOption=function(r,n){r=st(this.option,r,!0),this.fillDataTextStyle(r.data);var i=Nu(this);i&&Ds(this.option,r,i);var a=Fi(this).sourceManager;a.dirty(),a.prepareSource();var o=this.getInitialData(r,n);US(o,this),this.dataTask.dirty(),this.dataTask.context.data=o,Fi(this).dataBeforeProcessed=o,GS(this),this._initSelectedMapFromData(o)},t.prototype.fillDataTextStyle=function(r){if(r&&!Gr(r))for(var n=["show"],i=0;ithis.getShallow("animationThreshold")&&(n=!1),!!n},t.prototype.restoreData=function(){this.dataTask.dirty()},t.prototype.getColorFromPalette=function(r,n,i){var a=this.ecModel,o=B0.prototype.getColorFromPalette.call(this,r,n,i);return o||(o=a.getColorFromPalette(r,n,i)),o},t.prototype.coordDimToDataDim=function(r){return this.getRawData().mapDimensionsAll(r)},t.prototype.getProgressive=function(){return this.get("progressive")},t.prototype.getProgressiveThreshold=function(){return this.get("progressiveThreshold")},t.prototype.select=function(r,n){this._innerSelect(this.getData(n),r)},t.prototype.unselect=function(r,n){var i=this.option.selectedMap;if(i){var a=this.option.selectedMode,o=this.getData(n);if(a==="series"||i==="all"){this.option.selectedMap={},this._selectedDataIndicesMap={};return}for(var s=0;s=0&&i.push(o)}return i},t.prototype.isSelected=function(r,n){var i=this.option.selectedMap;if(!i)return!1;var a=this.getData(n);return(i==="all"||i[tc(a,r)])&&!a.getItemModel(r).get(["select","disabled"])},t.prototype.isUniversalTransitionEnabled=function(){if(this[iK])return!0;var r=this.option.universalTransition;return r?r===!0?!0:r&&r.enabled:!1},t.prototype._innerSelect=function(r,n){var i,a,o=this.option,s=o.selectedMode,l=n.length;if(!(!s||!l)){if(s==="series")o.selectedMap="all";else if(s==="multiple"){Re(o.selectedMap)||(o.selectedMap={});for(var u=o.selectedMap,f=0;f0&&this._innerSelect(r,n)}},t.registerClass=function(r){return Mt.registerClass(r)},t.protoInitialize=function(){var r=t.prototype;r.type="series.__base__",r.seriesIndex=0,r.ignoreStyleOnData=!1,r.hasSymbolVisual=!1,r.defaultSymbol="circle",r.visualStyleAccessPath="itemStyle",r.visualDrawType="fill"}(),t}(Mt);ni(Bh,Dq);ni(Bh,B0);tP(Bh,Mt);function GS(e){var t=e.name;h0(e)||(e.name=aK(e)||t)}function aK(e){var t=e.getRawData(),r=t.mapDimensionsAll("seriesName"),n=[];return R(r,function(i){var a=t.getDimensionInfo(i);a.displayName&&n.push(a.displayName)}),n.join(" ")}function oK(e){return e.model.getRawData().count()}function sK(e){var t=e.model;return t.setData(t.getRawData().cloneShallow()),lK}function lK(e,t){t.outputData&&e.end>t.outputData.count()&&t.model.getRawData().cloneShallow(t.outputData)}function US(e,t){R(vU(e.CHANGABLE_METHODS,e.DOWNSAMPLE_METHODS),function(r){e.wrapMethod(r,Ot(uK,t))})}function uK(e,t){var r=bm(e);return r&&r.setOutputEnd((t||this).count()),t}function bm(e){var t=(e.ecModel||{}).scheduler,r=t&&t.getPipeline(e.uid);if(r){var n=r.currentTask;if(n){var i=n.agentStubMap;i&&(n=i.get(e.uid))}return n}}const So=Bh;var G0=function(){function e(){this.group=new Ur,this.uid=Ah("viewComponent")}return e.prototype.init=function(t,r){},e.prototype.render=function(t,r,n,i){},e.prototype.dispose=function(t,r){},e.prototype.updateView=function(t,r,n,i){},e.prototype.updateLayout=function(t,r,n,i){},e.prototype.updateVisual=function(t,r,n,i){},e.prototype.toggleBlurSeries=function(t,r,n){},e.prototype.eachRendered=function(t){var r=this.group;r&&r.traverse(t)},e}();p0(G0);Sh(G0);const Mi=G0;function HE(){var e=Et();return function(t){var r=e(t),n=t.pipelineContext,i=!!r.large,a=!!r.progressiveRender,o=r.large=!!(n&&n.large),s=r.progressiveRender=!!(n&&n.progressiveRender);return(i!==o||a!==s)&&"reset"}}var zE=Et(),fK=HE(),U0=function(){function e(){this.group=new Ur,this.uid=Ah("viewChart"),this.renderTask=nu({plan:cK,reset:dK}),this.renderTask.context={view:this}}return e.prototype.init=function(t,r){},e.prototype.render=function(t,r,n,i){},e.prototype.highlight=function(t,r,n,i){var a=t.getData(i&&i.dataType);a&&jS(a,i,"emphasis")},e.prototype.downplay=function(t,r,n,i){var a=t.getData(i&&i.dataType);a&&jS(a,i,"normal")},e.prototype.remove=function(t,r){this.group.removeAll()},e.prototype.dispose=function(t,r){},e.prototype.updateView=function(t,r,n,i){this.render(t,r,n,i)},e.prototype.updateLayout=function(t,r,n,i){this.render(t,r,n,i)},e.prototype.updateVisual=function(t,r,n,i){this.render(t,r,n,i)},e.prototype.eachRendered=function(t){P0(this.group,t)},e.markUpdateMethod=function(t,r){zE(t).updateMethod=r},e.protoInitialize=function(){var t=e.prototype;t.type="chart"}(),e}();function YS(e,t,r){e&&fm(e)&&(t==="emphasis"?am:om)(e,r)}function jS(e,t,r){var n=sf(e,t),i=t&&t.highlightKey!=null?_Y(t.highlightKey):null;n!=null?R(pr(n),function(a){YS(e.getItemGraphicEl(a),r,i)}):e.eachItemGraphicEl(function(a){YS(a,r,i)})}p0(U0);Sh(U0);function cK(e){return fK(e.model)}function dK(e){var t=e.model,r=e.ecModel,n=e.api,i=e.payload,a=t.pipelineContext.progressiveRender,o=e.view,s=i&&zE(i).updateMethod,l=a?"incrementalPrepareRender":s&&o[s]?s:"render";return l!=="render"&&o[l](t,r,n,i),hK[l]}var hK={incrementalPrepareRender:{progress:function(e,t){t.view.incrementalRender(e,t.model,t.ecModel,t.api,t.payload)}},render:{forceFirstProgress:!0,progress:function(e,t){t.view.render(t.model,t.ecModel,t.api,t.payload)}}};const ho=U0;var kd="\0__throttleOriginMethod",qS="\0__throttleRate",KS="\0__throttleType";function Y0(e,t,r){var n,i=0,a=0,o=null,s,l,u,f;t=t||0;function c(){a=new Date().getTime(),o=null,e.apply(l,u||[])}var h=function(){for(var d=[],v=0;v=0?c():o=setTimeout(c,-s),i=n};return h.clear=function(){o&&(clearTimeout(o),o=null)},h.debounceNextCall=function(d){f=d},h}function VE(e,t,r,n){var i=e[t];if(i){var a=i[kd]||i,o=i[KS],s=i[qS];if(s!==r||o!==n){if(r==null||!n)return e[t]=a;i=e[t]=Y0(a,r,n==="debounce"),i[kd]=a,i[KS]=n,i[qS]=r}return i}}function wm(e,t){var r=e[t];r&&r[kd]&&(r.clear&&r.clear(),e[t]=r[kd])}var XS=Et(),ZS={itemStyle:Du(tE,!0),lineStyle:Du(eE,!0)},vK={lineStyle:"stroke",itemStyle:"fill"};function WE(e,t){var r=e.visualStyleMapper||ZS[t];return r||(console.warn("Unknown style type '"+t+"'."),ZS.itemStyle)}function GE(e,t){var r=e.visualDrawType||vK[t];return r||(console.warn("Unknown style type '"+t+"'."),"fill")}var pK={createOnAllSeries:!0,performRawSeries:!0,reset:function(e,t){var r=e.getData(),n=e.visualStyleAccessPath||"itemStyle",i=e.getModel(n),a=WE(e,n),o=a(i),s=i.getShallow("decal");s&&(r.setVisual("decal",s),s.dirty=!0);var l=GE(e,n),u=o[l],f=Ye(u)?u:null,c=o.fill==="auto"||o.stroke==="auto";if(!o[l]||f||c){var h=e.getColorFromPalette(e.name,null,t.getSeriesCount());o[l]||(o[l]=h,r.setVisual("colorFromPalette",!0)),o.fill=o.fill==="auto"||Ye(o.fill)?h:o.fill,o.stroke=o.stroke==="auto"||Ye(o.stroke)?h:o.stroke}if(r.setVisual("style",o),r.setVisual("drawType",l),!t.isSeriesFiltered(e)&&f)return r.setVisual("colorFromPalette",!1),{dataEach:function(d,v){var p=e.getDataParams(v),m=ue({},o);m[l]=f(p),d.setItemVisual(v,"style",m)}}}},dl=new sr,gK={createOnAllSeries:!0,performRawSeries:!0,reset:function(e,t){if(!(e.ignoreStyleOnData||t.isSeriesFiltered(e))){var r=e.getData(),n=e.visualStyleAccessPath||"itemStyle",i=WE(e,n),a=r.getVisual("drawType");return{dataEach:r.hasItemOption?function(o,s){var l=o.getRawDataItem(s);if(l&&l[n]){dl.option=l[n];var u=i(dl),f=o.ensureUniqueItemVisual(s,"style");ue(f,u),dl.option.decal&&(o.setItemVisual(s,"decal",dl.option.decal),dl.option.decal.dirty=!0),a in u&&o.setItemVisual(s,"colorFromPalette",!1)}}:null}}}},mK={performRawSeries:!0,overallReset:function(e){var t=je();e.eachSeries(function(r){var n=r.getColorBy();if(!r.isColorBySeries()){var i=r.type+"-"+n,a=t.get(i);a||(a={},t.set(i,a)),XS(r).scope=a}}),e.eachSeries(function(r){if(!(r.isColorBySeries()||e.isSeriesFiltered(r))){var n=r.getRawData(),i={},a=r.getData(),o=XS(r).scope,s=r.visualStyleAccessPath||"itemStyle",l=GE(r,s);a.each(function(u){var f=a.getRawIndex(u);i[f]=u}),n.each(function(u){var f=i[u],c=a.getItemVisual(f,"colorFromPalette");if(c){var h=a.ensureUniqueItemVisual(f,"style"),d=n.getName(u)||u+"",v=n.count();h[l]=r.getColorFromPalette(d,o,v)}})}})}},rc=Math.PI;function yK(e,t){t=t||{},ht(t,{text:"loading",textColor:"#000",fontSize:12,fontWeight:"normal",fontStyle:"normal",fontFamily:"sans-serif",maskColor:"rgba(255, 255, 255, 0.8)",showSpinner:!0,color:"#5470c6",spinnerRadius:10,lineWidth:5,zlevel:0});var r=new Ur,n=new Gt({style:{fill:t.maskColor},zlevel:t.zlevel,z:1e4});r.add(n);var i=new mr({style:{text:t.text,fill:t.textColor,fontSize:t.fontSize,fontWeight:t.fontWeight,fontStyle:t.fontStyle,fontFamily:t.fontFamily},zlevel:t.zlevel,z:10001}),a=new Gt({style:{fill:"none"},textContent:i,textConfig:{position:"right",distance:10},zlevel:t.zlevel,z:10001});r.add(a);var o;return t.showSpinner&&(o=new S0({shape:{startAngle:-rc/2,endAngle:-rc/2+.1,r:t.spinnerRadius},style:{stroke:t.color,lineCap:"round",lineWidth:t.lineWidth},zlevel:t.zlevel,z:10001}),o.animateShape(!0).when(1e3,{endAngle:rc*3/2}).start("circularInOut"),o.animateShape(!0).when(1e3,{startAngle:rc*3/2}).delay(300).start("circularInOut"),r.add(o)),r.resize=function(){var s=i.getBoundingRect().width,l=t.showSpinner?t.spinnerRadius:0,u=(e.getWidth()-l*2-(t.showSpinner&&s?10:0)-s)/2-(t.showSpinner&&s?0:5+s/2)+(t.showSpinner?0:s/2)+(s?0:l),f=e.getHeight()/2;t.showSpinner&&o.setShape({cx:u,cy:f}),a.setShape({x:u-l,y:f-l,width:l*2,height:l*2}),n.setShape({x:0,y:0,width:e.getWidth(),height:e.getHeight()})},r.resize(),r}var UE=function(){function e(t,r,n,i){this._stageTaskMap=je(),this.ecInstance=t,this.api=r,n=this._dataProcessorHandlers=n.slice(),i=this._visualHandlers=i.slice(),this._allHandlers=n.concat(i)}return e.prototype.restoreData=function(t,r){t.restoreData(r),this._stageTaskMap.each(function(n){var i=n.overallTask;i&&i.dirty()})},e.prototype.getPerformArgs=function(t,r){if(t.__pipeline){var n=this._pipelineMap.get(t.__pipeline.id),i=n.context,a=!r&&n.progressiveEnabled&&(!i||i.progressiveRender)&&t.__idxInPipeline>n.blockIndex,o=a?n.step:null,s=i&&i.modDataCount,l=s!=null?Math.ceil(s/o):null;return{step:o,modBy:l,modDataCount:s}}},e.prototype.getPipeline=function(t){return this._pipelineMap.get(t)},e.prototype.updateStreamModes=function(t,r){var n=this._pipelineMap.get(t.uid),i=t.getData(),a=i.count(),o=n.progressiveEnabled&&r.incrementalPrepareRender&&a>=n.threshold,s=t.get("large")&&a>=t.get("largeThreshold"),l=t.get("progressiveChunkMode")==="mod"?a:null;t.pipelineContext=n.context={progressiveRender:o,modDataCount:l,large:s}},e.prototype.restorePipelines=function(t){var r=this,n=r._pipelineMap=je();t.eachSeries(function(i){var a=i.getProgressive(),o=i.uid;n.set(o,{id:o,head:null,tail:null,threshold:i.getProgressiveThreshold(),progressiveEnabled:a&&!(i.preventIncremental&&i.preventIncremental()),blockIndex:-1,step:Math.round(a||700),count:0}),r._pipe(i,i.dataTask)})},e.prototype.prepareStageTasks=function(){var t=this._stageTaskMap,r=this.api.getModel(),n=this.api;R(this._allHandlers,function(i){var a=t.get(i.uid)||t.set(i.uid,{}),o="";Ci(!(i.reset&&i.overallReset),o),i.reset&&this._createSeriesStageTask(i,a,r,n),i.overallReset&&this._createOverallStageTask(i,a,r,n)},this)},e.prototype.prepareView=function(t,r,n,i){var a=t.renderTask,o=a.context;o.model=r,o.ecModel=n,o.api=i,a.__block=!t.incrementalPrepareRender,this._pipe(r,a)},e.prototype.performDataProcessorTasks=function(t,r){this._performStageTasks(this._dataProcessorHandlers,t,r,{block:!0})},e.prototype.performVisualTasks=function(t,r,n){this._performStageTasks(this._visualHandlers,t,r,n)},e.prototype._performStageTasks=function(t,r,n,i){i=i||{};var a=!1,o=this;R(t,function(l,u){if(!(i.visualType&&i.visualType!==l.visualType)){var f=o._stageTaskMap.get(l.uid),c=f.seriesTaskMap,h=f.overallTask;if(h){var d,v=h.agentStubMap;v.each(function(m){s(i,m)&&(m.dirty(),d=!0)}),d&&h.dirty(),o.updatePayload(h,n);var p=o.getPerformArgs(h,i.block);v.each(function(m){m.perform(p)}),h.perform(p)&&(a=!0)}else c&&c.each(function(m,g){s(i,m)&&m.dirty();var y=o.getPerformArgs(m,i.block);y.skip=!l.performRawSeries&&r.isSeriesFiltered(m.context.model),o.updatePayload(m,n),m.perform(y)&&(a=!0)})}});function s(l,u){return l.setDirty&&(!l.dirtyMap||l.dirtyMap.get(u.__pipeline.id))}this.unfinished=a||this.unfinished},e.prototype.performSeriesTasks=function(t){var r;t.eachSeries(function(n){r=n.dataTask.perform()||r}),this.unfinished=r||this.unfinished},e.prototype.plan=function(){this._pipelineMap.each(function(t){var r=t.tail;do{if(r.__block){t.blockIndex=r.__idxInPipeline;break}r=r.getUpstream()}while(r)})},e.prototype.updatePayload=function(t,r){r!=="remain"&&(t.context.payload=r)},e.prototype._createSeriesStageTask=function(t,r,n,i){var a=this,o=r.seriesTaskMap,s=r.seriesTaskMap=je(),l=t.seriesType,u=t.getTargetSeries;t.createOnAllSeries?n.eachRawSeries(f):l?n.eachRawSeriesByType(l,f):u&&u(n,i).each(f);function f(c){var h=c.uid,d=s.set(h,o&&o.get(h)||nu({plan:xK,reset:CK,count:MK}));d.context={model:c,ecModel:n,api:i,useClearVisual:t.isVisual&&!t.isLayout,plan:t.plan,reset:t.reset,scheduler:a},a._pipe(c,d)}},e.prototype._createOverallStageTask=function(t,r,n,i){var a=this,o=r.overallTask=r.overallTask||nu({reset:_K});o.context={ecModel:n,api:i,overallReset:t.overallReset,scheduler:a};var s=o.agentStubMap,l=o.agentStubMap=je(),u=t.seriesType,f=t.getTargetSeries,c=!0,h=!1,d="";Ci(!t.createOnAllSeries,d),u?n.eachRawSeriesByType(u,v):f?f(n,i).each(v):(c=!1,R(n.getSeries(),v));function v(p){var m=p.uid,g=l.set(m,s&&s.get(m)||(h=!0,nu({reset:bK,onDirty:SK})));g.context={model:p,overallProgress:c},g.agent=o,g.__block=c,a._pipe(p,g)}h&&o.dirty()},e.prototype._pipe=function(t,r){var n=t.uid,i=this._pipelineMap.get(n);!i.head&&(i.head=r),i.tail&&i.tail.pipe(r),i.tail=r,r.__idxInPipeline=i.count++,r.__pipeline=i},e.wrapStageHandler=function(t,r){return Ye(t)&&(t={overallReset:t,seriesType:AK(t)}),t.uid=Ah("stageHandler"),r&&(t.visualType=r),t},e}();function _K(e){e.overallReset(e.ecModel,e.api,e.payload)}function bK(e){return e.overallProgress&&wK}function wK(){this.agent.dirty(),this.getDownstream().dirty()}function SK(){this.agent&&this.agent.dirty()}function xK(e){return e.plan?e.plan(e.model,e.ecModel,e.api,e.payload):null}function CK(e){e.useClearVisual&&e.data.clearAllVisual();var t=e.resetDefines=pr(e.reset(e.model,e.ecModel,e.api,e.payload));return t.length>1?Ne(t,function(r,n){return YE(n)}):TK}var TK=YE(0);function YE(e){return function(t,r){var n=r.data,i=r.resetDefines[e];if(i&&i.dataEach)for(var a=t.start;a0&&d===u.length-h.length){var v=u.slice(0,d);v!=="data"&&(r.mainType=v,r[h.toLowerCase()]=l,f=!0)}}s.hasOwnProperty(u)&&(n[u]=l,f=!0),f||(i[u]=l)})}return{cptQuery:r,dataQuery:n,otherQuery:i}},e.prototype.filter=function(t,r){var n=this.eventInfo;if(!n)return!0;var i=n.targetEl,a=n.packedEvent,o=n.model,s=n.view;if(!o||!s)return!0;var l=r.cptQuery,u=r.dataQuery;return f(l,o,"mainType")&&f(l,o,"subType")&&f(l,o,"index","componentIndex")&&f(l,o,"name")&&f(l,o,"id")&&f(u,a,"name")&&f(u,a,"dataIndex")&&f(u,a,"dataType")&&(!s.filterForExposedEvent||s.filterForExposedEvent(t,r.otherQuery,i,a));function f(c,h,d,v){return c[d]==null||h[v||d]===c[d]}},e.prototype.afterTrigger=function(){this.eventInfo=null},e}(),Sm=["symbol","symbolSize","symbolRotate","symbolOffset"],tx=Sm.concat(["symbolKeepAspect"]),DK={createOnAllSeries:!0,performRawSeries:!0,reset:function(e,t){var r=e.getData();if(e.legendIcon&&r.setVisual("legendIcon",e.legendIcon),!e.hasSymbolVisual)return;for(var n={},i={},a=!1,o=0;o=0&&ro(l)?l:.5;var u=e.createRadialGradient(o,s,0,o,s,l);return u}function Cm(e,t,r){for(var n=t.type==="radial"?XK(e,t,r):KK(e,t,r),i=t.colorStops,a=0;a0)?null:e==="dashed"?[4*t,2*t]:e==="dotted"?[t]:Tt(e)?[e]:ye(e)?e:null}function XE(e){var t=e.style,r=t.lineDash&&t.lineWidth>0&&QK(t.lineDash,t.lineWidth),n=t.lineDashOffset;if(r){var i=t.strokeNoScale&&e.getLineScale?e.getLineScale():1;i&&i!==1&&(r=Ne(r,function(a){return a/i}),n/=i)}return[r,n]}var JK=new bo(!0);function Bd(e){var t=e.stroke;return!(t==null||t==="none"||!(e.lineWidth>0))}function rx(e){return typeof e=="string"&&e!=="none"}function Fd(e){var t=e.fill;return t!=null&&t!=="none"}function nx(e,t){if(t.fillOpacity!=null&&t.fillOpacity!==1){var r=e.globalAlpha;e.globalAlpha=t.fillOpacity*t.opacity,e.fill(),e.globalAlpha=r}else e.fill()}function ix(e,t){if(t.strokeOpacity!=null&&t.strokeOpacity!==1){var r=e.globalAlpha;e.globalAlpha=t.strokeOpacity*t.opacity,e.stroke(),e.globalAlpha=r}else e.stroke()}function Tm(e,t,r){var n=rP(t.image,t.__image,r);if(xh(n)){var i=e.createPattern(n,t.repeat||"repeat");if(typeof DOMMatrix=="function"&&i&&i.setTransform){var a=new DOMMatrix;a.translateSelf(t.x||0,t.y||0),a.rotateSelf(0,0,(t.rotation||0)*pU),a.scaleSelf(t.scaleX||1,t.scaleY||1),i.setTransform(a)}return i}}function eX(e,t,r,n){var i,a=Bd(r),o=Fd(r),s=r.strokePercent,l=s<1,u=!t.path;(!t.silent||l)&&u&&t.createPathProxy();var f=t.path||JK,c=t.__dirty;if(!n){var h=r.fill,d=r.stroke,v=o&&!!h.colorStops,p=a&&!!d.colorStops,m=o&&!!h.image,g=a&&!!d.image,y=void 0,_=void 0,b=void 0,x=void 0,w=void 0;(v||p)&&(w=t.getBoundingRect()),v&&(y=c?Cm(e,h,w):t.__canvasFillGradient,t.__canvasFillGradient=y),p&&(_=c?Cm(e,d,w):t.__canvasStrokeGradient,t.__canvasStrokeGradient=_),m&&(b=c||!t.__canvasFillPattern?Tm(e,h,t):t.__canvasFillPattern,t.__canvasFillPattern=b),g&&(x=c||!t.__canvasStrokePattern?Tm(e,d,t):t.__canvasStrokePattern,t.__canvasStrokePattern=b),v?e.fillStyle=y:m&&(b?e.fillStyle=b:o=!1),p?e.strokeStyle=_:g&&(x?e.strokeStyle=x:a=!1)}var S=t.getGlobalScale();f.setScale(S[0],S[1],t.segmentIgnoreThreshold);var C,M;e.setLineDash&&r.lineDash&&(i=XE(t),C=i[0],M=i[1]);var A=!0;(u||c&Xo)&&(f.setDPR(e.dpr),l?f.setContext(null):(f.setContext(e),A=!1),f.reset(),t.buildPath(f,t.shape,n),f.toStatic(),t.pathUpdated()),A&&f.rebuildPath(e,l?s:1),C&&(e.setLineDash(C),e.lineDashOffset=M),n||(r.strokeFirst?(a&&ix(e,r),o&&nx(e,r)):(o&&nx(e,r),a&&ix(e,r))),C&&e.setLineDash([])}function tX(e,t,r){var n=t.__image=rP(r.image,t.__image,t,t.onload);if(!(!n||!xh(n))){var i=r.x||0,a=r.y||0,o=t.getWidth(),s=t.getHeight(),l=n.width/n.height;if(o==null&&s!=null?o=s*l:s==null&&o!=null?s=o/l:o==null&&s==null&&(o=n.width,s=n.height),r.sWidth&&r.sHeight){var u=r.sx||0,f=r.sy||0;e.drawImage(n,u,f,r.sWidth,r.sHeight,i,a,o,s)}else if(r.sx&&r.sy){var u=r.sx,f=r.sy,c=o-u,h=s-f;e.drawImage(n,u,f,c,h,i,a,o,s)}else e.drawImage(n,i,a,o,s)}}function rX(e,t,r){var n,i=r.text;if(i!=null&&(i+=""),i){e.font=r.font||_o,e.textAlign=r.textAlign,e.textBaseline=r.textBaseline;var a=void 0,o=void 0;e.setLineDash&&r.lineDash&&(n=XE(t),a=n[0],o=n[1]),a&&(e.setLineDash(a),e.lineDashOffset=o),r.strokeFirst?(Bd(r)&&e.strokeText(i,r.x,r.y),Fd(r)&&e.fillText(i,r.x,r.y)):(Fd(r)&&e.fillText(i,r.x,r.y),Bd(r)&&e.strokeText(i,r.x,r.y)),a&&e.setLineDash([])}}var ax=["shadowBlur","shadowOffsetX","shadowOffsetY"],ox=[["lineCap","butt"],["lineJoin","miter"],["miterLimit",10]];function ZE(e,t,r,n,i){var a=!1;if(!n&&(r=r||{},t===r))return!1;if(n||t.opacity!==r.opacity){Tr(e,i),a=!0;var o=Math.max(Math.min(t.opacity,1),0);e.globalAlpha=isNaN(o)?fo.opacity:o}(n||t.blend!==r.blend)&&(a||(Tr(e,i),a=!0),e.globalCompositeOperation=t.blend||fo.blend);for(var s=0;s0&&r.unfinished);r.unfinished||this._zr.flush()}}},t.prototype.getDom=function(){return this._dom},t.prototype.getId=function(){return this.id},t.prototype.getZr=function(){return this._zr},t.prototype.isSSR=function(){return this._ssr},t.prototype.setOption=function(r,n,i){if(!this[nr]){if(this._disposed){this.id;return}var a,o,s;if(Re(n)&&(i=n.lazyUpdate,a=n.silent,o=n.replaceMerge,s=n.transition,n=n.notMerge),this[nr]=!0,!this._model||n){var l=new vq(this._api),u=this._theme,f=this._model=new F0;f.scheduler=this._scheduler,f.ssr=this._ssr,f.init(null,null,null,u,this._locale,l)}this._model.setOption(r,{replaceMerge:o},Pm);var c={seriesTransition:s,optionChanged:!0};if(i)this[br]={silent:a,updateParams:c},this[nr]=!1,this.getZr().wakeUp();else{try{Uo(this),$i.update.call(this,null,c)}catch(h){throw this[br]=null,this[nr]=!1,h}this._ssr||this._zr.flush(),this[br]=null,this[nr]=!1,hl.call(this,a),vl.call(this,a)}}},t.prototype.setTheme=function(){},t.prototype.getModel=function(){return this._model},t.prototype.getOption=function(){return this._model&&this._model.getOption()},t.prototype.getWidth=function(){return this._zr.getWidth()},t.prototype.getHeight=function(){return this._zr.getHeight()},t.prototype.getDevicePixelRatio=function(){return this._zr.painter.dpr||He.hasGlobalWindow&&window.devicePixelRatio||1},t.prototype.getRenderedCanvas=function(r){return this.renderToCanvas(r)},t.prototype.renderToCanvas=function(r){r=r||{};var n=this._zr.painter;return n.getRenderedCanvas({backgroundColor:r.backgroundColor||this._model.get("backgroundColor"),pixelRatio:r.pixelRatio||this.getDevicePixelRatio()})},t.prototype.renderToSVGString=function(r){r=r||{};var n=this._zr.painter;return n.renderToString({useViewBox:r.useViewBox})},t.prototype.getSvgDataURL=function(){if(He.svgSupported){var r=this._zr,n=r.storage.getDisplayList();return R(n,function(i){i.stopAnimation(null,!0)}),r.painter.toDataURL()}},t.prototype.getDataURL=function(r){if(this._disposed){this.id;return}r=r||{};var n=r.excludeComponents,i=this._model,a=[],o=this;R(n,function(l){i.eachComponent({mainType:l},function(u){var f=o._componentsMap[u.__viewId];f.group.ignore||(a.push(f),f.group.ignore=!0)})});var s=this._zr.painter.getType()==="svg"?this.getSvgDataURL():this.renderToCanvas(r).toDataURL("image/"+(r&&r.type||"png"));return R(a,function(l){l.group.ignore=!1}),s},t.prototype.getConnectedDataURL=function(r){if(this._disposed){this.id;return}var n=r.type==="svg",i=this.group,a=Math.min,o=Math.max,s=1/0;if(Sx[i]){var l=s,u=s,f=-s,c=-s,h=[],d=r&&r.pixelRatio||this.getDevicePixelRatio();R(au,function(_,b){if(_.group===i){var x=n?_.getZr().painter.getSvgDom().innerHTML:_.renderToCanvas(tt(r)),w=_.getDom().getBoundingClientRect();l=a(w.left,l),u=a(w.top,u),f=o(w.right,f),c=o(w.bottom,c),h.push({dom:x,left:w.left,top:w.top})}}),l*=d,u*=d,f*=d,c*=d;var v=f-l,p=c-u,m=Vs.createCanvas(),g=Tw(m,{renderer:n?"svg":"canvas"});if(g.resize({width:v,height:p}),n){var y="";return R(h,function(_){var b=_.left-l,x=_.top-u;y+=''+_.dom+""}),g.painter.getSvgRoot().innerHTML=y,r.connectedBackgroundColor&&g.painter.setBackgroundColor(r.connectedBackgroundColor),g.refreshImmediately(),g.painter.toDataURL()}else return r.connectedBackgroundColor&&g.add(new Gt({shape:{x:0,y:0,width:v,height:p},style:{fill:r.connectedBackgroundColor}})),R(h,function(_){var b=new Gs({style:{x:_.left*d-l,y:_.top*d-u,image:_.dom}});g.add(b)}),g.refreshImmediately(),m.toDataURL("image/"+(r&&r.type||"png"))}else return this.getDataURL(r)},t.prototype.convertToPixel=function(r,n){return vp(this,"convertToPixel",r,n)},t.prototype.convertFromPixel=function(r,n){return vp(this,"convertFromPixel",r,n)},t.prototype.containPixel=function(r,n){if(this._disposed){this.id;return}var i=this._model,a,o=Bv(i,r);return R(o,function(s,l){l.indexOf("Models")>=0&&R(s,function(u){var f=u.coordinateSystem;if(f&&f.containPoint)a=a||!!f.containPoint(n);else if(l==="seriesModels"){var c=this._chartsMap[u.__viewId];c&&c.containPoint&&(a=a||c.containPoint(n,u))}},this)},this),!!a},t.prototype.getVisual=function(r,n){var i=this._model,a=Bv(i,r,{defaultMainType:"series"}),o=a.seriesModel,s=o.getData(),l=a.hasOwnProperty("dataIndexInside")?a.dataIndexInside:a.hasOwnProperty("dataIndex")?s.indexOfRawIndex(a.dataIndex):null;return l!=null?OK(s,l,n):RK(s,n)},t.prototype.getViewOfComponentModel=function(r){return this._componentsMap[r.__viewId]},t.prototype.getViewOfSeriesModel=function(r){return this._chartsMap[r.__viewId]},t.prototype._initEvents=function(){var r=this;R(PX,function(n){var i=function(a){var o=r.getModel(),s=a.target,l,u=n==="globalout";if(u?l={}:s&&Ll(s,function(v){var p=dt(v);if(p&&p.dataIndex!=null){var m=p.dataModel||o.getSeriesByIndex(p.seriesIndex);return l=m&&m.getDataParams(p.dataIndex,p.dataType,s)||{},!0}else if(p.eventData)return l=ue({},p.eventData),!0},!0),l){var f=l.componentType,c=l.componentIndex;(f==="markLine"||f==="markPoint"||f==="markArea")&&(f="series",c=l.seriesIndex);var h=f&&c!=null&&o.getComponent(f,c),d=h&&r[h.mainType==="series"?"_chartsMap":"_componentsMap"][h.__viewId];l.event=a,l.type=n,r._$eventProcessor.eventInfo={targetEl:s,packedEvent:l,model:h,view:d},r.trigger(n,l)}};i.zrEventfulCallAtLast=!0,r._zr.on(n,i,r)}),R(iu,function(n,i){r._messageCenter.on(i,function(a){this.trigger(i,a)},r)}),R(["selectchanged"],function(n){r._messageCenter.on(n,function(i){this.trigger(n,i)},r)}),NK(this._messageCenter,this,this._api)},t.prototype.isDisposed=function(){return this._disposed},t.prototype.clear=function(){if(this._disposed){this.id;return}this.setOption({series:[]},!0)},t.prototype.dispose=function(){if(this._disposed){this.id;return}this._disposed=!0;var r=this.getDom();r&&J2(this.getDom(),X0,"");var n=this,i=n._api,a=n._model;R(n._componentsViews,function(o){o.dispose(a,i)}),R(n._chartsViews,function(o){o.dispose(a,i)}),n._zr.dispose(),n._dom=n._model=n._chartsMap=n._componentsMap=n._chartsViews=n._componentsViews=n._scheduler=n._api=n._zr=n._throttledZrFlush=n._theme=n._coordSysMgr=n._messageCenter=null,delete au[n.id]},t.prototype.resize=function(r){if(!this[nr]){if(this._disposed){this.id;return}this._zr.resize(r);var n=this._model;if(this._loadingFX&&this._loadingFX.resize(),!!n){var i=n.resetOption("media"),a=r&&r.silent;this[br]&&(a==null&&(a=this[br].silent),i=!0,this[br]=null),this[nr]=!0;try{i&&Uo(this),$i.update.call(this,{type:"resize",animation:ue({duration:0},r&&r.animation)})}catch(o){throw this[nr]=!1,o}this[nr]=!1,hl.call(this,a),vl.call(this,a)}}},t.prototype.showLoading=function(r,n){if(this._disposed){this.id;return}if(Re(r)&&(n=r,r=""),r=r||"default",this.hideLoading(),!!Em[r]){var i=Em[r](this._api,n),a=this._zr;this._loadingFX=i,a.add(i)}},t.prototype.hideLoading=function(){if(this._disposed){this.id;return}this._loadingFX&&this._zr.remove(this._loadingFX),this._loadingFX=null},t.prototype.makeActionFromEvent=function(r){var n=ue({},r);return n.type=iu[r.type],n},t.prototype.dispatchAction=function(r,n){if(this._disposed){this.id;return}if(Re(n)||(n={silent:!!n}),!!$d[r.type]&&this._model){if(this[nr]){this._pendingActions.push(r);return}var i=n.silent;gp.call(this,r,i);var a=n.flush;a?this._zr.flush():a!==!1&&He.browser.weChat&&this._throttledZrFlush(),hl.call(this,i),vl.call(this,i)}},t.prototype.updateLabelLayout=function(){_n.trigger("series:layoutlabels",this._model,this._api,{updatedSeries:[]})},t.prototype.appendData=function(r){if(this._disposed){this.id;return}var n=r.seriesIndex,i=this.getModel(),a=i.getSeriesByIndex(n);a.appendData(r),this._scheduler.unfinished=!0,this.getZr().wakeUp()},t.internalField=function(){Uo=function(c){var h=c._scheduler;h.restorePipelines(c._model),h.prepareStageTasks(),hp(c,!0),hp(c,!1),h.plan()},hp=function(c,h){for(var d=c._model,v=c._scheduler,p=h?c._componentsViews:c._chartsViews,m=h?c._componentsMap:c._chartsMap,g=c._zr,y=c._api,_=0;_h.get("hoverLayerThreshold")&&!He.node&&!He.worker&&h.eachSeries(function(m){if(!m.preventUsingHoverLayer){var g=c._chartsMap[m.__viewId];g.__alive&&g.eachRendered(function(y){y.states.emphasis&&(y.states.emphasis.hoverLayer=!0)})}})}function o(c,h){var d=c.get("blendMode")||null;h.eachRendered(function(v){v.isGroup||(v.style.blend=d)})}function s(c,h){if(!c.preventAutoZ){var d=c.get("z")||0,v=c.get("zlevel")||0;h.eachRendered(function(p){return l(p,d,v,-1/0),!0})}}function l(c,h,d,v){var p=c.getTextContent(),m=c.getTextGuideLine(),g=c.isGroup;if(g)for(var y=c.childrenRef(),_=0;_0?{duration:p,delay:d.get("delay"),easing:d.get("easing")}:null;h.eachRendered(function(g){if(g.states&&g.states.emphasis){if(fs(g))return;if(g instanceof vt&&bY(g),g.__dirty){var y=g.prevStates;y&&g.useStates(y)}if(v){g.stateTransition=m;var _=g.getTextContent(),b=g.getTextGuideLine();_&&(_.stateTransition=m),b&&(b.stateTransition=m)}g.__dirty&&i(g)}})}_x=function(c){return new(function(h){ge(d,h);function d(){return h!==null&&h.apply(this,arguments)||this}return d.prototype.getCoordinateSystems=function(){return c._coordSysMgr.getCoordinateSystems()},d.prototype.getComponentByElement=function(v){for(;v;){var p=v.__ecComponentInfo;if(p!=null)return c._model.getComponent(p.mainType,p.index);v=v.parent}},d.prototype.enterEmphasis=function(v,p){am(v,p),qr(c)},d.prototype.leaveEmphasis=function(v,p){om(v,p),qr(c)},d.prototype.enterBlur=function(v){fY(v),qr(c)},d.prototype.leaveBlur=function(v){_P(v),qr(c)},d.prototype.enterSelect=function(v){bP(v),qr(c)},d.prototype.leaveSelect=function(v){wP(v),qr(c)},d.prototype.getModel=function(){return c.getModel()},d.prototype.getViewOfComponentModel=function(v){return c.getViewOfComponentModel(v)},d.prototype.getViewOfSeriesModel=function(v){return c.getViewOfSeriesModel(v)},d}(SE))(c)},dL=function(c){function h(d,v){for(var p=0;p=0)){xx.push(r);var a=UE.wrapStageHandler(r,i);a.__prio=t,a.__raw=r,e.push(a)}}function yL(e,t){Em[e]=t}function kX(e,t,r){var n=hX("registerMap");n&&n(e,t,r)}var NX=Hq;Do(q0,pK);Do(Fh,gK);Do(Fh,mK);Do(q0,DK);Do(Fh,IK);Do(oL,fX);gL(CE);mL(gX,Sq);yL("default",yK);js({type:co,event:co,update:co},Er);js({type:Uc,event:Uc,update:Uc},Er);js({type:Ql,event:Ql,update:Ql},Er);js({type:Yc,event:Yc,update:Yc},Er);js({type:Jl,event:Jl,update:Jl},Er);pL("light",PK);pL("dark",EK);function pl(e){return e==null?0:e.length||1}function Cx(e){return e}var BX=function(){function e(t,r,n,i,a,o){this._old=t,this._new=r,this._oldKeyGetter=n||Cx,this._newKeyGetter=i||Cx,this.context=a,this._diffModeMultiple=o==="multiple"}return e.prototype.add=function(t){return this._add=t,this},e.prototype.update=function(t){return this._update=t,this},e.prototype.updateManyToOne=function(t){return this._updateManyToOne=t,this},e.prototype.updateOneToMany=function(t){return this._updateOneToMany=t,this},e.prototype.updateManyToMany=function(t){return this._updateManyToMany=t,this},e.prototype.remove=function(t){return this._remove=t,this},e.prototype.execute=function(){this[this._diffModeMultiple?"_executeMultiple":"_executeOneToOne"]()},e.prototype._executeOneToOne=function(){var t=this._old,r=this._new,n={},i=new Array(t.length),a=new Array(r.length);this._initIndexMap(t,null,i,"_oldKeyGetter"),this._initIndexMap(r,n,a,"_newKeyGetter");for(var o=0;o1){var f=l.shift();l.length===1&&(n[s]=l[0]),this._update&&this._update(f,o)}else u===1?(n[s]=null,this._update&&this._update(l,o)):this._remove&&this._remove(o)}this._performRestAdd(a,n)},e.prototype._executeMultiple=function(){var t=this._old,r=this._new,n={},i={},a=[],o=[];this._initIndexMap(t,n,a,"_oldKeyGetter"),this._initIndexMap(r,i,o,"_newKeyGetter");for(var s=0;s1&&h===1)this._updateManyToOne&&this._updateManyToOne(f,u),i[l]=null;else if(c===1&&h>1)this._updateOneToMany&&this._updateOneToMany(f,u),i[l]=null;else if(c===1&&h===1)this._update&&this._update(f,u),i[l]=null;else if(c>1&&h>1)this._updateManyToMany&&this._updateManyToMany(f,u),i[l]=null;else if(c>1)for(var d=0;d1)for(var s=0;s30}var gl=Re,Hi=Ne,UX=typeof Int32Array>"u"?Array:Int32Array,YX="e\0\0",Tx=-1,jX=["hasItemOption","_nameList","_idList","_invertedIndicesMap","_dimSummary","userOutput","_rawData","_dimValueGetter","_nameDimIdx","_idDimIdx","_nameRepeatCount"],qX=["_approximateExtent"],Mx,lc,ml,yl,_p,uc,bp,CL=function(){function e(t,r){this.type="list",this._dimOmitted=!1,this._nameList=[],this._idList=[],this._visual={},this._layout={},this._itemVisuals=[],this._itemLayouts=[],this._graphicEls=[],this._approximateExtent={},this._calculationInfo={},this.hasItemOption=!1,this.TRANSFERABLE_METHODS=["cloneShallow","downSample","lttbDownSample","map"],this.CHANGABLE_METHODS=["filterSelf","selectRange"],this.DOWNSAMPLE_METHODS=["downSample","lttbDownSample"];var n,i=!1;bL(t)?(n=t.dimensions,this._dimOmitted=t.isDimensionOmitted(),this._schema=t):(i=!0,n=t),n=n||["x","y"];for(var a={},o=[],s={},l=!1,u={},f=0;f=r)){var n=this._store,i=n.getProvider();this._updateOrdinalMeta();var a=this._nameList,o=this._idList,s=i.getSource().sourceFormat,l=s===hn;if(l&&!i.pure)for(var u=[],f=t;f0},e.prototype.ensureUniqueItemVisual=function(t,r){var n=this._itemVisuals,i=n[t];i||(i=n[t]={});var a=i[r];return a==null&&(a=this.getVisual(r),ye(a)?a=a.slice():gl(a)&&(a=ue({},a)),i[r]=a),a},e.prototype.setItemVisual=function(t,r,n){var i=this._itemVisuals[t]||{};this._itemVisuals[t]=i,gl(r)?ue(i,r):i[r]=n},e.prototype.clearAllVisual=function(){this._visual={},this._itemVisuals=[]},e.prototype.setLayout=function(t,r){gl(t)?ue(this._layout,t):this._layout[t]=r},e.prototype.getLayout=function(t){return this._layout[t]},e.prototype.getItemLayout=function(t){return this._itemLayouts[t]},e.prototype.setItemLayout=function(t,r,n){this._itemLayouts[t]=n?ue(this._itemLayouts[t]||{},r):r},e.prototype.clearItemLayouts=function(){this._itemLayouts.length=0},e.prototype.setItemGraphicEl=function(t,r){var n=this.hostModel&&this.hostModel.seriesIndex;eY(n,this.dataType,t,r),this._graphicEls[t]=r},e.prototype.getItemGraphicEl=function(t){return this._graphicEls[t]},e.prototype.eachItemGraphicEl=function(t,r){R(this._graphicEls,function(n,i){n&&t&&t.call(r,n,i)})},e.prototype.cloneShallow=function(t){return t||(t=new e(this._schema?this._schema:Hi(this.dimensions,this._getDimInfo,this),this.hostModel)),_p(t,this),t._store=this._store,t},e.prototype.wrapMethod=function(t,r){var n=this[t];Ye(n)&&(this.__wrappedMethods=this.__wrappedMethods||[],this.__wrappedMethods.push(t),this[t]=function(){var i=n.apply(this,arguments);return r.apply(this,[i].concat(n0(arguments)))})},e.internalField=function(){Mx=function(t){var r=t._invertedIndicesMap;R(r,function(n,i){var a=t._dimInfos[i],o=a.ordinalMeta,s=t._store;if(o){n=r[i]=new UX(o.categories.length);for(var l=0;l1&&(l+="__ec__"+f),i[r]=l}}}(),e}();function TL(e,t){H0(e)||(e=z0(e)),t=t||{};var r=t.coordDimensions||[],n=t.dimensionsDefine||e.dimensionsDefine||[],i=je(),a=[],o=XX(e,r,n,t.dimensionsCount),s=t.canOmitUnusedDimensions&&xL(o),l=n===e.dimensionsDefine,u=l?SL(e):wL(n),f=t.encodeDefine;!f&&t.encodeDefaulter&&(f=t.encodeDefaulter(e,o));for(var c=je(f),h=new IE(o),d=0;d0&&(n.name=i+(a-1)),a++,t.set(i,a)}}function XX(e,t,r,n){var i=Math.max(e.dimensionsDetectedCount||1,t.length,r.length,n||0);return R(t,function(a){var o;Re(a)&&(o=a.dimsDef)&&(i=Math.max(i,o.length))}),i}function ZX(e,t,r){if(r||t.hasKey(e)){for(var n=0;t.hasKey(e+n);)n++;e+=n}return t.set(e,!0),e}var QX=function(){function e(t){this.coordSysDims=[],this.axisMap=je(),this.categoryAxisMap=je(),this.coordSysName=t}return e}();function JX(e){var t=e.get("coordinateSystem"),r=new QX(t),n=eZ[t];if(n)return n(e,r,r.axisMap,r.categoryAxisMap),r}var eZ={cartesian2d:function(e,t,r,n){var i=e.getReferringComponents("xAxis",Tn).models[0],a=e.getReferringComponents("yAxis",Tn).models[0];t.coordSysDims=["x","y"],r.set("x",i),r.set("y",a),Yo(i)&&(n.set("x",i),t.firstCategoryDimIndex=0),Yo(a)&&(n.set("y",a),t.firstCategoryDimIndex==null&&(t.firstCategoryDimIndex=1))},singleAxis:function(e,t,r,n){var i=e.getReferringComponents("singleAxis",Tn).models[0];t.coordSysDims=["single"],r.set("single",i),Yo(i)&&(n.set("single",i),t.firstCategoryDimIndex=0)},polar:function(e,t,r,n){var i=e.getReferringComponents("polar",Tn).models[0],a=i.findAxisModel("radiusAxis"),o=i.findAxisModel("angleAxis");t.coordSysDims=["radius","angle"],r.set("radius",a),r.set("angle",o),Yo(a)&&(n.set("radius",a),t.firstCategoryDimIndex=0),Yo(o)&&(n.set("angle",o),t.firstCategoryDimIndex==null&&(t.firstCategoryDimIndex=1))},geo:function(e,t,r,n){t.coordSysDims=["lng","lat"]},parallel:function(e,t,r,n){var i=e.ecModel,a=i.getComponent("parallel",e.get("parallelIndex")),o=t.coordSysDims=a.dimensions.slice();R(a.parallelAxisIndex,function(s,l){var u=i.getComponent("parallelAxis",s),f=o[l];r.set(f,u),Yo(u)&&(n.set(f,u),t.firstCategoryDimIndex==null&&(t.firstCategoryDimIndex=l))})}};function Yo(e){return e.get("type")==="category"}function tZ(e,t,r){r=r||{};var n=r.byIndex,i=r.stackedCoordDimension,a,o,s;rZ(t)?a=t:(o=t.schema,a=o.dimensions,s=t.store);var l=!!(e&&e.get("stack")),u,f,c,h;if(R(a,function(y,_){Ee(y)&&(a[_]=y={name:y}),l&&!y.isExtraCoord&&(!n&&!u&&y.ordinalMeta&&(u=y),!f&&y.type!=="ordinal"&&y.type!=="time"&&(!i||i===y.coordDim)&&(f=y))}),f&&!n&&!u&&(n=!0),f){c="__\0ecstackresult_"+e.id,h="__\0ecstackedover_"+e.id,u&&(u.createInvertedIndices=!0);var d=f.coordDim,v=f.type,p=0;R(a,function(y){y.coordDim===d&&p++});var m={name:c,coordDim:d,coordDimIndex:p,type:v,isExtraCoord:!0,isCalculationCoord:!0,storeDimIndex:a.length},g={name:h,coordDim:h,coordDimIndex:p+1,type:v,isExtraCoord:!0,isCalculationCoord:!0,storeDimIndex:a.length+1};o?(s&&(m.storeDimIndex=s.ensureCalculationDimension(h,v),g.storeDimIndex=s.ensureCalculationDimension(c,v)),o.appendCalculationDimension(m),o.appendCalculationDimension(g)):(a.push(m),a.push(g))}return{stackedDimension:f&&f.name,stackedByDimension:u&&u.name,isStackedByIndex:n,stackedOverDimension:h,stackResultDimension:c}}function rZ(e){return!bL(e.schema)}function ML(e,t){return!!t&&t===e.getCalculationInfo("stackedDimension")}function nZ(e,t){return ML(e,t)?e.getCalculationInfo("stackResultDimension"):t}function iZ(e,t){var r=e.get("coordinateSystem"),n=$0.get(r),i;return t&&t.coordSysDims&&(i=Ne(t.coordSysDims,function(a){var o={name:a},s=t.axisMap.get(a);if(s){var l=s.get("type");o.type=zX(l)}return o})),i||(i=n&&(n.getDimensionsInfo?n.getDimensionsInfo():n.dimensions.slice())||["x","y"]),i}function aZ(e,t,r){var n,i;return r&&R(e,function(a,o){var s=a.coordDim,l=r.categoryAxisMap.get(s);l&&(n==null&&(n=o),a.ordinalMeta=l.getOrdinalMeta(),t&&(a.createInvertedIndices=!0)),a.otherDims.itemName!=null&&(i=!0)}),!i&&n!=null&&(e[n].otherDims.itemName=0),n}function AL(e,t,r){r=r||{};var n=t.getSourceManager(),i,a=!1;e?(a=!0,i=z0(e)):(i=n.getSource(),a=i.sourceFormat===hn);var o=JX(t),s=iZ(t,o),l=r.useEncodeDefaulter,u=Ye(l)?l:l?Ot(Kj,s,t):null,f={coordDimensions:s,generateCoord:r.generateCoord,encodeDefine:t.getEncode(),encodeDefaulter:u,canOmitUnusedDimensions:!a},c=TL(i,f),h=aZ(c.dimensions,r.createInvertedIndices,o),d=a?null:n.getSharedDataStore(c),v=tZ(t,{schema:c,store:d}),p=new CL(c,t);p.setCalculationInfo(v);var m=h!=null&&oZ(i)?function(g,y,_,b){return b===h?_:this.defaultDimValueGetter(g,y,_,b)}:null;return p.hasItemOption=!1,p.initData(a?i:d,null,m),p}function oZ(e){if(e.sourceFormat===hn){var t=sZ(e.data||[]);return!ye(of(t))}}function sZ(e){for(var t=0;tr[1]&&(r[1]=t[1])},e.prototype.unionExtentFromData=function(t,r){this.unionExtent(t.getApproximateExtent(r))},e.prototype.getExtent=function(){return this._extent.slice()},e.prototype.setExtent=function(t,r){var n=this._extent;isNaN(t)||(n[0]=t),isNaN(r)||(n[1]=r)},e.prototype.isInExtentRange=function(t){return this._extent[0]<=t&&this._extent[1]>=t},e.prototype.isBlank=function(){return this._isBlank},e.prototype.setBlank=function(t){this._isBlank=t},e}();Sh(oi);var lZ=0,Lm=function(){function e(t){this.categories=t.categories||[],this._needCollect=t.needCollect,this._deduplication=t.deduplication,this.uid=++lZ}return e.createByAxisModel=function(t){var r=t.option,n=r.data,i=n&&Ne(n,uZ);return new e({categories:i,needCollect:!i,deduplication:r.dedplication!==!1})},e.prototype.getOrdinal=function(t){return this._getOrCreateMap().get(t)},e.prototype.parseAndCollect=function(t){var r,n=this._needCollect;if(!Ee(t)&&!n)return t;if(n&&!this._deduplication)return r=this.categories.length,this.categories[r]=t,r;var i=this._getOrCreateMap();return r=i.get(t),r==null&&(n?(r=this.categories.length,this.categories[r]=t,i.set(t,r)):r=NaN),r},e.prototype._getOrCreateMap=function(){return this._map||(this._map=je(this.categories))},e}();function uZ(e){return Re(e)&&e.value!=null?e.value:e+""}function Dm(e){return e.type==="interval"||e.type==="log"}function fZ(e,t,r,n){var i={},a=e[1]-e[0],o=i.interval=q2(a/t,!0);r!=null&&on&&(o=i.interval=n);var s=i.intervalPrecision=PL(o),l=i.niceTickExtent=[Ft(Math.ceil(e[0]/o)*o,s),Ft(Math.floor(e[1]/o)*o,s)];return cZ(l,e),i}function wp(e){var t=Math.pow(10,d0(e)),r=e/t;return r?r===2?r=3:r===3?r=5:r*=2:r=1,Ft(r*t)}function PL(e){return vi(e)+2}function Ax(e,t,r){e[t]=Math.max(Math.min(e[t],r[1]),r[0])}function cZ(e,t){!isFinite(e[0])&&(e[0]=t[0]),!isFinite(e[1])&&(e[1]=t[1]),Ax(e,0,t),Ax(e,1,t),e[0]>e[1]&&(e[0]=e[1])}function $h(e,t){return e>=t[0]&&e<=t[1]}function Hh(e,t){return t[1]===t[0]?.5:(e-t[0])/(t[1]-t[0])}function zh(e,t){return e*(t[1]-t[0])+t[0]}var EL=function(e){ge(t,e);function t(r){var n=e.call(this,r)||this;n.type="ordinal";var i=n.getSetting("ordinalMeta");return i||(i=new Lm({})),ye(i)&&(i=new Lm({categories:Ne(i,function(a){return Re(a)?a.value:a})})),n._ordinalMeta=i,n._extent=n.getSetting("extent")||[0,i.categories.length-1],n}return t.prototype.parse=function(r){return r==null?NaN:Ee(r)?this._ordinalMeta.getOrdinal(r):Math.round(r)},t.prototype.contain=function(r){return r=this.parse(r),$h(r,this._extent)&&this._ordinalMeta.categories[r]!=null},t.prototype.normalize=function(r){return r=this._getTickNumber(this.parse(r)),Hh(r,this._extent)},t.prototype.scale=function(r){return r=Math.round(zh(r,this._extent)),this.getRawOrdinalNumber(r)},t.prototype.getTicks=function(){for(var r=[],n=this._extent,i=n[0];i<=n[1];)r.push({value:i}),i++;return r},t.prototype.getMinorTicks=function(r){},t.prototype.setSortInfo=function(r){if(r==null){this._ordinalNumbersByTick=this._ticksByOrdinalNumber=null;return}for(var n=r.ordinalNumbers,i=this._ordinalNumbersByTick=[],a=this._ticksByOrdinalNumber=[],o=0,s=this._ordinalMeta.categories.length,l=Math.min(s,n.length);o=0&&r=0&&r=r},t.prototype.getOrdinalMeta=function(){return this._ordinalMeta},t.prototype.calcNiceTicks=function(){},t.prototype.calcNiceExtent=function(){},t.type="ordinal",t}(oi);oi.registerClass(EL);const LL=EL;var za=Ft,DL=function(e){ge(t,e);function t(){var r=e!==null&&e.apply(this,arguments)||this;return r.type="interval",r._interval=0,r._intervalPrecision=2,r}return t.prototype.parse=function(r){return r},t.prototype.contain=function(r){return $h(r,this._extent)},t.prototype.normalize=function(r){return Hh(r,this._extent)},t.prototype.scale=function(r){return zh(r,this._extent)},t.prototype.setExtent=function(r,n){var i=this._extent;isNaN(r)||(i[0]=parseFloat(r)),isNaN(n)||(i[1]=parseFloat(n))},t.prototype.unionExtent=function(r){var n=this._extent;r[0]n[1]&&(n[1]=r[1]),this.setExtent(n[0],n[1])},t.prototype.getInterval=function(){return this._interval},t.prototype.setInterval=function(r){this._interval=r,this._niceExtent=this._extent.slice(),this._intervalPrecision=PL(r)},t.prototype.getTicks=function(r){var n=this._interval,i=this._extent,a=this._niceExtent,o=this._intervalPrecision,s=[];if(!n)return s;var l=1e4;i[0]l)return[];var f=s.length?s[s.length-1].value:a[1];return i[1]>f&&(r?s.push({value:za(f+n,o)}):s.push({value:i[1]})),s},t.prototype.getMinorTicks=function(r){for(var n=this.getTicks(!0),i=[],a=this.getExtent(),o=1;oa[0]&&d0&&(a=a===null?s:Math.min(a,s))}r[n]=a}}return r}function RL(e){var t=vZ(e),r=[];return R(e,function(n){var i=n.coordinateSystem,a=i.getBaseAxis(),o=a.getExtent(),s;if(a.type==="category")s=a.getBandWidth();else if(a.type==="value"||a.type==="time"){var l=a.dim+"_"+a.index,u=t[l],f=Math.abs(o[1]-o[0]),c=a.scale.getExtent(),h=Math.abs(c[1]-c[0]);s=u?f/h*u:f}else{var d=n.getData();s=Math.abs(o[1]-o[0])/d.count()}var v=yt(n.get("barWidth"),s),p=yt(n.get("barMaxWidth"),s),m=yt(n.get("barMinWidth")||(NL(n)?.5:1),s),g=n.get("barGap"),y=n.get("barCategoryGap");r.push({bandWidth:s,barWidth:v,barMaxWidth:p,barMinWidth:m,barGap:g,barCategoryGap:y,axisKey:t_(a),stackId:e_(n)})}),pZ(r)}function pZ(e){var t={};R(e,function(n,i){var a=n.axisKey,o=n.bandWidth,s=t[a]||{bandWidth:o,remainedWidth:o,autoWidthCount:0,categoryGap:null,gap:"20%",stacks:{}},l=s.stacks;t[a]=s;var u=n.stackId;l[u]||s.autoWidthCount++,l[u]=l[u]||{width:0,maxWidth:0};var f=n.barWidth;f&&!l[u].width&&(l[u].width=f,f=Math.min(s.remainedWidth,f),s.remainedWidth-=f);var c=n.barMaxWidth;c&&(l[u].maxWidth=c);var h=n.barMinWidth;h&&(l[u].minWidth=h);var d=n.barGap;d!=null&&(s.gap=d);var v=n.barCategoryGap;v!=null&&(s.categoryGap=v)});var r={};return R(t,function(n,i){r[i]={};var a=n.stacks,o=n.bandWidth,s=n.categoryGap;if(s==null){var l=Ct(a).length;s=Math.max(35-l*4,15)+"%"}var u=yt(s,o),f=yt(n.gap,1),c=n.remainedWidth,h=n.autoWidthCount,d=(c-u)/(h+(h-1)*f);d=Math.max(d,0),R(a,function(g){var y=g.maxWidth,_=g.minWidth;if(g.width){var b=g.width;y&&(b=Math.min(b,y)),_&&(b=Math.max(b,_)),g.width=b,c-=b+f*b,h--}else{var b=d;y&&yb&&(b=_),b!==d&&(g.width=b,c-=b+f*b,h--)}}),d=(c-u)/(h+(h-1)*f),d=Math.max(d,0);var v=0,p;R(a,function(g,y){g.width||(g.width=d),p=g,v+=g.width*(1+f)}),p&&(v-=p.width*f);var m=-v/2;R(a,function(g,y){r[i][y]=r[i][y]||{bandWidth:o,offset:m,width:g.width},m+=g.width*(1+f)})}),r}function gZ(e,t,r){if(e&&t){var n=e[t_(t)];return n!=null&&r!=null?n[e_(r)]:n}}function mZ(e,t){var r=OL(e,t),n=RL(r);R(r,function(i){var a=i.getData(),o=i.coordinateSystem,s=o.getBaseAxis(),l=e_(i),u=n[t_(s)][l],f=u.offset,c=u.width;a.setLayout({bandWidth:u.bandWidth,offset:f,size:c})})}function yZ(e){return{seriesType:e,plan:HE(),reset:function(t){if(kL(t)){var r=t.getData(),n=t.coordinateSystem,i=n.getBaseAxis(),a=n.getOtherAxis(i),o=r.getDimensionIndex(r.mapDimension(a.dim)),s=r.getDimensionIndex(r.mapDimension(i.dim)),l=t.get("showBackground",!0),u=r.mapDimension(a.dim),f=r.getCalculationInfo("stackResultDimension"),c=ML(r,u)&&!!r.getCalculationInfo("stackedOnSeries"),h=a.isHorizontal(),d=_Z(i,a),v=NL(t),p=t.get("barMinHeight")||0,m=f&&r.getDimensionIndex(f),g=r.getLayout("size"),y=r.getLayout("offset");return{progress:function(_,b){for(var x=_.count,w=v&&Sp(x*3),S=v&&l&&Sp(x*3),C=v&&Sp(x),M=n.master.getRect(),A=h?M.width:M.height,P,E=b.getStore(),L=0;(P=_.next())!=null;){var O=E.get(c?m:o,P),N=E.get(s,P),H=d,V=void 0;c&&(V=+O-E.get(o,P));var U=void 0,F=void 0,z=void 0,te=void 0;if(h){var J=n.dataToPoint([O,N]);if(c){var me=n.dataToPoint([V,N]);H=me[0]}U=H,F=J[1]+y,z=J[0]-H,te=g,Math.abs(z)>>1;e[i][1]i&&(this._approxInterval=i);var s=fc.length,l=Math.min(bZ(fc,this._approxInterval,0,s),s-1);this._interval=fc[l][1],this._minLevelUnit=fc[Math.max(l-1,0)][0]},t.prototype.parse=function(r){return Tt(r)?r:+Ti(r)},t.prototype.contain=function(r){return $h(this.parse(r),this._extent)},t.prototype.normalize=function(r){return Hh(this.parse(r),this._extent)},t.prototype.scale=function(r){return zh(r,this._extent)},t.type="time",t}(df),fc=[["second",I0],["minute",O0],["hour",tu],["quarter-day",tu*6],["half-day",tu*12],["day",on*1.2],["half-week",on*3.5],["week",on*7],["month",on*31],["quarter",on*95],["half-year",gS/2],["year",gS]];function wZ(e,t,r,n){var i=Ti(t),a=Ti(r),o=function(v){return yS(i,v,n)===yS(a,v,n)},s=function(){return o("year")},l=function(){return s()&&o("month")},u=function(){return l()&&o("day")},f=function(){return u()&&o("hour")},c=function(){return f()&&o("minute")},h=function(){return c()&&o("second")},d=function(){return h()&&o("millisecond")};switch(e){case"year":return s();case"month":return l();case"day":return u();case"hour":return f();case"minute":return c();case"second":return h();case"millisecond":return d()}}function SZ(e,t){return e/=on,e>16?16:e>7.5?7:e>3.5?4:e>1.5?2:1}function xZ(e){var t=30*on;return e/=t,e>6?6:e>3?3:e>2?2:1}function CZ(e){return e/=tu,e>12?12:e>6?6:e>3.5?4:e>2?2:1}function Px(e,t){return e/=t?O0:I0,e>30?30:e>20?20:e>15?15:e>10?10:e>5?5:e>2?2:1}function TZ(e){return q2(e,!0)}function MZ(e,t,r){var n=new Date(e);switch(cs(t)){case"year":case"month":n[sE(r)](0);case"day":n[lE(r)](1);case"hour":n[uE(r)](0);case"minute":n[fE(r)](0);case"second":n[cE(r)](0),n[dE(r)](0)}return n.getTime()}function AZ(e,t,r,n){var i=1e4,a=aE,o=0;function s(A,P,E,L,O,N,H){for(var V=new Date(P),U=P,F=V[L]();U1&&N===0&&E.unshift({value:E[0].value-U})}}for(var N=0;N=n[0]&&y<=n[1]&&c++)}var _=(n[1]-n[0])/t;if(c>_*1.5&&h>_/1.5||(u.push(m),c>_||e===a[d]))break}f=[]}}}for(var b=jt(Ne(u,function(A){return jt(A,function(P){return P.value>=n[0]&&P.value<=n[1]&&!P.notAdd})}),function(A){return A.length>0}),x=[],w=b.length-1,d=0;d0;)a*=10;var s=[Ft(DZ(n[0]/a)*a),Ft(LZ(n[1]/a)*a)];this._interval=a,this._niceExtent=s}},t.prototype.calcNiceExtent=function(r){ou.calcNiceExtent.call(this,r),this._fixMin=r.fixMin,this._fixMax=r.fixMax},t.prototype.parse=function(r){return r},t.prototype.contain=function(r){return r=pn(r)/pn(this.base),$h(r,this._extent)},t.prototype.normalize=function(r){return r=pn(r)/pn(this.base),Hh(r,this._extent)},t.prototype.scale=function(r){return r=zh(r,this._extent),cc(this.base,r)},t.type="log",t}(oi),FL=r_.prototype;FL.getMinorTicks=ou.getMinorTicks;FL.getLabel=ou.getLabel;function dc(e,t){return EZ(e,vi(t))}oi.registerClass(r_);const IZ=r_;var OZ=function(){function e(t,r,n){this._prepareParams(t,r,n)}return e.prototype._prepareParams=function(t,r,n){n[1]0&&l>0&&!u&&(s=0),s<0&&l<0&&!f&&(l=0));var h=this._determinedMin,d=this._determinedMax;return h!=null&&(s=h,u=!0),d!=null&&(l=d,f=!0),{min:s,max:l,minFixed:u,maxFixed:f,isBlank:c}},e.prototype.modifyDataMinMax=function(t,r){this[kZ[t]]=r},e.prototype.setDeterminedMinMax=function(t,r){var n=RZ[t];this[n]=r},e.prototype.freeze=function(){this.frozen=!0},e}(),RZ={min:"_determinedMin",max:"_determinedMax"},kZ={min:"_dataMin",max:"_dataMax"};function NZ(e,t,r){var n=e.rawExtentInfo;return n||(n=new OZ(e,t,r),e.rawExtentInfo=n,n)}function hc(e,t){return t==null?null:bd(t)?NaN:e.parse(t)}function $L(e,t){var r=e.type,n=NZ(e,t,e.getExtent()).calculate();e.setBlank(n.isBlank);var i=n.min,a=n.max,o=t.ecModel;if(o&&r==="time"){var s=OL("bar",o),l=!1;if(R(s,function(c){l=l||c.getBaseAxis()===t.axis}),l){var u=RL(s),f=BZ(i,a,t,u);i=f.min,a=f.max}}return{extent:[i,a],fixMin:n.minFixed,fixMax:n.maxFixed}}function BZ(e,t,r,n){var i=r.axis.getExtent(),a=i[1]-i[0],o=gZ(n,r.axis);if(o===void 0)return{min:e,max:t};var s=1/0;R(o,function(d){s=Math.min(d.offset,s)});var l=-1/0;R(o,function(d){l=Math.max(d.offset+d.width,l)}),s=Math.abs(s),l=Math.abs(l);var u=s+l,f=t-e,c=1-(s+l)/a,h=f/c-f;return t+=h*(l/u),e-=h*(s/u),{min:e,max:t}}function Lx(e,t){var r=t,n=$L(e,r),i=n.extent,a=r.get("splitNumber");e instanceof IZ&&(e.base=r.get("logBase"));var o=e.type,s=r.get("interval"),l=o==="interval"||o==="time";e.setExtent(i[0],i[1]),e.calcNiceExtent({splitNumber:a,fixMin:n.fixMin,fixMax:n.fixMax,minInterval:l?r.get("minInterval"):null,maxInterval:l?r.get("maxInterval"):null}),s!=null&&e.setInterval&&e.setInterval(s)}function FZ(e,t){if(t=t||e.get("type"),t)switch(t){case"category":return new LL({ordinalMeta:e.getOrdinalMeta?e.getOrdinalMeta():e.getCategories(),extent:[1/0,-1/0]});case"time":return new PZ({locale:e.ecModel.getLocaleModel(),useUTC:e.ecModel.get("useUTC")});default:return new(oi.getClass(t)||df)}}function $Z(e){var t=e.scale.getExtent(),r=t[0],n=t[1];return!(r>0&&n>0||r<0&&n<0)}function hf(e){var t=e.getLabelModel().get("formatter"),r=e.type==="category"?e.scale.getExtent()[0]:null;return e.scale.type==="time"?function(n){return function(i,a){return e.scale.getFormattedLabel(i,a,n)}}(t):Ee(t)?function(n){return function(i){var a=e.scale.getLabel(i),o=n.replace("{value}",a??"");return o}}(t):Ye(t)?function(n){return function(i,a){return r!=null&&(a=i.value-r),n(n_(e,i),a,i.level!=null?{level:i.level}:null)}}(t):function(n){return e.scale.getLabel(n)}}function n_(e,t){return e.type==="category"?e.scale.getLabel(t):t.value}function HZ(e){var t=e.model,r=e.scale;if(!(!t.get(["axisLabel","show"])||r.isBlank())){var n,i,a=r.getExtent();r instanceof LL?i=r.count():(n=r.getTicks(),i=n.length);var o=e.getLabelModel(),s=hf(e),l,u=1;i>40&&(u=Math.ceil(i/40));for(var f=0;f=0||(Dx.push(e),Ye(e)&&(e={install:e}),e.install(GZ))}var zu=Et();function UZ(e){return e.type==="category"?jZ(e):KZ(e)}function YZ(e,t){return e.type==="category"?qZ(e,t):{ticks:Ne(e.scale.getTicks(),function(r){return r.value})}}function jZ(e){var t=e.getLabelModel(),r=zL(e,t);return!t.get("show")||e.scale.isBlank()?{labels:[],labelCategoryInterval:r.labelCategoryInterval}:r}function zL(e,t){var r=VL(e,"labels"),n=i_(t),i=WL(r,n);if(i)return i;var a,o;return Ye(n)?a=YL(e,n):(o=n==="auto"?XZ(e):n,a=UL(e,o)),GL(r,n,{labels:a,labelCategoryInterval:o})}function qZ(e,t){var r=VL(e,"ticks"),n=i_(t),i=WL(r,n);if(i)return i;var a,o;if((!t.get("show")||e.scale.isBlank())&&(a=[]),Ye(n))a=YL(e,n,!0);else if(n==="auto"){var s=zL(e,e.getLabelModel());o=s.labelCategoryInterval,a=Ne(s.labels,function(l){return l.tickValue})}else o=n,a=UL(e,o,!0);return GL(r,n,{ticks:a,tickCategoryInterval:o})}function KZ(e){var t=e.scale.getTicks(),r=hf(e);return{labels:Ne(t,function(n,i){return{level:n.level,formattedLabel:r(n,i),rawLabel:e.scale.getLabel(n),tickValue:n.value}})}}function VL(e,t){return zu(e)[t]||(zu(e)[t]=[])}function WL(e,t){for(var r=0;r40&&(s=Math.max(1,Math.floor(o/40)));for(var l=a[0],u=e.dataToCoord(l+1)-e.dataToCoord(l),f=Math.abs(u*Math.cos(n)),c=Math.abs(u*Math.sin(n)),h=0,d=0;l<=a[1];l+=s){var v=0,p=0,m=u0(r({value:l}),t.font,"center","top");v=m.width*1.3,p=m.height*1.3,h=Math.max(h,v,7),d=Math.max(d,p,7)}var g=h/f,y=d/c;isNaN(g)&&(g=1/0),isNaN(y)&&(y=1/0);var _=Math.max(0,Math.floor(Math.min(g,y))),b=zu(e.model),x=e.getExtent(),w=b.lastAutoInterval,S=b.lastTickCount;return w!=null&&S!=null&&Math.abs(w-_)<=1&&Math.abs(S-o)<=1&&w>_&&b.axisExtent0===x[0]&&b.axisExtent1===x[1]?_=w:(b.lastTickCount=o,b.lastAutoInterval=_,b.axisExtent0=x[0],b.axisExtent1=x[1]),_}function QZ(e){var t=e.getLabelModel();return{axisRotate:e.getRotate?e.getRotate():e.isHorizontal&&!e.isHorizontal()?90:0,labelRotate:t.get("rotate")||0,font:t.getFont()}}function UL(e,t,r){var n=hf(e),i=e.scale,a=i.getExtent(),o=e.getLabelModel(),s=[],l=Math.max((t||0)+1,1),u=a[0],f=i.count();u!==0&&l>1&&f/l>2&&(u=Math.round(Math.ceil(u/l)*l));var c=HL(e),h=o.get("showMinLabel")||c,d=o.get("showMaxLabel")||c;h&&u!==a[0]&&p(a[0]);for(var v=u;v<=a[1];v+=l)p(v);d&&v-l!==a[1]&&p(a[1]);function p(m){var g={value:m};s.push(r?m:{formattedLabel:n(g),rawLabel:i.getLabel(g),tickValue:m})}return s}function YL(e,t,r){var n=e.scale,i=hf(e),a=[];return R(n.getTicks(),function(o){var s=n.getLabel(o),l=o.value;t(o.value,s)&&a.push(r?l:{formattedLabel:i(o),rawLabel:s,tickValue:l})}),a}var Ix=[0,1],JZ=function(){function e(t,r,n){this.onBand=!1,this.inverse=!1,this.dim=t,this.scale=r,this._extent=n||[0,0]}return e.prototype.contain=function(t){var r=this._extent,n=Math.min(r[0],r[1]),i=Math.max(r[0],r[1]);return t>=n&&t<=i},e.prototype.containData=function(t){return this.scale.contain(t)},e.prototype.getExtent=function(){return this._extent.slice()},e.prototype.getPixelPrecision=function(t){return O9(t||this.scale.getExtent(),this._extent)},e.prototype.setExtent=function(t,r){var n=this._extent;n[0]=t,n[1]=r},e.prototype.dataToCoord=function(t,r){var n=this._extent,i=this.scale;return t=i.normalize(t),this.onBand&&i.type==="ordinal"&&(n=n.slice(),Ox(n,i.count())),Jg(t,Ix,n,r)},e.prototype.coordToData=function(t,r){var n=this._extent,i=this.scale;this.onBand&&i.type==="ordinal"&&(n=n.slice(),Ox(n,i.count()));var a=Jg(t,n,Ix,r);return this.scale.scale(a)},e.prototype.pointToData=function(t,r){},e.prototype.getTicksCoords=function(t){t=t||{};var r=t.tickModel||this.getTickModel(),n=YZ(this,r),i=n.ticks,a=Ne(i,function(s){return{coord:this.dataToCoord(this.scale.type==="ordinal"?this.scale.getRawOrdinalNumber(s):s),tickValue:s}},this),o=r.get("alignWithLabel");return eQ(this,a,o,t.clamp),a},e.prototype.getMinorTicksCoords=function(){if(this.scale.type==="ordinal")return[];var t=this.model.getModel("minorTick"),r=t.get("splitNumber");r>0&&r<100||(r=5);var n=this.scale.getMinorTicks(r),i=Ne(n,function(a){return Ne(a,function(o){return{coord:this.dataToCoord(o),tickValue:o}},this)},this);return i},e.prototype.getViewLabels=function(){return UZ(this).labels},e.prototype.getLabelModel=function(){return this.model.getModel("axisLabel")},e.prototype.getTickModel=function(){return this.model.getModel("axisTick")},e.prototype.getBandWidth=function(){var t=this._extent,r=this.scale.getExtent(),n=r[1]-r[0]+(this.onBand?1:0);n===0&&(n=1);var i=Math.abs(t[1]-t[0]);return Math.abs(i)/n},e.prototype.calculateCategoryInterval=function(){return ZZ(this)},e}();function Ox(e,t){var r=e[1]-e[0],n=t,i=r/n/2;e[0]+=i,e[1]-=i}function eQ(e,t,r,n){var i=t.length;if(!e.onBand||r||!i)return;var a=e.getExtent(),o,s;if(i===1)t[0].coord=a[0],o=t[1]={coord:a[1]};else{var l=t[i-1].tickValue-t[0].tickValue,u=(t[i-1].coord-t[0].coord)/l;R(t,function(d){d.coord-=u/2});var f=e.scale.getExtent();s=1+f[1]-t[i-1].tickValue,o={coord:t[i-1].coord+u*s},t.push(o)}var c=a[0]>a[1];h(t[0].coord,a[0])&&(n?t[0].coord=a[0]:t.shift()),n&&h(a[0],t[0].coord)&&t.unshift({coord:a[0]}),h(a[1],o.coord)&&(n?o.coord=a[1]:t.pop()),n&&h(o.coord,a[1])&&t.push({coord:a[1]});function h(d,v){return d=Ft(d),v=Ft(v),c?d>v:di&&(i+=_l);var d=Math.atan2(s,o);if(d<0&&(d+=_l),d>=n&&d<=i||d+_l>=n&&d+_l<=i)return l[0]=f,l[1]=c,u-r;var v=r*Math.cos(n)+e,p=r*Math.sin(n)+t,m=r*Math.cos(i)+e,g=r*Math.sin(i)+t,y=(v-o)*(v-o)+(p-s)*(p-s),_=(m-o)*(m-o)+(g-s)*(g-s);return y<_?(l[0]=v,l[1]=p,Math.sqrt(y)):(l[0]=m,l[1]=g,Math.sqrt(_))}function zd(e,t,r,n,i,a,o,s){var l=i-e,u=a-t,f=r-e,c=n-t,h=Math.sqrt(f*f+c*c);f/=h,c/=h;var d=l*f+u*c,v=d/h;s&&(v=Math.min(Math.max(v,0),1)),v*=h;var p=o[0]=e+v*f,m=o[1]=t+v*c;return Math.sqrt((p-i)*(p-i)+(m-a)*(m-a))}function jL(e,t,r,n,i,a,o){r<0&&(e=e+r,r=-r),n<0&&(t=t+n,n=-n);var s=e+r,l=t+n,u=o[0]=Math.min(Math.max(i,e),s),f=o[1]=Math.min(Math.max(a,t),l);return Math.sqrt((u-i)*(u-i)+(f-a)*(f-a))}var bn=[];function aQ(e,t,r){var n=jL(t.x,t.y,t.width,t.height,e.x,e.y,bn);return r.set(bn[0],bn[1]),n}function oQ(e,t,r){for(var n=0,i=0,a=0,o=0,s,l,u=1/0,f=t.data,c=e.x,h=e.y,d=0;d0){t=t/180*Math.PI,Mn.fromArray(e[0]),ut.fromArray(e[1]),Lt.fromArray(e[2]),Fe.sub(Yn,Mn,ut),Fe.sub(Wn,Lt,ut);var r=Yn.len(),n=Wn.len();if(!(r<.001||n<.001)){Yn.scale(1/r),Wn.scale(1/n);var i=Yn.dot(Wn),a=Math.cos(t);if(a1&&Fe.copy(dr,Lt),dr.toArray(e[1])}}}}function sQ(e,t,r){if(r<=180&&r>0){r=r/180*Math.PI,Mn.fromArray(e[0]),ut.fromArray(e[1]),Lt.fromArray(e[2]),Fe.sub(Yn,ut,Mn),Fe.sub(Wn,Lt,ut);var n=Yn.len(),i=Wn.len();if(!(n<.001||i<.001)){Yn.scale(1/n),Wn.scale(1/i);var a=Yn.dot(t),o=Math.cos(r);if(a=l)Fe.copy(dr,Lt);else{dr.scaleAndAdd(Wn,s/Math.tan(Math.PI/2-f));var c=Lt.x!==ut.x?(dr.x-ut.x)/(Lt.x-ut.x):(dr.y-ut.y)/(Lt.y-ut.y);if(isNaN(c))return;c<0?Fe.copy(dr,ut):c>1&&Fe.copy(dr,Lt)}dr.toArray(e[1])}}}}function kx(e,t,r,n){var i=r==="normal",a=i?e:e.ensureState(r);a.ignore=t;var o=n.get("smooth");o&&o===!0&&(o=.3),a.shape=a.shape||{},o>0&&(a.shape.smooth=o);var s=n.getModel("lineStyle").getLineStyle();i?e.useStyle(s):a.style=s}function lQ(e,t){var r=t.smooth,n=t.points;if(n)if(e.moveTo(n[0][0],n[0][1]),r>0&&n.length>=3){var i=Fg(n[0],n[1]),a=Fg(n[1],n[2]);if(!i||!a){e.lineTo(n[1][0],n[1][1]),e.lineTo(n[2][0],n[2][1]);return}var o=Math.min(i,a)*r,s=gv([],n[1],n[0],o/i),l=gv([],n[1],n[2],o/a),u=gv([],s,l,.5);e.bezierCurveTo(s[0],s[1],s[0],s[1],u[0],u[1]),e.bezierCurveTo(l[0],l[1],l[0],l[1],n[2][0],n[2][1])}else for(var f=1;f0&&a&&x(-f/o,0,o);var p=e[0],m=e[o-1],g,y;_(),g<0&&w(-g,.8),y<0&&w(y,.8),_(),b(g,y,1),b(y,g,-1),_(),g<0&&S(-g),y<0&&S(y);function _(){g=p.rect[t]-n,y=i-m.rect[t]-m.rect[r]}function b(C,M,A){if(C<0){var P=Math.min(M,-C);if(P>0){x(P*A,0,o);var E=P+C;E<0&&w(-E*A,1)}else w(-C*A,1)}}function x(C,M,A){C!==0&&(u=!0);for(var P=M;P0)for(var E=0;E0;E--){var H=A[E-1]*N;x(-H,E,o)}}}function S(C){var M=C<0?-1:1;C=Math.abs(C);for(var A=Math.ceil(C/(o-1)),P=0;P0?x(A,0,P+1):x(-A,o-P-1,o),C-=A,C<=0)return}return u}function uQ(e,t,r,n){return QL(e,"x","width",t,r,n)}function JL(e,t,r,n){return QL(e,"y","height",t,r,n)}function eD(e){var t=[];e.sort(function(p,m){return m.priority-p.priority});var r=new nt(0,0,0,0);function n(p){if(!p.ignore){var m=p.ensureState("emphasis");m.ignore==null&&(m.ignore=!1)}p.ignore=!0}for(var i=0;i=0&&n.attr(a.oldLayoutSelect),ot(h,"emphasis")>=0&&n.attr(a.oldLayoutEmphasis)),Or(n,u,r,l)}else if(n.attr(u),!cf(n).valueAnimation){var c=Ze(n.style.opacity,1);n.style.opacity=0,Wr(n,{style:{opacity:c}},r,l)}if(a.oldLayout=u,n.states.select){var d=a.oldLayoutSelect={};vc(d,u,pc),vc(d,n.states.select,pc)}if(n.states.emphasis){var v=a.oldLayoutEmphasis={};vc(v,u,pc),vc(v,n.states.emphasis,pc)}Sj(n,l,f,r,r)}if(i&&!i.ignore&&!i.invisible){var a=dQ(i),o=a.oldLayout,p={points:i.shape.points};o?(i.attr({shape:o}),Or(i,{shape:p},r)):(i.setShape(p),i.style.strokePercent=0,Wr(i,{style:{strokePercent:1}},r)),a.oldLayout=p}},e}(),Cp=Et();function vQ(e){e.registerUpdateLifecycle("series:beforeupdate",function(t,r,n){var i=Cp(r).labelManager;i||(i=Cp(r).labelManager=new hQ),i.clearLabels()}),e.registerUpdateLifecycle("series:layoutlabels",function(t,r,n){var i=Cp(r).labelManager;n.updatedSeries.forEach(function(a){i.addLabelsOfSeries(r.getViewOfSeriesModel(a))}),i.updateLayoutConfig(r),i.layout(r),i.processLabelsOverall()})}function pQ(e,t){var r=e.mapDimensionsAll("defaultedLabel"),n=r.length;if(n===1){var i=Is(e,t,r[0]);return i!=null?i+"":null}else if(n){for(var a=[],o=0;o=0&&n.push(t[a])}return n.join(" ")}function mQ(e,t,r,n,i){var a=e.getArea(),o=a.x,s=a.y,l=a.width,u=a.height,f=r.get(["lineStyle","width"])||2;o-=f/2,s-=f/2,l+=f,u+=f,o=Math.floor(o),l=Math.round(l);var c=new Gt({shape:{x:o,y:s,width:l,height:u}});if(t){var h=e.getBaseAxis(),d=h.isHorizontal(),v=h.inverse;d?(v&&(c.shape.x+=l),c.shape.width=0):(v||(c.shape.y+=u),c.shape.height=0);var p=Ye(i)?function(m){i(m,c)}:null;Wr(c,{shape:{width:l,height:u,x:o,y:s}},r,null,n,p)}return c}function yQ(e,t,r){var n=e.getArea(),i=Ft(n.r0,1),a=Ft(n.r,1),o=new Eo({shape:{cx:Ft(e.cx,1),cy:Ft(e.cy,1),r0:i,r:a,startAngle:n.startAngle,endAngle:n.endAngle,clockwise:n.clockwise}});if(t){var s=e.getBaseAxis().dim==="angle";s?o.shape.endAngle=n.startAngle:o.shape.r=i,Wr(o,{shape:{endAngle:n.endAngle,r:a}},r)}return o}function _Q(e,t,r,n,i){if(e){if(e.type==="polar")return yQ(e,t,r);if(e.type==="cartesian2d")return mQ(e,t,r,n,i)}else return null;return null}function tD(e,t){return e.type===t}var bQ={average:function(e){for(var t=0,r=0,n=0;nt&&(t=e[r]);return isFinite(t)?t:NaN},min:function(e){for(var t=1/0,r=0;r10&&o.type==="cartesian2d"&&a){var l=o.getBaseAxis(),u=o.getOtherAxis(l),f=l.getExtent(),c=n.getDevicePixelRatio(),h=Math.abs(f[1]-f[0])*(c||1),d=Math.round(s/h);if(isFinite(d)&&d>1){a==="lttb"&&t.setData(i.lttbDownSample(i.mapDimension(u.dim),1/d));var v=void 0;Ee(a)?v=bQ[a]:Ye(a)&&(v=a),v&&t.setData(i.downSample(i.mapDimension(u.dim),1/d,v,wQ))}}}}}var Im=function(e){ge(t,e);function t(){var r=e!==null&&e.apply(this,arguments)||this;return r.type=t.type,r}return t.prototype.getInitialData=function(r,n){return AL(null,this,{useEncodeDefaulter:!0})},t.prototype.getMarkerPosition=function(r,n,i){var a=this.coordinateSystem;if(a&&a.clampData){var o=a.clampData(r),s=a.dataToPoint(o);if(i)R(a.getAxes(),function(h,d){if(h.type==="category"&&n!=null){var v=h.getTicksCoords(),p=o[d],m=n[d]==="x1"||n[d]==="y1";if(m&&(p+=1),v.length<2)return;if(v.length===2){s[d]=h.toGlobalCoord(h.getExtent()[m?1:0]);return}for(var g=void 0,y=void 0,_=1,b=0;bp){y=(x+g)/2;break}b===1&&(_=w-v[0].tickValue)}y==null&&(g?g&&(y=v[v.length-1].coord):y=v[0].coord),s[d]=h.toGlobalCoord(y)}});else{var l=this.getData(),u=l.getLayout("offset"),f=l.getLayout("size"),c=a.getBaseAxis().isHorizontal()?0:1;s[c]+=u+f/2}return s}return[NaN,NaN]},t.type="series.__base_bar__",t.defaultOption={z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,barMinHeight:0,barMinAngle:0,large:!1,largeThreshold:400,progressive:3e3,progressiveChunkMode:"mod"},t}(So);So.registerClass(Im);var xQ=function(e){ge(t,e);function t(){var r=e!==null&&e.apply(this,arguments)||this;return r.type=t.type,r}return t.prototype.getInitialData=function(){return AL(null,this,{useEncodeDefaulter:!0,createInvertedIndices:!!this.get("realtimeSort",!0)||null})},t.prototype.getProgressive=function(){return this.get("large")?this.get("progressive"):!1},t.prototype.getProgressiveThreshold=function(){var r=this.get("progressiveThreshold"),n=this.get("largeThreshold");return n>r&&(r=n),r},t.prototype.brushSelector=function(r,n,i){return i.rect(n.getItemLayout(r))},t.type="series.bar",t.dependencies=["grid","polar"],t.defaultOption=rE(Im.defaultOption,{clip:!0,roundCap:!1,showBackground:!1,backgroundStyle:{color:"rgba(180, 180, 180, 0.2)",borderColor:null,borderWidth:0,borderType:"solid",borderRadius:0,shadowBlur:0,shadowColor:null,shadowOffsetX:0,shadowOffsetY:0,opacity:1},select:{itemStyle:{borderColor:"#212121"}},realtimeSort:!1}),t}(Im);const CQ=xQ;var TQ=function(){function e(){this.cx=0,this.cy=0,this.r0=0,this.r=0,this.startAngle=0,this.endAngle=Math.PI*2,this.clockwise=!0}return e}(),Bx=function(e){ge(t,e);function t(r){var n=e.call(this,r)||this;return n.type="sausage",n}return t.prototype.getDefaultShape=function(){return new TQ},t.prototype.buildPath=function(r,n){var i=n.cx,a=n.cy,o=Math.max(n.r0||0,0),s=Math.max(n.r,0),l=(s-o)*.5,u=o+l,f=n.startAngle,c=n.endAngle,h=n.clockwise,d=Math.PI*2,v=h?c-fMath.PI/2&&fs)return!0;s=c}return!1},t.prototype._isOrderDifferentInView=function(r,n){for(var i=n.scale,a=i.getExtent(),o=Math.max(0,a[0]),s=Math.min(a[1],i.getOrdinalMeta().categories.length-1);o<=s;++o)if(r.ordinalNumbers[o]!==i.getRawOrdinalNumber(o))return!0},t.prototype._updateSortWithinSameData=function(r,n,i,a){if(this._isOrderChangedWithinSameData(r,n,i)){var o=this._dataSort(r,i,n);this._isOrderDifferentInView(o,i)&&(this._removeOnRenderedListener(a),a.dispatchAction({type:"changeAxisOrder",componentType:i.dim+"Axis",axisId:i.index,sortInfo:o}))}},t.prototype._dispatchInitSort=function(r,n,i){var a=n.baseAxis,o=this._dataSort(r,a,function(s){return r.get(r.mapDimension(n.otherAxis.dim),s)});i.dispatchAction({type:"changeAxisOrder",componentType:a.dim+"Axis",isInitSort:!0,axisId:a.index,sortInfo:o})},t.prototype.remove=function(r,n){this._clear(this._model),this._removeOnRenderedListener(n)},t.prototype.dispose=function(r,n){this._removeOnRenderedListener(n)},t.prototype._removeOnRenderedListener=function(r){this._onRendered&&(r.getZr().off("rendered",this._onRendered),this._onRendered=null)},t.prototype._clear=function(r){var n=this.group,i=this._data;r&&r.isAnimationEnabled()&&i&&!this._isLargeDraw?(this._removeBackground(),this._backgroundEls=[],i.eachItemGraphicEl(function(a){Dd(a,r,dt(a).dataIndex)})):n.removeAll(),this._data=null,this._isFirstFrame=!0},t.prototype._removeBackground=function(){this.group.remove(this._backgroundGroup),this._backgroundGroup=null},t.type="bar",t}(ho),Fx={cartesian2d:function(e,t){var r=t.width<0?-1:1,n=t.height<0?-1:1;r<0&&(t.x+=t.width,t.width=-t.width),n<0&&(t.y+=t.height,t.height=-t.height);var i=e.x+e.width,a=e.y+e.height,o=Tp(t.x,e.x),s=Mp(t.x+t.width,i),l=Tp(t.y,e.y),u=Mp(t.y+t.height,a),f=si?s:o,t.y=c&&l>a?u:l,t.width=f?0:s-o,t.height=c?0:u-l,r<0&&(t.x+=t.width,t.width=-t.width),n<0&&(t.y+=t.height,t.height=-t.height),f||c},polar:function(e,t){var r=t.r0<=t.r?1:-1;if(r<0){var n=t.r;t.r=t.r0,t.r0=n}var i=Mp(t.r,e.r),a=Tp(t.r0,e.r0);t.r=i,t.r0=a;var o=i-a<0;if(r<0){var n=t.r;t.r=t.r0,t.r0=n}return o}},$x={cartesian2d:function(e,t,r,n,i,a,o,s,l){var u=new Gt({shape:ue({},n),z2:1});if(u.__dataIndex=r,u.name="item",a){var f=u.shape,c=i?"height":"width";f[c]=0}return u},polar:function(e,t,r,n,i,a,o,s,l){var u=!i&&l?Bx:Eo,f=new u({shape:n,z2:1});f.name="item";var c=rD(i);if(f.calculateTextPosition=MQ(c,{isRoundCap:u===Bx}),a){var h=f.shape,d=i?"r":"endAngle",v={};h[d]=i?n.r0:n.startAngle,v[d]=n[d],(s?Or:Wr)(f,{shape:v},a)}return f}};function LQ(e,t){var r=e.get("realtimeSort",!0),n=t.getBaseAxis();if(r&&n.type==="category"&&t.type==="cartesian2d")return{baseAxis:n,otherAxis:t.getOtherAxis(n)}}function Hx(e,t,r,n,i,a,o,s){var l,u;a?(u={x:n.x,width:n.width},l={y:n.y,height:n.height}):(u={y:n.y,height:n.height},l={x:n.x,width:n.width}),s||(o?Or:Wr)(r,{shape:l},t,i,null);var f=t?e.baseAxis.model:null;(o?Or:Wr)(r,{shape:u},f,i)}function zx(e,t){for(var r=0;r0?1:-1,o=n.height>0?1:-1;return{x:n.x+a*i/2,y:n.y+o*i/2,width:n.width-a*i,height:n.height-o*i}},polar:function(e,t,r){var n=e.getItemLayout(t);return{cx:n.cx,cy:n.cy,r0:n.r0,r:n.r,startAngle:n.startAngle,endAngle:n.endAngle,clockwise:n.clockwise}}};function OQ(e){return e.startAngle!=null&&e.endAngle!=null&&e.startAngle===e.endAngle}function rD(e){return function(t){var r=t?"Arc":"Angle";return function(n){switch(n){case"start":case"insideStart":case"end":case"insideEnd":return n+r;default:return n}}}(e)}function Wx(e,t,r,n,i,a,o,s){var l=t.getItemVisual(r,"style");if(s){if(!a.get("roundCap")){var f=e.shape,c=Dl(n.getModel("itemStyle"),f,!0);ue(f,c),e.setShape(f)}}else{var u=n.get(["itemStyle","borderRadius"])||0;e.setShape("r",u)}e.useStyle(l);var h=n.getShallow("cursor");h&&e.attr("cursor",h);var d=s?o?i.r>=i.r0?"endArc":"startArc":i.endAngle>=i.startAngle?"endAngle":"startAngle":o?i.height>=0?"bottom":"top":i.width>=0?"right":"left",v=JP(n);E0(e,v,{labelFetcher:a,labelDataIndex:r,defaultText:pQ(a.getData(),r),inheritColor:l.fill,defaultOpacity:l.opacity,defaultOutsidePosition:d});var p=e.getTextContent();if(s&&p){var m=n.get(["label","position"]);e.textConfig.inside=m==="middle"?!0:null,AQ(e,m==="outside"?d:m,rD(o),n.get(["label","rotate"]))}wj(p,v,a.getRawValue(r),function(y){return gQ(t,y)});var g=n.getModel(["emphasis"]);CP(e,g.get("focus"),g.get("blurScope"),g.get("disabled")),TP(e,n),OQ(i)&&(e.style.fill="none",e.style.stroke="none",R(e.states,function(y){y.style&&(y.style.fill=y.style.stroke="none")}))}function RQ(e,t){var r=e.get(["itemStyle","borderColor"]);if(!r||r==="none")return 0;var n=e.get(["itemStyle","borderWidth"])||0,i=isNaN(t.width)?Number.MAX_VALUE:Math.abs(t.width),a=isNaN(t.height)?Number.MAX_VALUE:Math.abs(t.height);return Math.min(n,i,a)}var kQ=function(){function e(){}return e}(),Gx=function(e){ge(t,e);function t(r){var n=e.call(this,r)||this;return n.type="largeBar",n}return t.prototype.getDefaultShape=function(){return new kQ},t.prototype.buildPath=function(r,n){for(var i=n.points,a=this.baseDimIdx,o=1-this.baseDimIdx,s=[],l=[],u=this.barWidth,f=0;f=0?r:null},30,!1);function NQ(e,t,r){for(var n=e.baseDimIdx,i=1-n,a=e.shape.points,o=e.largeDataIndices,s=[],l=[],u=e.barWidth,f=0,c=a.length/3;f=s[0]&&t<=s[0]+l[0]&&r>=s[1]&&r<=s[1]+l[1])return o[f]}return-1}function nD(e,t,r){if(tD(r,"cartesian2d")){var n=t,i=r.getArea();return{x:e?n.x:i.x,y:e?i.y:n.y,width:e?n.width:i.width,height:e?i.height:n.height}}else{var i=r.getArea(),a=t;return{cx:i.cx,cy:i.cy,r0:e?i.r0:a.r0,r:e?i.r:a.r,startAngle:e?a.startAngle:0,endAngle:e?a.endAngle:Math.PI*2}}}function BQ(e,t,r){var n=e.type==="polar"?Eo:Gt;return new n({shape:nD(t,r,e),silent:!0,z2:0})}const FQ=EQ;function $Q(e){e.registerChartView(FQ),e.registerSeriesModel(CQ),e.registerLayout(e.PRIORITY.VISUAL.LAYOUT,Ot(mZ,"bar")),e.registerLayout(e.PRIORITY.VISUAL.PROGRESSIVE_LAYOUT,yZ("bar")),e.registerProcessor(e.PRIORITY.PROCESSOR.STATISTIC,SQ("bar")),e.registerAction({type:"changeAxisOrder",event:"changeAxisOrder",update:"update"},function(t,r){var n=t.componentType||"series";r.eachComponent({mainType:n,query:t},function(i){t.sortInfo&&i.axis.setCategorySortInfo(t.sortInfo)})})}var _c=Math.PI*2,jx=Math.PI/180;function iD(e,t){return Ls(e.getBoxLayoutParams(),{width:t.getWidth(),height:t.getHeight()})}function aD(e,t){var r=iD(e,t),n=e.get("center"),i=e.get("radius");ye(i)||(i=[0,i]);var a=yt(r.width,t.getWidth()),o=yt(r.height,t.getHeight()),s=Math.min(a,o),l=yt(i[0],s/2),u=yt(i[1],s/2),f,c,h=e.coordinateSystem;if(h){var d=h.dataToPoint(n);f=d[0]||0,c=d[1]||0}else ye(n)||(n=[n,n]),f=yt(n[0],a)+r.x,c=yt(n[1],o)+r.y;return{cx:f,cy:c,r0:l,r:u}}function HQ(e,t,r){t.eachSeriesByType(e,function(n){var i=n.getData(),a=i.mapDimension("value"),o=iD(n,r),s=aD(n,r),l=s.cx,u=s.cy,f=s.r,c=s.r0,h=-n.get("startAngle")*jx,d=n.get("minAngle")*jx,v=0;i.each(a,function(A){!isNaN(A)&&v++});var p=i.getSum(a),m=Math.PI/(p||v)*2,g=n.get("clockwise"),y=n.get("roseType"),_=n.get("stillShowZeroSum"),b=i.getDataExtent(a);b[0]=0;var x=_c,w=0,S=h,C=g?1:-1;if(i.setLayout({viewRect:o,r:f}),i.each(a,function(A,P){var E;if(isNaN(A)){i.setItemLayout(P,{angle:NaN,startAngle:NaN,endAngle:NaN,clockwise:g,cx:l,cy:u,r0:c,r:y?NaN:f});return}y!=="area"?E=p===0&&_?m:A*m:E=_c/v,Er?g:m,x=Math.abs(_.label.y-r);if(x>=b.maxY){var w=_.label.x-t-_.len2*i,S=n+_.len,C=Math.abs(w)e.unconstrainedWidth?null:d:null;n.setStyle("width",v)}var p=n.getBoundingRect();a.width=p.width;var m=(n.style.margin||0)+2.1;a.height=p.height+m,a.y-=(a.height-c)/2}}}function Ap(e){return e.position==="center"}function GQ(e){var t=e.getData(),r=[],n,i,a=!1,o=(e.get("minShowLabelAngle")||0)*VQ,s=t.getLayout("viewRect"),l=t.getLayout("r"),u=s.width,f=s.x,c=s.y,h=s.height;function d(w){w.ignore=!0}function v(w){if(!w.ignore)return!0;for(var S in w.states)if(w.states[S].ignore===!1)return!0;return!1}t.each(function(w){var S=t.getItemGraphicEl(w),C=S.shape,M=S.getTextContent(),A=S.getTextGuideLine(),P=t.getItemModel(w),E=P.getModel("label"),L=E.get("position")||P.get(["emphasis","label","position"]),O=E.get("distanceToLabelLine"),N=E.get("alignTo"),H=yt(E.get("edgeDistance"),u),V=E.get("bleedMargin"),U=P.getModel("labelLine"),F=U.get("length");F=yt(F,u);var z=U.get("length2");if(z=yt(z,u),Math.abs(C.endAngle-C.startAngle)0?"right":"left":J>0?"left":"right"}var W=Math.PI,X=0,q=E.get("rotate");if(Tt(q))X=q*(W/180);else if(L==="center")X=0;else if(q==="radial"||q===!0){var le=J<0?-te+W:-te;X=le}else if(q==="tangential"&&L!=="outside"&&L!=="outer"){var fe=Math.atan2(J,me);fe<0&&(fe=W*2+fe);var ae=me>0;ae&&(fe=W+fe),X=fe-W}if(a=!!X,M.x=Se,M.y=$e,M.rotation=X,M.setStyle({verticalAlign:"middle"}),Y){M.setStyle({align:B});var he=M.states.select;he&&(he.x+=M.x,he.y+=M.y)}else{var se=M.getBoundingRect().clone();se.applyTransform(M.getComputedTransform());var ne=(M.style.margin||0)+2.1;se.y-=ne/2,se.height+=ne,r.push({label:M,labelLine:A,position:L,len:F,len2:z,minTurnAngle:U.get("minTurnAngle"),maxSurfaceAngle:U.get("maxSurfaceAngle"),surfaceNormal:new Fe(J,me),linePoints:Ie,textAlign:B,labelDistance:O,labelAlignTo:N,edgeDistance:H,bleedMargin:V,rect:se,unconstrainedWidth:se.width,labelStyleWidth:M.style.width})}S.setTextConfig({inside:Y})}}),!a&&e.get("avoidLabelOverlap")&&WQ(r,n,i,l,u,h,f,c);for(var p=0;p0){for(var f=o.getItemLayout(0),c=1;isNaN(f&&f.startAngle)&&c=a.r0}},t.type="pie",t}(ho);const jQ=YQ;function qQ(e,t,r){t=ye(t)&&{coordDimensions:t}||ue({encodeDefine:e.getEncode()},t);var n=e.getSource(),i=TL(n,t).dimensions,a=new CL(i,e);return a.initData(n,r),a}var KQ=function(){function e(t,r){this._getDataWithEncodedVisual=t,this._getRawData=r}return e.prototype.getAllNames=function(){var t=this._getRawData();return t.mapArray(t.getName)},e.prototype.containName=function(t){var r=this._getRawData();return r.indexOfName(t)>=0},e.prototype.indexOfName=function(t){var r=this._getDataWithEncodedVisual();return r.indexOfName(t)},e.prototype.getItemVisual=function(t,r){var n=this._getDataWithEncodedVisual();return n.getItemVisual(t,r)},e}();const XQ=KQ;var ZQ=Et(),QQ=function(e){ge(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.init=function(r){e.prototype.init.apply(this,arguments),this.legendVisualProvider=new XQ(xt(this.getData,this),xt(this.getRawData,this)),this._defaultLabelLine(r)},t.prototype.mergeOption=function(){e.prototype.mergeOption.apply(this,arguments)},t.prototype.getInitialData=function(){return qQ(this,{coordDimensions:["value"],encodeDefaulter:Ot(Xj,this)})},t.prototype.getDataParams=function(r){var n=this.getData(),i=ZQ(n),a=i.seats;if(!a){var o=[];n.each(n.mapDimension("value"),function(l){o.push(l)}),a=i.seats=R9(o,n.hostModel.get("percentPrecision"))}var s=e.prototype.getDataParams.call(this,r);return s.percent=a[r]||0,s.$vars.push("percent"),s},t.prototype._defaultLabelLine=function(r){em(r,"labelLine",["show"]);var n=r.labelLine,i=r.emphasis.labelLine;n.show=n.show&&r.label.show,i.show=i.show&&r.emphasis.label.show},t.type="series.pie",t.defaultOption={z:2,legendHoverLink:!0,colorBy:"data",center:["50%","50%"],radius:[0,"75%"],clockwise:!0,startAngle:90,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"},t}(So);const JQ=QQ;function eJ(e){return{seriesType:e,reset:function(t,r){var n=t.getData();n.filterSelf(function(i){var a=n.mapDimension("value"),o=n.get(a,i);return!(Tt(o)&&!isNaN(o)&&o<0)})}}}function tJ(e){e.registerChartView(jQ),e.registerSeriesModel(JQ),kK("pie",e.registerAction),e.registerLayout(Ot(HQ,"pie")),e.registerProcessor(zQ("pie")),e.registerProcessor(eJ("pie"))}var rJ=function(e){ge(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.type="grid",t.dependencies=["xAxis","yAxis"],t.layoutMode="box",t.defaultOption={show:!1,z:0,left:"10%",top:60,right:"10%",bottom:70,containLabel:!1,backgroundColor:"rgba(0,0,0,0)",borderWidth:1,borderColor:"#ccc"},t}(Mt);const nJ=rJ;var Om=function(e){ge(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.getCoordSysModel=function(){return this.getReferringComponents("grid",Tn).models[0]},t.type="cartesian2dAxis",t}(Mt);ni(Om,WZ);var sD={show:!0,z:0,inverse:!1,name:"",nameLocation:"end",nameRotate:null,nameTruncate:{maxWidth:null,ellipsis:"...",placeholder:"."},nameTextStyle:{},nameGap:15,silent:!1,triggerEvent:!1,tooltip:{show:!1},axisPointer:{},axisLine:{show:!0,onZero:!0,onZeroAxisIndex:null,lineStyle:{color:"#6E7079",width:1,type:"solid"},symbol:["none","none"],symbolSize:[10,15]},axisTick:{show:!0,inside:!1,length:5,lineStyle:{width:1}},axisLabel:{show:!0,inside:!1,rotate:0,showMinLabel:null,showMaxLabel:null,margin:8,fontSize:12},splitLine:{show:!0,lineStyle:{color:["#E0E6F1"],width:1,type:"solid"}},splitArea:{show:!1,areaStyle:{color:["rgba(250,250,250,0.2)","rgba(210,219,238,0.2)"]}}},iJ=st({boundaryGap:!0,deduplication:null,splitLine:{show:!1},axisTick:{alignWithLabel:!1,interval:"auto"},axisLabel:{interval:"auto"}},sD),a_=st({boundaryGap:[0,0],axisLine:{show:"auto"},axisTick:{show:"auto"},splitNumber:5,minorTick:{show:!1,splitNumber:5,length:3,lineStyle:{}},minorSplitLine:{show:!1,lineStyle:{color:"#F4F7FD",width:1}}},sD),aJ=st({splitNumber:6,axisLabel:{showMinLabel:!1,showMaxLabel:!1,rich:{primary:{fontWeight:"bold"}}},splitLine:{show:!1}},a_),oJ=ht({logBase:10},a_);const sJ={category:iJ,value:a_,time:aJ,log:oJ};var lJ={value:1,category:1,time:1,log:1};function Kx(e,t,r,n){R(lJ,function(i,a){var o=st(st({},sJ[a],!0),n,!0),s=function(l){ge(u,l);function u(){var f=l!==null&&l.apply(this,arguments)||this;return f.type=t+"Axis."+a,f}return u.prototype.mergeDefaultAndTheme=function(f,c){var h=Nu(this),d=h?Rh(f):{},v=c.getTheme();st(f,v.get(a+"Axis")),st(f,this.getDefaultOption()),f.type=Xx(f),h&&Ds(f,d,h)},u.prototype.optionUpdated=function(){var f=this.option;f.type==="category"&&(this.__ordinalMeta=Lm.createByAxisModel(this))},u.prototype.getCategories=function(f){var c=this.option;if(c.type==="category")return f?c.data:this.__ordinalMeta.categories},u.prototype.getOrdinalMeta=function(){return this.__ordinalMeta},u.type=t+"Axis."+a,u.defaultOption=o,u}(r);e.registerComponentModel(s)}),e.registerSubTypeDefaulter(t+"Axis",Xx)}function Xx(e){return e.type||(e.data?"category":"value")}var uJ=function(){function e(t){this.type="cartesian",this._dimList=[],this._axes={},this.name=t||""}return e.prototype.getAxis=function(t){return this._axes[t]},e.prototype.getAxes=function(){return Ne(this._dimList,function(t){return this._axes[t]},this)},e.prototype.getAxesByScale=function(t){return t=t.toLowerCase(),jt(this.getAxes(),function(r){return r.scale.type===t})},e.prototype.addAxis=function(t){var r=t.dim;this._axes[r]=t,this._dimList.push(r)},e}();const fJ=uJ;var Rm=["x","y"];function Zx(e){return e.type==="interval"||e.type==="time"}var cJ=function(e){ge(t,e);function t(){var r=e!==null&&e.apply(this,arguments)||this;return r.type="cartesian2d",r.dimensions=Rm,r}return t.prototype.calcAffineTransform=function(){this._transform=this._invTransform=null;var r=this.getAxis("x").scale,n=this.getAxis("y").scale;if(!(!Zx(r)||!Zx(n))){var i=r.getExtent(),a=n.getExtent(),o=this.dataToPoint([i[0],a[0]]),s=this.dataToPoint([i[1],a[1]]),l=i[1]-i[0],u=a[1]-a[0];if(!(!l||!u)){var f=(s[0]-o[0])/l,c=(s[1]-o[1])/u,h=o[0]-i[0]*f,d=o[1]-a[0]*c,v=this._transform=[f,0,0,c,h,d];this._invTransform=bh([],v)}}},t.prototype.getBaseAxis=function(){return this.getAxesByScale("ordinal")[0]||this.getAxesByScale("time")[0]||this.getAxis("x")},t.prototype.containPoint=function(r){var n=this.getAxis("x"),i=this.getAxis("y");return n.contain(n.toLocalCoord(r[0]))&&i.contain(i.toLocalCoord(r[1]))},t.prototype.containData=function(r){return this.getAxis("x").containData(r[0])&&this.getAxis("y").containData(r[1])},t.prototype.containZone=function(r,n){var i=this.dataToPoint(r),a=this.dataToPoint(n),o=this.getArea(),s=new nt(i[0],i[1],a[0]-i[0],a[1]-i[1]);return o.intersect(s)},t.prototype.dataToPoint=function(r,n,i){i=i||[];var a=r[0],o=r[1];if(this._transform&&a!=null&&isFinite(a)&&o!=null&&isFinite(o))return un(i,r,this._transform);var s=this.getAxis("x"),l=this.getAxis("y");return i[0]=s.toGlobalCoord(s.dataToCoord(a,n)),i[1]=l.toGlobalCoord(l.dataToCoord(o,n)),i},t.prototype.clampData=function(r,n){var i=this.getAxis("x").scale,a=this.getAxis("y").scale,o=i.getExtent(),s=a.getExtent(),l=i.parse(r[0]),u=a.parse(r[1]);return n=n||[],n[0]=Math.min(Math.max(Math.min(o[0],o[1]),l),Math.max(o[0],o[1])),n[1]=Math.min(Math.max(Math.min(s[0],s[1]),u),Math.max(s[0],s[1])),n},t.prototype.pointToData=function(r,n){var i=[];if(this._invTransform)return un(i,r,this._invTransform);var a=this.getAxis("x"),o=this.getAxis("y");return i[0]=a.coordToData(a.toLocalCoord(r[0]),n),i[1]=o.coordToData(o.toLocalCoord(r[1]),n),i},t.prototype.getOtherAxis=function(r){return this.getAxis(r.dim==="x"?"y":"x")},t.prototype.getArea=function(){var r=this.getAxis("x").getGlobalExtent(),n=this.getAxis("y").getGlobalExtent(),i=Math.min(r[0],r[1]),a=Math.min(n[0],n[1]),o=Math.max(r[0],r[1])-i,s=Math.max(n[0],n[1])-a;return new nt(i,a,o,s)},t}(fJ),dJ=function(e){ge(t,e);function t(r,n,i,a,o){var s=e.call(this,r,n,i)||this;return s.index=0,s.type=a||"value",s.position=o||"bottom",s}return t.prototype.isHorizontal=function(){var r=this.position;return r==="top"||r==="bottom"},t.prototype.getGlobalExtent=function(r){var n=this.getExtent();return n[0]=this.toGlobalCoord(n[0]),n[1]=this.toGlobalCoord(n[1]),r&&n[0]>n[1]&&n.reverse(),n},t.prototype.pointToData=function(r,n){return this.coordToData(this.toLocalCoord(r[this.dim==="x"?0:1]),n)},t.prototype.setCategorySortInfo=function(r){if(this.type!=="category")return!1;this.model.option.categorySortInfo=r,this.scale.setSortInfo(r)},t}(tQ);const hJ=dJ;function km(e,t,r){r=r||{};var n=e.coordinateSystem,i=t.axis,a={},o=i.getAxesOnZeroOf()[0],s=i.position,l=o?"onZero":s,u=i.dim,f=n.getRect(),c=[f.x,f.x+f.width,f.y,f.y+f.height],h={left:0,right:1,top:0,bottom:1,onZero:2},d=t.get("offset")||0,v=u==="x"?[c[2]-d,c[3]+d]:[c[0]-d,c[1]+d];if(o){var p=o.toGlobalCoord(o.dataToCoord(0));v[h.onZero]=Math.max(Math.min(p,v[1]),v[0])}a.position=[u==="y"?v[h[l]]:c[0],u==="x"?v[h[l]]:c[3]],a.rotation=Math.PI/2*(u==="x"?0:1);var m={top:-1,bottom:1,left:-1,right:1};a.labelDirection=a.tickDirection=a.nameDirection=m[s],a.labelOffset=o?v[h[s]]-v[h.onZero]:0,t.get(["axisTick","inside"])&&(a.tickDirection=-a.tickDirection),Au(r.labelInside,t.get(["axisLabel","inside"]))&&(a.labelDirection=-a.labelDirection);var g=t.get(["axisLabel","rotate"]);return a.labelRotate=l==="top"?-g:g,a.z2=1,a}function Qx(e){return e.get("coordinateSystem")==="cartesian2d"}function Jx(e){var t={xAxisModel:null,yAxisModel:null};return R(t,function(r,n){var i=n.replace(/Model$/,""),a=e.getReferringComponents(i,Tn).models[0];t[n]=a}),t}var Pp=Math.log;function vJ(e,t,r){var n=df.prototype,i=n.getTicks.call(r),a=n.getTicks.call(r,!0),o=i.length-1,s=n.getInterval.call(r),l=$L(e,t),u=l.extent,f=l.fixMin,c=l.fixMax;if(e.type==="log"){var h=Pp(e.base);u=[Pp(u[0])/h,Pp(u[1])/h]}e.setExtent(u[0],u[1]),e.calcNiceExtent({splitNumber:o,fixMin:f,fixMax:c});var d=n.getExtent.call(e);f&&(u[0]=d[0]),c&&(u[1]=d[1]);var v=n.getInterval.call(e),p=u[0],m=u[1];if(f&&c)v=(m-p)/o;else if(f)for(m=u[0]+v*o;mu[0]&&isFinite(p)&&isFinite(u[0]);)v=wp(v),p=u[1]-v*o;else{var g=e.getTicks().length-1;g>o&&(v=wp(v));var y=v*o;m=Math.ceil(u[1]/v)*v,p=Ft(m-y),p<0&&u[0]>=0?(p=0,m=Ft(y)):m>0&&u[1]<=0&&(m=0,p=-Ft(y))}var _=(i[0].value-a[0].value)/s,b=(i[o].value-a[o].value)/s;n.setExtent.call(e,p+v*_,m+v*b),n.setInterval.call(e,v),(_||b)&&n.setNiceExtent.call(e,p+v,m-v)}var pJ=function(){function e(t,r,n){this.type="grid",this._coordsMap={},this._coordsList=[],this._axesMap={},this._axesList=[],this.axisPointerEnabled=!0,this.dimensions=Rm,this._initCartesian(t,r,n),this.model=t}return e.prototype.getRect=function(){return this._rect},e.prototype.update=function(t,r){var n=this._axesMap;this._updateScale(t,this.model);function i(o){var s,l=Ct(o),u=l.length;if(u){for(var f=[],c=u-1;c>=0;c--){var h=+l[c],d=o[h],v=d.model,p=d.scale;Dm(p)&&v.get("alignTicks")&&v.get("interval")==null?f.push(d):(Lx(p,v),Dm(p)&&(s=d))}f.length&&(s||(s=f.pop(),Lx(s.scale,s.model)),R(f,function(m){vJ(m.scale,m.model,s.scale)}))}}i(n.x),i(n.y);var a={};R(n.x,function(o){eC(n,"y",o,a)}),R(n.y,function(o){eC(n,"x",o,a)}),this.resize(this.model,r)},e.prototype.resize=function(t,r,n){var i=t.getBoxLayoutParams(),a=!n&&t.get("containLabel"),o=Ls(i,{width:r.getWidth(),height:r.getHeight()});this._rect=o;var s=this._axesList;l(),a&&(R(s,function(u){if(!u.model.get(["axisLabel","inside"])){var f=HZ(u);if(f){var c=u.isHorizontal()?"height":"width",h=u.model.get(["axisLabel","margin"]);o[c]-=f[c]+h,u.position==="top"?o.y+=f.height+h:u.position==="left"&&(o.x+=f.width+h)}}}),l()),R(this._coordsList,function(u){u.calcAffineTransform()});function l(){R(s,function(u){var f=u.isHorizontal(),c=f?[0,o.width]:[0,o.height],h=u.inverse?1:0;u.setExtent(c[h],c[1-h]),gJ(u,f?o.x:o.y)})}},e.prototype.getAxis=function(t,r){var n=this._axesMap[t];if(n!=null)return n[r||0]},e.prototype.getAxes=function(){return this._axesList.slice()},e.prototype.getCartesian=function(t,r){if(t!=null&&r!=null){var n="x"+t+"y"+r;return this._coordsMap[n]}Re(t)&&(r=t.yAxisIndex,t=t.xAxisIndex);for(var i=0,a=this._coordsList;i0?"top":"bottom",a="center"):Ad(i-ea)?(o=n>0?"bottom":"top",a="center"):(o="middle",i>0&&i0?"right":"left":a=n>0?"left":"right"),{rotation:i,textAlign:a,textVerticalAlign:o}},e.makeAxisEventDataBase=function(t){var r={componentType:t.mainType,componentIndex:t.componentIndex};return r[t.mainType+"Index"]=t.componentIndex,r},e.isLabelSilent=function(t){var r=t.get("tooltip");return t.get("silent")||!(t.get("triggerEvent")||r&&r.show)},e}(),rC={axisLine:function(e,t,r,n){var i=t.get(["axisLine","show"]);if(i==="auto"&&e.handleAutoShown&&(i=e.handleAutoShown("axisLine")),!!i){var a=t.axis.getExtent(),o=n.transform,s=[a[0],0],l=[a[1],0],u=s[0]>l[0];o&&(un(s,s,o),un(l,l,o));var f=ue({lineCap:"round"},t.getModel(["axisLine","lineStyle"]).getLineStyle()),c=new wo({shape:{x1:s[0],y1:s[1],x2:l[0],y2:l[1]},style:f,strokeContainThreshold:e.strokeContainThreshold||5,silent:!0,z2:1});Iu(c.shape,c.style.lineWidth),c.anid="line",r.add(c);var h=t.get(["axisLine","symbol"]);if(h!=null){var d=t.get(["axisLine","symbolSize"]);Ee(h)&&(h=[h,h]),(Ee(d)||Tt(d))&&(d=[d,d]);var v=qK(t.get(["axisLine","symbolOffset"])||0,d),p=d[0],m=d[1];R([{rotate:e.rotation+Math.PI/2,offset:v[0],r:0},{rotate:e.rotation-Math.PI/2,offset:v[1],r:Math.sqrt((s[0]-l[0])*(s[0]-l[0])+(s[1]-l[1])*(s[1]-l[1]))}],function(g,y){if(h[y]!=="none"&&h[y]!=null){var _=j0(h[y],-p/2,-m/2,p,m,f.stroke,!0),b=g.r+g.offset,x=u?l:s;_.attr({rotation:g.rotate,x:x[0]+b*Math.cos(e.rotation),y:x[1]-b*Math.sin(e.rotation),silent:!0,z2:11}),r.add(_)}})}}},axisTickLabel:function(e,t,r,n){var i=bJ(r,n,t,e),a=SJ(r,n,t,e);if(_J(t,a,i),wJ(r,n,t,e.tickDirection),t.get(["axisLabel","hideOverlap"])){var o=ZL(Ne(a,function(s){return{label:s,priority:s.z2,defaultAttr:{ignore:s.ignore}}}));eD(o)}},axisName:function(e,t,r,n){var i=Au(e.axisName,t.get("name"));if(i){var a=t.get("nameLocation"),o=e.nameDirection,s=t.getModel("nameTextStyle"),l=t.get("nameGap")||0,u=t.axis.getExtent(),f=u[0]>u[1]?-1:1,c=[a==="start"?u[0]-f*l:a==="end"?u[1]+f*l:(u[0]+u[1])/2,iC(a)?e.labelOffset+o*l:0],h,d=t.get("nameRotate");d!=null&&(d=d*ea/180);var v;iC(a)?h=vo.innerTextLayout(e.rotation,d??e.rotation,o):(h=yJ(e.rotation,a,d||0,u),v=e.axisNameAvailableWidth,v!=null&&(v=Math.abs(v/Math.sin(h.rotation)),!isFinite(v)&&(v=null)));var p=s.getFont(),m=t.get("nameTruncate",!0)||{},g=m.ellipsis,y=Au(e.nameTruncateMaxWidth,m.maxWidth,v),_=new mr({x:c[0],y:c[1],rotation:h.rotation,silent:vo.isLabelSilent(t),style:ha(s,{text:i,font:p,overflow:"truncate",width:y,ellipsis:g,fill:s.getTextColor()||t.get(["axisLine","lineStyle","color"]),align:s.get("align")||h.textAlign,verticalAlign:s.get("verticalAlign")||h.textVerticalAlign}),z2:1});if(A0({el:_,componentModel:t,itemName:i}),_.__fullText=i,_.anid="name",t.get("triggerEvent")){var b=vo.makeAxisEventDataBase(t);b.targetType="axisName",b.name=i,dt(_).eventData=b}n.add(_),_.updateTransform(),r.add(_),_.decomposeTransform()}}};function yJ(e,t,r,n){var i=j2(r-e),a,o,s=n[0]>n[1],l=t==="start"&&!s||t!=="start"&&s;return Ad(i-ea/2)?(o=l?"bottom":"top",a="center"):Ad(i-ea*1.5)?(o=l?"top":"bottom",a="center"):(o="middle",iea/2?a=l?"left":"right":a=l?"right":"left"),{rotation:i,textAlign:a,textVerticalAlign:o}}function _J(e,t,r){if(!HL(e.axis)){var n=e.get(["axisLabel","showMinLabel"]),i=e.get(["axisLabel","showMaxLabel"]);t=t||[],r=r||[];var a=t[0],o=t[1],s=t[t.length-1],l=t[t.length-2],u=r[0],f=r[1],c=r[r.length-1],h=r[r.length-2];n===!1?(Kr(a),Kr(u)):nC(a,o)&&(n?(Kr(o),Kr(f)):(Kr(a),Kr(u))),i===!1?(Kr(s),Kr(c)):nC(l,s)&&(i?(Kr(l),Kr(h)):(Kr(s),Kr(c)))}}function Kr(e){e&&(e.ignore=!0)}function nC(e,t){var r=e&&e.getBoundingRect().clone(),n=t&&t.getBoundingRect().clone();if(!(!r||!n)){var i=a0([]);return o0(i,i,-e.rotation),r.applyTransform(ls([],i,e.getLocalTransform())),n.applyTransform(ls([],i,t.getLocalTransform())),r.intersect(n)}}function iC(e){return e==="middle"||e==="center"}function lD(e,t,r,n,i){for(var a=[],o=[],s=[],l=0;l=0||e===t}function PJ(e){var t=o_(e);if(t){var r=t.axisPointerModel,n=t.axis.scale,i=r.option,a=r.get("status"),o=r.get("value");o!=null&&(o=n.parse(o));var s=Nm(r);a==null&&(i.status=s?"show":"hide");var l=n.getExtent().slice();l[0]>l[1]&&l.reverse(),(o==null||o>l[1])&&(o=l[1]),o=s)}}for(var c=this.__startIndex;c15)break}}O.prevElClipPaths&&g.restore()};if(y)if(y.length===0)C=m.__endIndex;else for(var A=d.dpr,P=0;P0&&t>i[0]){for(l=0;lt);l++);s=n[i[l]]}if(i.splice(l+1,0,t),n[t]=r,!r.virtual)if(s){var u=s.dom;u.nextSibling?o.insertBefore(r.dom,u.nextSibling):o.appendChild(r.dom)}else o.firstChild?o.insertBefore(r.dom,o.firstChild):o.appendChild(r.dom);r.__painter=this}},e.prototype.eachLayer=function(t,r){for(var n=this._zlevelList,i=0;i0?bc:0),this._needsManuallyCompositing),f.__builtin__||r0("ZLevel "+u+" has been used by unkown layer "+f.id),f!==a&&(f.__used=!0,f.__startIndex!==l&&(f.__dirty=!0),f.__startIndex=l,f.incremental?f.__drawIndex=-1:f.__drawIndex=l,r(l),a=f),i.__dirty&Br&&!i.__inHover&&(f.__dirty=!0,f.incremental&&f.__drawIndex<0&&(f.__drawIndex=l))}r(l),this.eachBuiltinLayer(function(c,h){!c.__used&&c.getElementCount()>0&&(c.__dirty=!0,c.__startIndex=c.__endIndex=c.__drawIndex=0),c.__dirty&&c.__drawIndex<0&&(c.__drawIndex=c.__startIndex)})},e.prototype.clear=function(){return this.eachBuiltinLayer(this._clearLayer),this},e.prototype._clearLayer=function(t){t.clear()},e.prototype.setBackgroundColor=function(t){this._backgroundColor=t,R(this._layers,function(r){r.setUnpainted()})},e.prototype.configLayer=function(t,r){if(r){var n=this._layerConfig;n[t]?st(n[t],r,!0):n[t]=r;for(var i=0;is)return!0;if(o){var l=o_(t).seriesDataCount,u=i.getExtent();return Math.abs(u[0]-u[1])/l>s}return!1}return n===!0},e.prototype.makeElOption=function(t,r,n,i,a){},e.prototype.createPointerEl=function(t,r,n,i){var a=r.pointer;if(a){var o=Ka(t).pointerEl=new mj[a.type](uC(r.pointer));t.add(o)}},e.prototype.createLabelEl=function(t,r,n,i){if(r.label){var a=Ka(t).labelEl=new mr(uC(r.label));t.add(a),cC(a,i)}},e.prototype.updatePointerEl=function(t,r,n){var i=Ka(t).pointerEl;i&&r.pointer&&(i.setStyle(r.pointer.style),n(i,{shape:r.pointer.shape}))},e.prototype.updateLabelEl=function(t,r,n,i){var a=Ka(t).labelEl;a&&(a.setStyle(r.label.style),n(a,{x:r.label.x,y:r.label.y}),cC(a,i))},e.prototype._renderHandle=function(t){if(!(this._dragging||!this.updateHandleTransform)){var r=this._axisPointerModel,n=this._api.getZr(),i=this._handle,a=r.getModel("handle"),o=r.get("status");if(!a.get("show")||!o||o==="hide"){i&&n.remove(i),this._handle=null;return}var s;this._handle||(s=!0,i=this._handle=M0(a.get("icon"),{cursor:"move",draggable:!0,onmousemove:function(u){C2(u.event)},onmousedown:Ip(this._onHandleDragMove,this,0,0),drift:Ip(this._onHandleDragMove,this),ondragend:Ip(this._onHandleDragEnd,this)}),n.add(i)),dC(i,r,!1),i.setStyle(a.getItemStyle(null,["color","borderColor","borderWidth","opacity","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY"]));var l=a.get("size");ye(l)||(l=[l,l]),i.scaleX=l[0]/2,i.scaleY=l[1]/2,VE(this,"_doDispatchAxisPointer",a.get("throttle")||0,"fixRate"),this._moveHandleToValue(t,s)}},e.prototype._moveHandleToValue=function(t,r){fC(this._axisPointerModel,!r&&this._moveAnimation,this._handle,Op(this.getHandleTransform(t,this._axisModel,this._axisPointerModel)))},e.prototype._onHandleDragMove=function(t,r){var n=this._handle;if(n){this._dragging=!0;var i=this.updateHandleTransform(Op(n),[t,r],this._axisModel,this._axisPointerModel);this._payloadInfo=i,n.stopAnimation(),n.attr(Op(i)),Ka(n).lastProp=null,this._doDispatchAxisPointer()}},e.prototype._doDispatchAxisPointer=function(){var t=this._handle;if(t){var r=this._payloadInfo,n=this._axisModel;this._api.dispatchAction({type:"updateAxisPointer",x:r.cursorPoint[0],y:r.cursorPoint[1],tooltipOption:r.tooltipOption,axesInfo:[{axisDim:n.axis.dim,axisIndex:n.componentIndex}]})}},e.prototype._onHandleDragEnd=function(){this._dragging=!1;var t=this._handle;if(t){var r=this._axisPointerModel.get("value");this._moveHandleToValue(r),this._api.dispatchAction({type:"hideTip"})}},e.prototype.clear=function(t){this._lastValue=null,this._lastStatus=null;var r=t.getZr(),n=this._group,i=this._handle;r&&n&&(this._lastGraphicKey=null,n&&r.remove(n),i&&r.remove(i),this._group=null,this._handle=null,this._payloadInfo=null),wm(this,"_doDispatchAxisPointer")},e.prototype.doClear=function(){},e.prototype.buildLabel=function(t,r,n){return n=n||0,{x:t[n],y:t[1-n],width:r[n],height:r[1-n]}},e}();function fC(e,t,r,n){hD(Ka(r).lastProp,n)||(Ka(r).lastProp=n,t?Or(r,n,e):(r.stopAnimation(),r.attr(n)))}function hD(e,t){if(Re(e)&&Re(t)){var r=!0;return R(t,function(n,i){r=r&&hD(e[i],n)}),!!r}else return e===t}function cC(e,t){e[t.get(["label","show"])?"show":"hide"]()}function Op(e){return{x:e.x||0,y:e.y||0,rotation:e.rotation||0}}function dC(e,t,r){var n=t.get("z"),i=t.get("zlevel");e&&e.traverse(function(a){a.type!=="group"&&(n!=null&&(a.z=n),i!=null&&(a.zlevel=i),a.silent=r)})}const YJ=UJ;function jJ(e){var t=e.get("type"),r=e.getModel(t+"Style"),n;return t==="line"?(n=r.getLineStyle(),n.fill=null):t==="shadow"&&(n=r.getAreaStyle(),n.stroke=null),n}function qJ(e,t,r,n,i){var a=r.get("value"),o=vD(a,t.axis,t.ecModel,r.get("seriesDataIndices"),{precision:r.get(["label","precision"]),formatter:r.get(["label","formatter"])}),s=r.getModel("label"),l=Oh(s.get("padding")||0),u=s.getFont(),f=u0(o,u),c=i.position,h=f.width+l[1]+l[3],d=f.height+l[0]+l[2],v=i.align;v==="right"&&(c[0]-=h),v==="center"&&(c[0]-=h/2);var p=i.verticalAlign;p==="bottom"&&(c[1]-=d),p==="middle"&&(c[1]-=d/2),KJ(c,h,d,n);var m=s.get("backgroundColor");(!m||m==="auto")&&(m=t.get(["axisLine","lineStyle","color"])),e.label={x:c[0],y:c[1],style:ha(s,{text:o,font:u,fill:s.getTextColor(),padding:l,backgroundColor:m}),z2:10}}function KJ(e,t,r,n){var i=n.getWidth(),a=n.getHeight();e[0]=Math.min(e[0]+t,i)-t,e[1]=Math.min(e[1]+r,a)-r,e[0]=Math.max(e[0],0),e[1]=Math.max(e[1],0)}function vD(e,t,r,n,i){e=t.scale.parse(e);var a=t.scale.getLabel({value:e},{precision:i.precision}),o=i.formatter;if(o){var s={value:n_(t,{value:e}),axisDimension:t.dim,axisIndex:t.index,seriesData:[]};R(n,function(l){var u=r.getSeriesByIndex(l.seriesIndex),f=l.dataIndexInside,c=u&&u.getDataParams(f);c&&s.seriesData.push(c)}),Ee(o)?a=o.replace("{value}",a):Ye(o)&&(a=o(s))}return a}function pD(e,t,r){var n=Pu();return o0(n,n,r.rotation),Vg(n,n,r.position),T0([e.dataToCoord(t),(r.labelOffset||0)+(r.labelDirection||1)*(r.labelMargin||0)],n)}function XJ(e,t,r,n,i,a){var o=uD.innerTextLayout(r.rotation,0,r.labelDirection);r.labelMargin=i.get(["label","margin"]),qJ(t,n,i,a,{position:pD(n.axis,e,r),align:o.textAlign,verticalAlign:o.textVerticalAlign})}function ZJ(e,t,r){return r=r||0,{x1:e[r],y1:e[1-r],x2:t[r],y2:t[1-r]}}function QJ(e,t,r){return r=r||0,{x:e[r],y:e[1-r],width:t[r],height:t[1-r]}}var JJ=function(e){ge(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.makeElOption=function(r,n,i,a,o){var s=i.axis,l=s.grid,u=a.get("type"),f=hC(l,s).getOtherAxis(s).getGlobalExtent(),c=s.toGlobalCoord(s.dataToCoord(n,!0));if(u&&u!=="none"){var h=jJ(a),d=eee[u](s,c,f);d.style=h,r.graphicKey=d.type,r.pointer=d}var v=km(l.model,i);XJ(n,r,v,i,a,o)},t.prototype.getHandleTransform=function(r,n,i){var a=km(n.axis.grid.model,n,{labelInside:!1});a.labelMargin=i.get(["handle","margin"]);var o=pD(n.axis,r,a);return{x:o[0],y:o[1],rotation:a.rotation+(a.labelDirection<0?Math.PI:0)}},t.prototype.updateHandleTransform=function(r,n,i,a){var o=i.axis,s=o.grid,l=o.getGlobalExtent(!0),u=hC(s,o).getOtherAxis(o).getGlobalExtent(),f=o.dim==="x"?0:1,c=[r.x,r.y];c[f]+=n[f],c[f]=Math.min(l[1],c[f]),c[f]=Math.max(l[0],c[f]);var h=(u[1]+u[0])/2,d=[h,h];d[f]=c[f];var v=[{verticalAlign:"middle"},{align:"center"}];return{x:c[0],y:c[1],rotation:r.rotation,cursorPoint:d,tooltipOption:v[f]}},t}(YJ);function hC(e,t){var r={};return r[t.dim+"AxisIndex"]=t.index,e.getCartesian(r)}var eee={line:function(e,t,r){var n=ZJ([t,r[0]],[t,r[1]],vC(e));return{type:"Line",subPixelOptimize:!0,shape:n}},shadow:function(e,t,r){var n=Math.max(1,e.getBandWidth()),i=r[1]-r[0];return{type:"Rect",shape:QJ([t-n/2,r[0]],[n,i],vC(e))}}};function vC(e){return e.dim==="x"?0:1}const tee=JJ;var ree=function(e){ge(t,e);function t(){var r=e!==null&&e.apply(this,arguments)||this;return r.type=t.type,r}return t.type="axisPointer",t.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}},t}(Mt);const nee=ree;var gi=Et(),iee=R;function gD(e,t,r){if(!He.node){var n=t.getZr();gi(n).records||(gi(n).records={}),aee(n,t);var i=gi(n).records[e]||(gi(n).records[e]={});i.handler=r}}function aee(e,t){if(gi(e).initialized)return;gi(e).initialized=!0,r("click",Ot(pC,"click")),r("mousemove",Ot(pC,"mousemove")),r("globalout",see);function r(n,i){e.on(n,function(a){var o=lee(t);iee(gi(e).records,function(s){s&&i(s,a,o.dispatchAction)}),oee(o.pendings,t)})}}function oee(e,t){var r=e.showTip.length,n=e.hideTip.length,i;r?i=e.showTip[r-1]:n&&(i=e.hideTip[n-1]),i&&(i.dispatchAction=null,t.dispatchAction(i))}function see(e,t,r){e.handler("leave",null,r)}function pC(e,t,r,n){t.handler(e,r,n)}function lee(e){var t={showTip:[],hideTip:[]},r=function(n){var i=t[n.type];i?i.push(n):(n.dispatchAction=r,e.dispatchAction(n))};return{dispatchAction:r,pendings:t}}function Fm(e,t){if(!He.node){var r=t.getZr(),n=(gi(r).records||{})[e];n&&(gi(r).records[e]=null)}}var uee=function(e){ge(t,e);function t(){var r=e!==null&&e.apply(this,arguments)||this;return r.type=t.type,r}return t.prototype.render=function(r,n,i){var a=n.getComponent("tooltip"),o=r.get("triggerOn")||a&&a.get("triggerOn")||"mousemove|click";gD("axisPointer",i,function(s,l,u){o!=="none"&&(s==="leave"||o.indexOf(s)>=0)&&u({type:"updateAxisPointer",currTrigger:s,x:l&&l.offsetX,y:l&&l.offsetY})})},t.prototype.remove=function(r,n){Fm("axisPointer",n)},t.prototype.dispose=function(r,n){Fm("axisPointer",n)},t.type="axisPointer",t}(Mi);const fee=uee;function mD(e,t){var r=[],n=e.seriesIndex,i;if(n==null||!(i=t.getSeriesByIndex(n)))return{point:[]};var a=i.getData(),o=sf(a,e);if(o==null||o<0||ye(o))return{point:[]};var s=a.getItemGraphicEl(o),l=i.coordinateSystem;if(i.getTooltipPosition)r=i.getTooltipPosition(o)||[];else if(l&&l.dataToPoint)if(e.isStacked){var u=l.getBaseAxis(),f=l.getOtherAxis(u),c=f.dim,h=u.dim,d=c==="x"||c==="radius"?1:0,v=a.mapDimension(h),p=[];p[d]=a.get(v,o),p[1-d]=a.get(a.getCalculationInfo("stackResultDimension"),o),r=l.dataToPoint(p)||[]}else r=l.dataToPoint(a.getValues(Ne(l.dimensions,function(g){return a.mapDimension(g)}),o))||[];else if(s){var m=s.getBoundingRect().clone();m.applyTransform(s.transform),r=[m.x+m.width/2,m.y+m.height/2]}return{point:r,el:s}}var gC=Et();function cee(e,t,r){var n=e.currTrigger,i=[e.x,e.y],a=e,o=e.dispatchAction||xt(r.dispatchAction,r),s=t.getComponent("axisPointer").coordSysAxesInfo;if(s){Zc(i)&&(i=mD({seriesIndex:a.seriesIndex,dataIndex:a.dataIndex},t).point);var l=Zc(i),u=a.axesInfo,f=s.axesInfo,c=n==="leave"||Zc(i),h={},d={},v={list:[],map:{}},p={showPointer:Ot(hee,d),showTooltip:Ot(vee,v)};R(s.coordSysMap,function(g,y){var _=l||g.containPoint(i);R(s.coordSysAxesInfo[y],function(b,x){var w=b.axis,S=yee(u,b);if(!c&&_&&(!u||S)){var C=S&&S.value;C==null&&!l&&(C=w.pointToData(i)),C!=null&&mC(b,C,p,!1,h)}})});var m={};return R(f,function(g,y){var _=g.linkGroup;_&&!d[y]&&R(_.axesInfo,function(b,x){var w=d[x];if(b!==g&&w){var S=w.value;_.mapper&&(S=g.axis.scale.parse(_.mapper(S,yC(b),yC(g)))),m[g.key]=S}})}),R(m,function(g,y){mC(f[y],g,p,!0,h)}),pee(d,f,h),gee(v,i,e,o),mee(f,o,r),h}}function mC(e,t,r,n,i){var a=e.axis;if(!(a.scale.isBlank()||!a.containData(t))){if(!e.involveSeries){r.showPointer(e,t);return}var o=dee(t,e),s=o.payloadBatch,l=o.snapToValue;s[0]&&i.seriesIndex==null&&ue(i,s[0]),!n&&e.snap&&a.containData(l)&&l!=null&&(t=l),r.showPointer(e,t,s),r.showTooltip(e,o,l)}}function dee(e,t){var r=t.axis,n=r.dim,i=e,a=[],o=Number.MAX_VALUE,s=-1;return R(t.seriesModels,function(l,u){var f=l.getData().mapDimensionsAll(n),c,h;if(l.getAxisTooltipData){var d=l.getAxisTooltipData(f,e,r);h=d.dataIndices,c=d.nestestValue}else{if(h=l.getData().indicesOfNearest(f[0],e,r.type==="category"?.5:null),!h.length)return;c=l.getData().get(f[0],h[0])}if(!(c==null||!isFinite(c))){var v=e-c,p=Math.abs(v);p<=o&&((p=0&&s<0)&&(o=p,s=v,i=c,a.length=0),R(h,function(m){a.push({seriesIndex:l.seriesIndex,dataIndexInside:m,dataIndex:l.getData().getRawIndex(m)})}))}}),{payloadBatch:a,snapToValue:i}}function hee(e,t,r,n){e[t.key]={value:r,payloadBatch:n}}function vee(e,t,r,n){var i=r.payloadBatch,a=t.axis,o=a.model,s=t.axisPointerModel;if(!(!t.triggerTooltip||!i.length)){var l=t.coordSys.model,u=Vu(l),f=e.map[u];f||(f=e.map[u]={coordSysId:l.id,coordSysIndex:l.componentIndex,coordSysType:l.type,coordSysMainType:l.mainType,dataByAxis:[]},e.list.push(f)),f.dataByAxis.push({axisDim:a.dim,axisIndex:o.componentIndex,axisType:o.type,axisId:o.id,value:n,valueLabelOpt:{precision:s.get(["label","precision"]),formatter:s.get(["label","formatter"])},seriesDataIndices:i.slice()})}}function pee(e,t,r){var n=r.axesInfo=[];R(t,function(i,a){var o=i.axisPointerModel.option,s=e[a];s?(!i.useHandle&&(o.status="show"),o.value=s.value,o.seriesDataIndices=(s.payloadBatch||[]).slice()):!i.useHandle&&(o.status="hide"),o.status==="show"&&n.push({axisDim:i.axis.dim,axisIndex:i.axis.model.componentIndex,value:o.value})})}function gee(e,t,r,n){if(Zc(t)||!e.list.length){n({type:"hideTip"});return}var i=((e.list[0].dataByAxis[0]||{}).seriesDataIndices||[])[0]||{};n({type:"showTip",escapeConnect:!0,x:t[0],y:t[1],tooltipOption:r.tooltipOption,position:r.position,dataIndexInside:i.dataIndexInside,dataIndex:i.dataIndex,seriesIndex:i.seriesIndex,dataByCoordSys:e.list})}function mee(e,t,r){var n=r.getZr(),i="axisPointerLastHighlights",a=gC(n)[i]||{},o=gC(n)[i]={};R(e,function(u,f){var c=u.axisPointerModel.option;c.status==="show"&&u.triggerEmphasis&&R(c.seriesDataIndices,function(h){var d=h.seriesIndex+" | "+h.dataIndex;o[d]=h})});var s=[],l=[];R(a,function(u,f){!o[f]&&l.push(u)}),R(o,function(u,f){!a[f]&&s.push(u)}),l.length&&r.dispatchAction({type:"downplay",escapeConnect:!0,notBlur:!0,batch:l}),s.length&&r.dispatchAction({type:"highlight",escapeConnect:!0,notBlur:!0,batch:s})}function yee(e,t){for(var r=0;r<(e||[]).length;r++){var n=e[r];if(t.axis.dim===n.axisDim&&t.axis.model.componentIndex===n.axisIndex)return n}}function yC(e){var t=e.axis.model,r={},n=r.axisDim=e.axis.dim;return r.axisIndex=r[n+"AxisIndex"]=t.componentIndex,r.axisName=r[n+"AxisName"]=t.name,r.axisId=r[n+"AxisId"]=t.id,r}function Zc(e){return!e||e[0]==null||isNaN(e[0])||e[1]==null||isNaN(e[1])}function yD(e){fD.registerAxisPointerClass("CartesianAxisPointer",tee),e.registerComponentModel(nee),e.registerComponentView(fee),e.registerPreprocessor(function(t){if(t){(!t.axisPointer||t.axisPointer.length===0)&&(t.axisPointer={});var r=t.axisPointer.link;r&&!ye(r)&&(t.axisPointer.link=[r])}}),e.registerProcessor(e.PRIORITY.PROCESSOR.STATISTIC,function(t,r){t.getComponent("axisPointer").coordSysAxesInfo=xJ(t,r)}),e.registerAction({type:"updateAxisPointer",event:"updateAxisPointer",update:":updateAxisPointer"},cee)}function _ee(e){va(BJ),va(yD)}function bee(e,t){var r=Oh(t.get("padding")),n=t.getItemStyle(["color","opacity"]);return n.fill=t.get("backgroundColor"),e=new Gt({shape:{x:e.x-r[3],y:e.y-r[0],width:e.width+r[1]+r[3],height:e.height+r[0]+r[2],r:t.get("borderRadius")},style:n,silent:!0,z2:-1}),e}var wee=function(e){ge(t,e);function t(){var r=e!==null&&e.apply(this,arguments)||this;return r.type=t.type,r}return t.type="tooltip",t.dependencies=["axisPointer"],t.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}},t}(Mt);const See=wee;function _D(e){var t=e.get("confine");return t!=null?!!t:e.get("renderMode")==="richText"}function bD(e){if(He.domSupported){for(var t=document.documentElement.style,r=0,n=e.length;r-1?(s+="top:50%",l+="translateY(-50%) rotate("+(u=a==="left"?-225:-45)+"deg)"):(s+="left:50%",l+="translateX(-50%) rotate("+(u=a==="top"?225:45)+"deg)");var f=u*Math.PI/180,c=o+i,h=c*Math.abs(Math.cos(f))+c*Math.abs(Math.sin(f)),d=Math.round(((h-Math.SQRT2*i)/2+Math.SQRT2*i-(h-c)/2)*100)/100;s+=";"+a+":-"+d+"px";var v=t+" solid "+i+"px;",p=["position:absolute;width:"+o+"px;height:"+o+"px;z-index:-1;",s+";"+l+";","border-bottom:"+v,"border-right:"+v,"background-color:"+n+";"];return'
'}function Eee(e,t){var r="cubic-bezier(0.23,1,0.32,1)",n=" "+e/2+"s "+r,i="opacity"+n+",visibility"+n;return t||(n=" "+e+"s "+r,i+=He.transformSupported?","+s_+n:",left"+n+",top"+n),Tee+":"+i}function _C(e,t,r){var n=e.toFixed(0)+"px",i=t.toFixed(0)+"px";if(!He.transformSupported)return r?"top:"+i+";left:"+n+";":[["top",i],["left",n]];var a=He.transform3dSupported,o="translate"+(a?"3d":"")+"("+n+","+i+(a?",0":"")+")";return r?"top:0;left:0;"+s_+":"+o+";":[["top",0],["left",0],[wD,o]]}function Lee(e){var t=[],r=e.get("fontSize"),n=e.getTextColor();n&&t.push("color:"+n),t.push("font:"+e.getFont()),r&&t.push("line-height:"+Math.round(r*3/2)+"px");var i=e.get("textShadowColor"),a=e.get("textShadowBlur")||0,o=e.get("textShadowOffsetX")||0,s=e.get("textShadowOffsetY")||0;return i&&a&&t.push("text-shadow:"+o+"px "+s+"px "+a+"px "+i),R(["decoration","align"],function(l){var u=e.get(l);u&&t.push("text-"+l+":"+u)}),t.join(";")}function Dee(e,t,r){var n=[],i=e.get("transitionDuration"),a=e.get("backgroundColor"),o=e.get("shadowBlur"),s=e.get("shadowColor"),l=e.get("shadowOffsetX"),u=e.get("shadowOffsetY"),f=e.getModel("textStyle"),c=$E(e,"html"),h=l+"px "+u+"px "+o+"px "+s;return n.push("box-shadow:"+h),t&&i&&n.push(Eee(i,r)),a&&n.push("background-color:"+a),R(["width","color","radius"],function(d){var v="border-"+d,p=vE(v),m=e.get(p);m!=null&&n.push(v+":"+m+(d==="color"?"":"px"))}),n.push(Lee(f)),c!=null&&n.push("padding:"+Oh(c).join("px ")+"px"),n.join(";")+";"}function bC(e,t,r,n,i){var a=t&&t.painter;if(r){var o=a&&a.getViewportRoot();o&&TU(e,o,document.body,n,i)}else{e[0]=n,e[1]=i;var s=a&&a.getViewportRootOffset();s&&(e[0]+=s.offsetLeft,e[1]+=s.offsetTop)}e[2]=e[0]/t.getWidth(),e[3]=e[1]/t.getHeight()}var Iee=function(){function e(t,r,n){if(this._show=!1,this._styleCoord=[0,0,0,0],this._enterable=!0,this._alwaysShowContent=!1,this._firstShow=!0,this._longHide=!0,He.wxa)return null;var i=document.createElement("div");i.domBelongToZr=!0,this.el=i;var a=this._zr=r.getZr(),o=this._appendToBody=n&&n.appendToBody;bC(this._styleCoord,a,o,r.getWidth()/2,r.getHeight()/2),o?document.body.appendChild(i):t.appendChild(i),this._container=t;var s=this;i.onmouseenter=function(){s._enterable&&(clearTimeout(s._hideTimeout),s._show=!0),s._inContent=!0},i.onmousemove=function(l){if(l=l||window.event,!s._enterable){var u=a.handler,f=a.painter.getViewportRoot();Qr(f,l,!0),u.dispatch("mousemove",l)}},i.onmouseleave=function(){s._inContent=!1,s._enterable&&s._show&&s.hideLater(s._hideDelay)}}return e.prototype.update=function(t){var r=this._container,n=Cee(r,"position"),i=r.style;i.position!=="absolute"&&n!=="absolute"&&(i.position="relative");var a=t.get("alwaysShowContent");a&&this._moveIfResized(),this._alwaysShowContent=a,this.el.className=t.get("className")||""},e.prototype.show=function(t,r){clearTimeout(this._hideTimeout),clearTimeout(this._longHideTimeout);var n=this.el,i=n.style,a=this._styleCoord;n.innerHTML?i.cssText=Mee+Dee(t,!this._firstShow,this._longHide)+_C(a[0],a[1],!0)+("border-color:"+ku(r)+";")+(t.get("extraCssText")||"")+(";pointer-events:"+(this._enterable?"auto":"none")):i.display="none",this._show=!0,this._firstShow=!1,this._longHide=!1},e.prototype.setContent=function(t,r,n,i,a){var o=this.el;if(t==null){o.innerHTML="";return}var s="";if(Ee(a)&&n.get("trigger")==="item"&&!_D(n)&&(s=Pee(n,i,a)),Ee(t))o.innerHTML=t+s;else if(t){o.innerHTML="",ye(t)||(t=[t]);for(var l=0;l=0?this._tryShow(a,o):i==="leave"&&this._hide(o))},this))},t.prototype._keepShow=function(){var r=this._tooltipModel,n=this._ecModel,i=this._api,a=r.get("triggerOn");if(this._lastX!=null&&this._lastY!=null&&a!=="none"&&a!=="click"){var o=this;clearTimeout(this._refreshUpdateTimeout),this._refreshUpdateTimeout=setTimeout(function(){!i.isDisposed()&&o.manuallyShowTip(r,n,i,{x:o._lastX,y:o._lastY,dataByCoordSys:o._lastDataByCoordSys})})}},t.prototype.manuallyShowTip=function(r,n,i,a){if(!(a.from===this.uid||He.node||!i.getDom())){var o=xC(a,i);this._ticket="";var s=a.dataByCoordSys,l=Hee(a,n,i);if(l){var u=l.el.getBoundingRect().clone();u.applyTransform(l.el.transform),this._tryShow({offsetX:u.x+u.width/2,offsetY:u.y+u.height/2,target:l.el,position:a.position,positionDefault:"bottom"},o)}else if(a.tooltip&&a.x!=null&&a.y!=null){var f=kee;f.x=a.x,f.y=a.y,f.update(),dt(f).tooltipConfig={name:null,option:a.tooltip},this._tryShow({offsetX:a.x,offsetY:a.y,target:f},o)}else if(s)this._tryShow({offsetX:a.x,offsetY:a.y,position:a.position,dataByCoordSys:s,tooltipOption:a.tooltipOption},o);else if(a.seriesIndex!=null){if(this._manuallyAxisShowTip(r,n,i,a))return;var c=mD(a,n),h=c.point[0],d=c.point[1];h!=null&&d!=null&&this._tryShow({offsetX:h,offsetY:d,target:c.el,position:a.position,positionDefault:"bottom"},o)}else a.x!=null&&a.y!=null&&(i.dispatchAction({type:"updateAxisPointer",x:a.x,y:a.y}),this._tryShow({offsetX:a.x,offsetY:a.y,position:a.position,target:i.getZr().findHover(a.x,a.y).target},o))}},t.prototype.manuallyHideTip=function(r,n,i,a){var o=this._tooltipContent;this._tooltipModel&&o.hideLater(this._tooltipModel.get("hideDelay")),this._lastX=this._lastY=this._lastDataByCoordSys=null,a.from!==this.uid&&this._hide(xC(a,i))},t.prototype._manuallyAxisShowTip=function(r,n,i,a){var o=a.seriesIndex,s=a.dataIndex,l=n.getComponent("axisPointer").coordSysAxesInfo;if(!(o==null||s==null||l==null)){var u=n.getSeriesByIndex(o);if(u){var f=u.getData(),c=bl([f.getItemModel(s),u,(u.coordinateSystem||{}).model],this._tooltipModel);if(c.get("trigger")==="axis")return i.dispatchAction({type:"updateAxisPointer",seriesIndex:o,dataIndex:s,position:a.position}),!0}}},t.prototype._tryShow=function(r,n){var i=r.target,a=this._tooltipModel;if(a){this._lastX=r.offsetX,this._lastY=r.offsetY;var o=r.dataByCoordSys;if(o&&o.length)this._showAxisTooltip(o,r);else if(i){this._lastDataByCoordSys=null;var s,l;Ll(i,function(u){if(dt(u).dataIndex!=null)return s=u,!0;if(dt(u).tooltipConfig!=null)return l=u,!0},!0),s?this._showSeriesItemTooltip(r,s,n):l?this._showComponentItemTooltip(r,l,n):this._hide(n)}else this._lastDataByCoordSys=null,this._hide(n)}},t.prototype._showOrMove=function(r,n){var i=r.get("showDelay");n=xt(n,this),clearTimeout(this._showTimout),i>0?this._showTimout=setTimeout(n,i):n()},t.prototype._showAxisTooltip=function(r,n){var i=this._ecModel,a=this._tooltipModel,o=[n.offsetX,n.offsetY],s=bl([n.tooltipOption],a),l=this._renderMode,u=[],f=Fu("section",{blocks:[],noHeader:!0}),c=[],h=new up;R(r,function(y){R(y.dataByAxis,function(_){var b=i.getComponent(_.axisDim+"Axis",_.axisIndex),x=_.value;if(!(!b||x==null)){var w=vD(x,b.axis,i,_.seriesDataIndices,_.valueLabelOpt),S=Fu("section",{header:w,noHeader:!Gn(w),sortBlocks:!0,blocks:[]});f.blocks.push(S),R(_.seriesDataIndices,function(C){var M=i.getSeriesByIndex(C.seriesIndex),A=C.dataIndexInside,P=M.getDataParams(A);if(!(P.dataIndex<0)){P.axisDim=_.axisDim,P.axisIndex=_.axisIndex,P.axisType=_.axisType,P.axisId=_.axisId,P.axisValue=n_(b.axis,{value:x}),P.axisValueLabel=w,P.marker=h.makeTooltipMarker("item",ku(P.color),l);var E=FS(M.formatTooltip(A,!0,null)),L=E.frag;if(L){var O=bl([M],a).get("valueFormatter");S.blocks.push(O?ue({valueFormatter:O},L):L)}E.text&&c.push(E.text),u.push(P)}})}})}),f.blocks.reverse(),c.reverse();var d=n.position,v=s.get("order"),p=WS(f,h,l,v,i.get("useUTC"),s.get("textStyle"));p&&c.unshift(p);var m=l==="richText"?` +`];function Fu(e,t){return t.type=e,t}function ym(e){return e.type==="section"}function NE(e){return ym(e)?Kq:Xq}function BE(e){if(ym(e)){var t=0,r=e.blocks.length,n=r>1||r>0&&!e.noHeader;return R(e.blocks,function(i){var a=BE(i);a>=t&&(t=a+ +(n&&(!a||ym(i)&&!i.noHeader)))}),t}return 0}function Kq(e,t,r,n){var i=t.noHeader,a=Zq(BE(t)),o=[],s=t.blocks||[];Ci(!s||ye(s)),s=s||[];var l=e.orderMode;if(t.sortBlocks&&l){s=s.slice();var u={valueAsc:"asc",valueDesc:"desc"};if(Ds(u,l)){var f=new Oq(u[l],null);s.sort(function(v,p){return f.evaluate(v.sortParam,p.sortParam)})}else l==="seriesDesc"&&s.reverse()}R(s,function(v,p){var m=t.valueFormatter,g=NE(v)(m?ue(ue({},e),{valueFormatter:m}):e,v,p>0?a.html:0,n);g!=null&&o.push(g)});var c=e.renderMode==="richText"?o.join(a.richText):_m(o.join(""),i?r:a.html);if(i)return c;var h=pm(t.header,"ordinal",e.useUTC),d=kE(n,e.renderMode).nameStyle;return e.renderMode==="richText"?FE(e,h,d)+a.richText+c:_m('
'+tn(h)+"
"+c,r)}function Xq(e,t,r,n){var i=e.renderMode,a=t.noName,o=t.noValue,s=!t.markerType,l=t.name,u=e.useUTC,f=t.valueFormatter||e.valueFormatter||function(b){return b=ye(b)?b:[b],Ne(b,function(x,w){return pm(x,ye(d)?d[w]:d,u)})};if(!(a&&o)){var c=s?"":e.markupStyleCreator.makeTooltipMarker(t.markerType,t.markerColor||"#333",i),h=a?"":pm(l,"ordinal",u),d=t.valueType,v=o?[]:f(t.value),p=!s||!a,m=!s&&a,g=kE(n,i),y=g.nameStyle,_=g.valueStyle;return i==="richText"?(s?"":c)+(a?"":FE(e,h,y))+(o?"":eK(e,v,p,m,_)):_m((s?"":c)+(a?"":Qq(h,!s,y))+(o?"":Jq(v,p,m,_)),r)}}function WS(e,t,r,n,i,a){if(e){var o=NE(e),s={useUTC:i,renderMode:r,orderMode:n,markupStyleCreator:t,valueFormatter:e.valueFormatter};return o(s,e,0,a)}}function Zq(e){return{html:jq[e],richText:qq[e]}}function _m(e,t){var r='
',n="margin: "+t+"px 0 0";return'
'+e+r+"
"}function Qq(e,t,r){var n=t?"margin-left:2px":"";return''+tn(e)+""}function Jq(e,t,r,n){var i=r?"10px":"20px",a=t?"float:right;margin-left:"+i:"";return e=ye(e)?e:[e],''+Ne(e,function(o){return tn(o)}).join("  ")+""}function FE(e,t,r){return e.markupStyleCreator.wrapRichTextStyle(t,r)}function eK(e,t,r,n,i){var a=[i],o=n?10:20;return r&&a.push({padding:[0,0,0,o],align:"right"}),e.markupStyleCreator.wrapRichTextStyle(ye(t)?t.join(" "):t,a)}function tK(e,t){var r=e.getData().getItemVisual(t,"style"),n=r[e.visualDrawType];return ku(n)}function $E(e,t){var r=e.get("padding");return r??(t==="richText"?[8,10]:10)}var up=function(){function e(){this.richTextStyles={},this._nextStyleNameId=K2()}return e.prototype._generateStyleName=function(){return"__EC_aUTo_"+this._nextStyleNameId++},e.prototype.makeTooltipMarker=function(t,r,n){var i=n==="richText"?this._generateStyleName():null,a=Vj({color:r,type:t,renderMode:n,markerId:i});return Ee(a)?a:(this.richTextStyles[i]=a.style,a.content)},e.prototype.wrapRichTextStyle=function(t,r){var n={};ye(r)?R(r,function(a){return ue(n,a)}):ue(n,r);var i=this._generateStyleName();return this.richTextStyles[i]=n,"{"+i+"|"+t+"}"},e}();function rK(e){var t=e.series,r=e.dataIndex,n=e.multipleSeries,i=t.getData(),a=i.mapDimensionsAll("defaultedTooltip"),o=a.length,s=t.getRawValue(r),l=ye(s),u=tK(t,r),f,c,h,d;if(o>1||l&&!o){var v=nK(s,t,r,a,u);f=v.inlineValues,c=v.inlineValueTypes,h=v.blocks,d=v.inlineValues[0]}else if(o){var p=i.getDimensionInfo(a[0]);d=f=Rs(i,r,a[0]),c=p.type}else d=f=l?s[0]:s;var m=h0(t),g=m&&t.name||"",y=i.getName(r),_=n?g:y;return Fu("section",{header:g,noHeader:n||!m,sortParam:d,blocks:[Fu("nameValue",{markerType:"item",markerColor:u,name:_,noName:!Gn(_),value:f,valueType:c})].concat(h||[])})}function nK(e,t,r,n,i){var a=t.getData(),o=ca(e,function(c,h,d){var v=a.getDimensionInfo(d);return c=c||v&&v.tooltip!==!1&&v.displayName!=null},!1),s=[],l=[],u=[];n.length?R(n,function(c){f(Rs(a,r,c),c)}):R(e,f);function f(c,h){var d=a.getDimensionInfo(h);!d||d.otherDims.tooltip===!1||(o?u.push(Fu("nameValue",{markerType:"subItem",markerColor:i,name:d.displayName,value:c,valueType:d.type})):(s.push(c),l.push(d.type)))}return{inlineValues:s,inlineValueTypes:l,blocks:u}}var Fi=Et();function tc(e,t){return e.getName(t)||e.getId(t)}var iK="__universalTransitionEnabled",Bh=function(e){ge(t,e);function t(){var r=e!==null&&e.apply(this,arguments)||this;return r._selectedDataIndicesMap={},r}return t.prototype.init=function(r,n,i){this.seriesIndex=this.componentIndex,this.dataTask=nu({count:oK,reset:sK}),this.dataTask.context={model:this},this.mergeDefaultAndTheme(r,i);var a=Fi(this).sourceManager=new Yq(this);a.prepareSource();var o=this.getInitialData(r,i);US(o,this),this.dataTask.context.data=o,Fi(this).dataBeforeProcessed=o,GS(this),this._initSelectedMapFromData(o)},t.prototype.mergeDefaultAndTheme=function(r,n){var i=Nu(this),a=i?Rh(r):{},o=this.subType;Mt.hasClass(o)&&(o+="Series"),st(r,n.getTheme().get(this.subType)),st(r,this.getDefaultOption()),em(r,"label",["show"]),this.fillDataTextStyle(r.data),i&&Os(r,a,i)},t.prototype.mergeOption=function(r,n){r=st(this.option,r,!0),this.fillDataTextStyle(r.data);var i=Nu(this);i&&Os(this.option,r,i);var a=Fi(this).sourceManager;a.dirty(),a.prepareSource();var o=this.getInitialData(r,n);US(o,this),this.dataTask.dirty(),this.dataTask.context.data=o,Fi(this).dataBeforeProcessed=o,GS(this),this._initSelectedMapFromData(o)},t.prototype.fillDataTextStyle=function(r){if(r&&!Gr(r))for(var n=["show"],i=0;ithis.getShallow("animationThreshold")&&(n=!1),!!n},t.prototype.restoreData=function(){this.dataTask.dirty()},t.prototype.getColorFromPalette=function(r,n,i){var a=this.ecModel,o=B0.prototype.getColorFromPalette.call(this,r,n,i);return o||(o=a.getColorFromPalette(r,n,i)),o},t.prototype.coordDimToDataDim=function(r){return this.getRawData().mapDimensionsAll(r)},t.prototype.getProgressive=function(){return this.get("progressive")},t.prototype.getProgressiveThreshold=function(){return this.get("progressiveThreshold")},t.prototype.select=function(r,n){this._innerSelect(this.getData(n),r)},t.prototype.unselect=function(r,n){var i=this.option.selectedMap;if(i){var a=this.option.selectedMode,o=this.getData(n);if(a==="series"||i==="all"){this.option.selectedMap={},this._selectedDataIndicesMap={};return}for(var s=0;s=0&&i.push(o)}return i},t.prototype.isSelected=function(r,n){var i=this.option.selectedMap;if(!i)return!1;var a=this.getData(n);return(i==="all"||i[tc(a,r)])&&!a.getItemModel(r).get(["select","disabled"])},t.prototype.isUniversalTransitionEnabled=function(){if(this[iK])return!0;var r=this.option.universalTransition;return r?r===!0?!0:r&&r.enabled:!1},t.prototype._innerSelect=function(r,n){var i,a,o=this.option,s=o.selectedMode,l=n.length;if(!(!s||!l)){if(s==="series")o.selectedMap="all";else if(s==="multiple"){Re(o.selectedMap)||(o.selectedMap={});for(var u=o.selectedMap,f=0;f0&&this._innerSelect(r,n)}},t.registerClass=function(r){return Mt.registerClass(r)},t.protoInitialize=function(){var r=t.prototype;r.type="series.__base__",r.seriesIndex=0,r.ignoreStyleOnData=!1,r.hasSymbolVisual=!1,r.defaultSymbol="circle",r.visualStyleAccessPath="itemStyle",r.visualDrawType="fill"}(),t}(Mt);ni(Bh,Dq);ni(Bh,B0);tP(Bh,Mt);function GS(e){var t=e.name;h0(e)||(e.name=aK(e)||t)}function aK(e){var t=e.getRawData(),r=t.mapDimensionsAll("seriesName"),n=[];return R(r,function(i){var a=t.getDimensionInfo(i);a.displayName&&n.push(a.displayName)}),n.join(" ")}function oK(e){return e.model.getRawData().count()}function sK(e){var t=e.model;return t.setData(t.getRawData().cloneShallow()),lK}function lK(e,t){t.outputData&&e.end>t.outputData.count()&&t.model.getRawData().cloneShallow(t.outputData)}function US(e,t){R(vU(e.CHANGABLE_METHODS,e.DOWNSAMPLE_METHODS),function(r){e.wrapMethod(r,Rt(uK,t))})}function uK(e,t){var r=bm(e);return r&&r.setOutputEnd((t||this).count()),t}function bm(e){var t=(e.ecModel||{}).scheduler,r=t&&t.getPipeline(e.uid);if(r){var n=r.currentTask;if(n){var i=n.agentStubMap;i&&(n=i.get(e.uid))}return n}}const So=Bh;var G0=function(){function e(){this.group=new Ur,this.uid=Ah("viewComponent")}return e.prototype.init=function(t,r){},e.prototype.render=function(t,r,n,i){},e.prototype.dispose=function(t,r){},e.prototype.updateView=function(t,r,n,i){},e.prototype.updateLayout=function(t,r,n,i){},e.prototype.updateVisual=function(t,r,n,i){},e.prototype.toggleBlurSeries=function(t,r,n){},e.prototype.eachRendered=function(t){var r=this.group;r&&r.traverse(t)},e}();p0(G0);Sh(G0);const Mi=G0;function HE(){var e=Et();return function(t){var r=e(t),n=t.pipelineContext,i=!!r.large,a=!!r.progressiveRender,o=r.large=!!(n&&n.large),s=r.progressiveRender=!!(n&&n.progressiveRender);return(i!==o||a!==s)&&"reset"}}var zE=Et(),fK=HE(),U0=function(){function e(){this.group=new Ur,this.uid=Ah("viewChart"),this.renderTask=nu({plan:cK,reset:dK}),this.renderTask.context={view:this}}return e.prototype.init=function(t,r){},e.prototype.render=function(t,r,n,i){},e.prototype.highlight=function(t,r,n,i){var a=t.getData(i&&i.dataType);a&&jS(a,i,"emphasis")},e.prototype.downplay=function(t,r,n,i){var a=t.getData(i&&i.dataType);a&&jS(a,i,"normal")},e.prototype.remove=function(t,r){this.group.removeAll()},e.prototype.dispose=function(t,r){},e.prototype.updateView=function(t,r,n,i){this.render(t,r,n,i)},e.prototype.updateLayout=function(t,r,n,i){this.render(t,r,n,i)},e.prototype.updateVisual=function(t,r,n,i){this.render(t,r,n,i)},e.prototype.eachRendered=function(t){P0(this.group,t)},e.markUpdateMethod=function(t,r){zE(t).updateMethod=r},e.protoInitialize=function(){var t=e.prototype;t.type="chart"}(),e}();function YS(e,t,r){e&&fm(e)&&(t==="emphasis"?am:om)(e,r)}function jS(e,t,r){var n=sf(e,t),i=t&&t.highlightKey!=null?_Y(t.highlightKey):null;n!=null?R(pr(n),function(a){YS(e.getItemGraphicEl(a),r,i)}):e.eachItemGraphicEl(function(a){YS(a,r,i)})}p0(U0);Sh(U0);function cK(e){return fK(e.model)}function dK(e){var t=e.model,r=e.ecModel,n=e.api,i=e.payload,a=t.pipelineContext.progressiveRender,o=e.view,s=i&&zE(i).updateMethod,l=a?"incrementalPrepareRender":s&&o[s]?s:"render";return l!=="render"&&o[l](t,r,n,i),hK[l]}var hK={incrementalPrepareRender:{progress:function(e,t){t.view.incrementalRender(e,t.model,t.ecModel,t.api,t.payload)}},render:{forceFirstProgress:!0,progress:function(e,t){t.view.render(t.model,t.ecModel,t.api,t.payload)}}};const ho=U0;var kd="\0__throttleOriginMethod",qS="\0__throttleRate",KS="\0__throttleType";function Y0(e,t,r){var n,i=0,a=0,o=null,s,l,u,f;t=t||0;function c(){a=new Date().getTime(),o=null,e.apply(l,u||[])}var h=function(){for(var d=[],v=0;v=0?c():o=setTimeout(c,-s),i=n};return h.clear=function(){o&&(clearTimeout(o),o=null)},h.debounceNextCall=function(d){f=d},h}function VE(e,t,r,n){var i=e[t];if(i){var a=i[kd]||i,o=i[KS],s=i[qS];if(s!==r||o!==n){if(r==null||!n)return e[t]=a;i=e[t]=Y0(a,r,n==="debounce"),i[kd]=a,i[KS]=n,i[qS]=r}return i}}function wm(e,t){var r=e[t];r&&r[kd]&&(r.clear&&r.clear(),e[t]=r[kd])}var XS=Et(),ZS={itemStyle:Du(tE,!0),lineStyle:Du(eE,!0)},vK={lineStyle:"stroke",itemStyle:"fill"};function WE(e,t){var r=e.visualStyleMapper||ZS[t];return r||(console.warn("Unknown style type '"+t+"'."),ZS.itemStyle)}function GE(e,t){var r=e.visualDrawType||vK[t];return r||(console.warn("Unknown style type '"+t+"'."),"fill")}var pK={createOnAllSeries:!0,performRawSeries:!0,reset:function(e,t){var r=e.getData(),n=e.visualStyleAccessPath||"itemStyle",i=e.getModel(n),a=WE(e,n),o=a(i),s=i.getShallow("decal");s&&(r.setVisual("decal",s),s.dirty=!0);var l=GE(e,n),u=o[l],f=Ye(u)?u:null,c=o.fill==="auto"||o.stroke==="auto";if(!o[l]||f||c){var h=e.getColorFromPalette(e.name,null,t.getSeriesCount());o[l]||(o[l]=h,r.setVisual("colorFromPalette",!0)),o.fill=o.fill==="auto"||Ye(o.fill)?h:o.fill,o.stroke=o.stroke==="auto"||Ye(o.stroke)?h:o.stroke}if(r.setVisual("style",o),r.setVisual("drawType",l),!t.isSeriesFiltered(e)&&f)return r.setVisual("colorFromPalette",!1),{dataEach:function(d,v){var p=e.getDataParams(v),m=ue({},o);m[l]=f(p),d.setItemVisual(v,"style",m)}}}},dl=new sr,gK={createOnAllSeries:!0,performRawSeries:!0,reset:function(e,t){if(!(e.ignoreStyleOnData||t.isSeriesFiltered(e))){var r=e.getData(),n=e.visualStyleAccessPath||"itemStyle",i=WE(e,n),a=r.getVisual("drawType");return{dataEach:r.hasItemOption?function(o,s){var l=o.getRawDataItem(s);if(l&&l[n]){dl.option=l[n];var u=i(dl),f=o.ensureUniqueItemVisual(s,"style");ue(f,u),dl.option.decal&&(o.setItemVisual(s,"decal",dl.option.decal),dl.option.decal.dirty=!0),a in u&&o.setItemVisual(s,"colorFromPalette",!1)}}:null}}}},mK={performRawSeries:!0,overallReset:function(e){var t=je();e.eachSeries(function(r){var n=r.getColorBy();if(!r.isColorBySeries()){var i=r.type+"-"+n,a=t.get(i);a||(a={},t.set(i,a)),XS(r).scope=a}}),e.eachSeries(function(r){if(!(r.isColorBySeries()||e.isSeriesFiltered(r))){var n=r.getRawData(),i={},a=r.getData(),o=XS(r).scope,s=r.visualStyleAccessPath||"itemStyle",l=GE(r,s);a.each(function(u){var f=a.getRawIndex(u);i[f]=u}),n.each(function(u){var f=i[u],c=a.getItemVisual(f,"colorFromPalette");if(c){var h=a.ensureUniqueItemVisual(f,"style"),d=n.getName(u)||u+"",v=n.count();h[l]=r.getColorFromPalette(d,o,v)}})}})}},rc=Math.PI;function yK(e,t){t=t||{},ht(t,{text:"loading",textColor:"#000",fontSize:12,fontWeight:"normal",fontStyle:"normal",fontFamily:"sans-serif",maskColor:"rgba(255, 255, 255, 0.8)",showSpinner:!0,color:"#5470c6",spinnerRadius:10,lineWidth:5,zlevel:0});var r=new Ur,n=new Gt({style:{fill:t.maskColor},zlevel:t.zlevel,z:1e4});r.add(n);var i=new mr({style:{text:t.text,fill:t.textColor,fontSize:t.fontSize,fontWeight:t.fontWeight,fontStyle:t.fontStyle,fontFamily:t.fontFamily},zlevel:t.zlevel,z:10001}),a=new Gt({style:{fill:"none"},textContent:i,textConfig:{position:"right",distance:10},zlevel:t.zlevel,z:10001});r.add(a);var o;return t.showSpinner&&(o=new S0({shape:{startAngle:-rc/2,endAngle:-rc/2+.1,r:t.spinnerRadius},style:{stroke:t.color,lineCap:"round",lineWidth:t.lineWidth},zlevel:t.zlevel,z:10001}),o.animateShape(!0).when(1e3,{endAngle:rc*3/2}).start("circularInOut"),o.animateShape(!0).when(1e3,{startAngle:rc*3/2}).delay(300).start("circularInOut"),r.add(o)),r.resize=function(){var s=i.getBoundingRect().width,l=t.showSpinner?t.spinnerRadius:0,u=(e.getWidth()-l*2-(t.showSpinner&&s?10:0)-s)/2-(t.showSpinner&&s?0:5+s/2)+(t.showSpinner?0:s/2)+(s?0:l),f=e.getHeight()/2;t.showSpinner&&o.setShape({cx:u,cy:f}),a.setShape({x:u-l,y:f-l,width:l*2,height:l*2}),n.setShape({x:0,y:0,width:e.getWidth(),height:e.getHeight()})},r.resize(),r}var UE=function(){function e(t,r,n,i){this._stageTaskMap=je(),this.ecInstance=t,this.api=r,n=this._dataProcessorHandlers=n.slice(),i=this._visualHandlers=i.slice(),this._allHandlers=n.concat(i)}return e.prototype.restoreData=function(t,r){t.restoreData(r),this._stageTaskMap.each(function(n){var i=n.overallTask;i&&i.dirty()})},e.prototype.getPerformArgs=function(t,r){if(t.__pipeline){var n=this._pipelineMap.get(t.__pipeline.id),i=n.context,a=!r&&n.progressiveEnabled&&(!i||i.progressiveRender)&&t.__idxInPipeline>n.blockIndex,o=a?n.step:null,s=i&&i.modDataCount,l=s!=null?Math.ceil(s/o):null;return{step:o,modBy:l,modDataCount:s}}},e.prototype.getPipeline=function(t){return this._pipelineMap.get(t)},e.prototype.updateStreamModes=function(t,r){var n=this._pipelineMap.get(t.uid),i=t.getData(),a=i.count(),o=n.progressiveEnabled&&r.incrementalPrepareRender&&a>=n.threshold,s=t.get("large")&&a>=t.get("largeThreshold"),l=t.get("progressiveChunkMode")==="mod"?a:null;t.pipelineContext=n.context={progressiveRender:o,modDataCount:l,large:s}},e.prototype.restorePipelines=function(t){var r=this,n=r._pipelineMap=je();t.eachSeries(function(i){var a=i.getProgressive(),o=i.uid;n.set(o,{id:o,head:null,tail:null,threshold:i.getProgressiveThreshold(),progressiveEnabled:a&&!(i.preventIncremental&&i.preventIncremental()),blockIndex:-1,step:Math.round(a||700),count:0}),r._pipe(i,i.dataTask)})},e.prototype.prepareStageTasks=function(){var t=this._stageTaskMap,r=this.api.getModel(),n=this.api;R(this._allHandlers,function(i){var a=t.get(i.uid)||t.set(i.uid,{}),o="";Ci(!(i.reset&&i.overallReset),o),i.reset&&this._createSeriesStageTask(i,a,r,n),i.overallReset&&this._createOverallStageTask(i,a,r,n)},this)},e.prototype.prepareView=function(t,r,n,i){var a=t.renderTask,o=a.context;o.model=r,o.ecModel=n,o.api=i,a.__block=!t.incrementalPrepareRender,this._pipe(r,a)},e.prototype.performDataProcessorTasks=function(t,r){this._performStageTasks(this._dataProcessorHandlers,t,r,{block:!0})},e.prototype.performVisualTasks=function(t,r,n){this._performStageTasks(this._visualHandlers,t,r,n)},e.prototype._performStageTasks=function(t,r,n,i){i=i||{};var a=!1,o=this;R(t,function(l,u){if(!(i.visualType&&i.visualType!==l.visualType)){var f=o._stageTaskMap.get(l.uid),c=f.seriesTaskMap,h=f.overallTask;if(h){var d,v=h.agentStubMap;v.each(function(m){s(i,m)&&(m.dirty(),d=!0)}),d&&h.dirty(),o.updatePayload(h,n);var p=o.getPerformArgs(h,i.block);v.each(function(m){m.perform(p)}),h.perform(p)&&(a=!0)}else c&&c.each(function(m,g){s(i,m)&&m.dirty();var y=o.getPerformArgs(m,i.block);y.skip=!l.performRawSeries&&r.isSeriesFiltered(m.context.model),o.updatePayload(m,n),m.perform(y)&&(a=!0)})}});function s(l,u){return l.setDirty&&(!l.dirtyMap||l.dirtyMap.get(u.__pipeline.id))}this.unfinished=a||this.unfinished},e.prototype.performSeriesTasks=function(t){var r;t.eachSeries(function(n){r=n.dataTask.perform()||r}),this.unfinished=r||this.unfinished},e.prototype.plan=function(){this._pipelineMap.each(function(t){var r=t.tail;do{if(r.__block){t.blockIndex=r.__idxInPipeline;break}r=r.getUpstream()}while(r)})},e.prototype.updatePayload=function(t,r){r!=="remain"&&(t.context.payload=r)},e.prototype._createSeriesStageTask=function(t,r,n,i){var a=this,o=r.seriesTaskMap,s=r.seriesTaskMap=je(),l=t.seriesType,u=t.getTargetSeries;t.createOnAllSeries?n.eachRawSeries(f):l?n.eachRawSeriesByType(l,f):u&&u(n,i).each(f);function f(c){var h=c.uid,d=s.set(h,o&&o.get(h)||nu({plan:xK,reset:CK,count:MK}));d.context={model:c,ecModel:n,api:i,useClearVisual:t.isVisual&&!t.isLayout,plan:t.plan,reset:t.reset,scheduler:a},a._pipe(c,d)}},e.prototype._createOverallStageTask=function(t,r,n,i){var a=this,o=r.overallTask=r.overallTask||nu({reset:_K});o.context={ecModel:n,api:i,overallReset:t.overallReset,scheduler:a};var s=o.agentStubMap,l=o.agentStubMap=je(),u=t.seriesType,f=t.getTargetSeries,c=!0,h=!1,d="";Ci(!t.createOnAllSeries,d),u?n.eachRawSeriesByType(u,v):f?f(n,i).each(v):(c=!1,R(n.getSeries(),v));function v(p){var m=p.uid,g=l.set(m,s&&s.get(m)||(h=!0,nu({reset:bK,onDirty:SK})));g.context={model:p,overallProgress:c},g.agent=o,g.__block=c,a._pipe(p,g)}h&&o.dirty()},e.prototype._pipe=function(t,r){var n=t.uid,i=this._pipelineMap.get(n);!i.head&&(i.head=r),i.tail&&i.tail.pipe(r),i.tail=r,r.__idxInPipeline=i.count++,r.__pipeline=i},e.wrapStageHandler=function(t,r){return Ye(t)&&(t={overallReset:t,seriesType:AK(t)}),t.uid=Ah("stageHandler"),r&&(t.visualType=r),t},e}();function _K(e){e.overallReset(e.ecModel,e.api,e.payload)}function bK(e){return e.overallProgress&&wK}function wK(){this.agent.dirty(),this.getDownstream().dirty()}function SK(){this.agent&&this.agent.dirty()}function xK(e){return e.plan?e.plan(e.model,e.ecModel,e.api,e.payload):null}function CK(e){e.useClearVisual&&e.data.clearAllVisual();var t=e.resetDefines=pr(e.reset(e.model,e.ecModel,e.api,e.payload));return t.length>1?Ne(t,function(r,n){return YE(n)}):TK}var TK=YE(0);function YE(e){return function(t,r){var n=r.data,i=r.resetDefines[e];if(i&&i.dataEach)for(var a=t.start;a0&&d===u.length-h.length){var v=u.slice(0,d);v!=="data"&&(r.mainType=v,r[h.toLowerCase()]=l,f=!0)}}s.hasOwnProperty(u)&&(n[u]=l,f=!0),f||(i[u]=l)})}return{cptQuery:r,dataQuery:n,otherQuery:i}},e.prototype.filter=function(t,r){var n=this.eventInfo;if(!n)return!0;var i=n.targetEl,a=n.packedEvent,o=n.model,s=n.view;if(!o||!s)return!0;var l=r.cptQuery,u=r.dataQuery;return f(l,o,"mainType")&&f(l,o,"subType")&&f(l,o,"index","componentIndex")&&f(l,o,"name")&&f(l,o,"id")&&f(u,a,"name")&&f(u,a,"dataIndex")&&f(u,a,"dataType")&&(!s.filterForExposedEvent||s.filterForExposedEvent(t,r.otherQuery,i,a));function f(c,h,d,v){return c[d]==null||h[v||d]===c[d]}},e.prototype.afterTrigger=function(){this.eventInfo=null},e}(),Sm=["symbol","symbolSize","symbolRotate","symbolOffset"],tx=Sm.concat(["symbolKeepAspect"]),DK={createOnAllSeries:!0,performRawSeries:!0,reset:function(e,t){var r=e.getData();if(e.legendIcon&&r.setVisual("legendIcon",e.legendIcon),!e.hasSymbolVisual)return;for(var n={},i={},a=!1,o=0;o=0&&ro(l)?l:.5;var u=e.createRadialGradient(o,s,0,o,s,l);return u}function Cm(e,t,r){for(var n=t.type==="radial"?XK(e,t,r):KK(e,t,r),i=t.colorStops,a=0;a0)?null:e==="dashed"?[4*t,2*t]:e==="dotted"?[t]:Tt(e)?[e]:ye(e)?e:null}function XE(e){var t=e.style,r=t.lineDash&&t.lineWidth>0&&QK(t.lineDash,t.lineWidth),n=t.lineDashOffset;if(r){var i=t.strokeNoScale&&e.getLineScale?e.getLineScale():1;i&&i!==1&&(r=Ne(r,function(a){return a/i}),n/=i)}return[r,n]}var JK=new bo(!0);function Bd(e){var t=e.stroke;return!(t==null||t==="none"||!(e.lineWidth>0))}function rx(e){return typeof e=="string"&&e!=="none"}function Fd(e){var t=e.fill;return t!=null&&t!=="none"}function nx(e,t){if(t.fillOpacity!=null&&t.fillOpacity!==1){var r=e.globalAlpha;e.globalAlpha=t.fillOpacity*t.opacity,e.fill(),e.globalAlpha=r}else e.fill()}function ix(e,t){if(t.strokeOpacity!=null&&t.strokeOpacity!==1){var r=e.globalAlpha;e.globalAlpha=t.strokeOpacity*t.opacity,e.stroke(),e.globalAlpha=r}else e.stroke()}function Tm(e,t,r){var n=rP(t.image,t.__image,r);if(xh(n)){var i=e.createPattern(n,t.repeat||"repeat");if(typeof DOMMatrix=="function"&&i&&i.setTransform){var a=new DOMMatrix;a.translateSelf(t.x||0,t.y||0),a.rotateSelf(0,0,(t.rotation||0)*pU),a.scaleSelf(t.scaleX||1,t.scaleY||1),i.setTransform(a)}return i}}function eX(e,t,r,n){var i,a=Bd(r),o=Fd(r),s=r.strokePercent,l=s<1,u=!t.path;(!t.silent||l)&&u&&t.createPathProxy();var f=t.path||JK,c=t.__dirty;if(!n){var h=r.fill,d=r.stroke,v=o&&!!h.colorStops,p=a&&!!d.colorStops,m=o&&!!h.image,g=a&&!!d.image,y=void 0,_=void 0,b=void 0,x=void 0,w=void 0;(v||p)&&(w=t.getBoundingRect()),v&&(y=c?Cm(e,h,w):t.__canvasFillGradient,t.__canvasFillGradient=y),p&&(_=c?Cm(e,d,w):t.__canvasStrokeGradient,t.__canvasStrokeGradient=_),m&&(b=c||!t.__canvasFillPattern?Tm(e,h,t):t.__canvasFillPattern,t.__canvasFillPattern=b),g&&(x=c||!t.__canvasStrokePattern?Tm(e,d,t):t.__canvasStrokePattern,t.__canvasStrokePattern=b),v?e.fillStyle=y:m&&(b?e.fillStyle=b:o=!1),p?e.strokeStyle=_:g&&(x?e.strokeStyle=x:a=!1)}var S=t.getGlobalScale();f.setScale(S[0],S[1],t.segmentIgnoreThreshold);var C,M;e.setLineDash&&r.lineDash&&(i=XE(t),C=i[0],M=i[1]);var A=!0;(u||c&Qo)&&(f.setDPR(e.dpr),l?f.setContext(null):(f.setContext(e),A=!1),f.reset(),t.buildPath(f,t.shape,n),f.toStatic(),t.pathUpdated()),A&&f.rebuildPath(e,l?s:1),C&&(e.setLineDash(C),e.lineDashOffset=M),n||(r.strokeFirst?(a&&ix(e,r),o&&nx(e,r)):(o&&nx(e,r),a&&ix(e,r))),C&&e.setLineDash([])}function tX(e,t,r){var n=t.__image=rP(r.image,t.__image,t,t.onload);if(!(!n||!xh(n))){var i=r.x||0,a=r.y||0,o=t.getWidth(),s=t.getHeight(),l=n.width/n.height;if(o==null&&s!=null?o=s*l:s==null&&o!=null?s=o/l:o==null&&s==null&&(o=n.width,s=n.height),r.sWidth&&r.sHeight){var u=r.sx||0,f=r.sy||0;e.drawImage(n,u,f,r.sWidth,r.sHeight,i,a,o,s)}else if(r.sx&&r.sy){var u=r.sx,f=r.sy,c=o-u,h=s-f;e.drawImage(n,u,f,c,h,i,a,o,s)}else e.drawImage(n,i,a,o,s)}}function rX(e,t,r){var n,i=r.text;if(i!=null&&(i+=""),i){e.font=r.font||_o,e.textAlign=r.textAlign,e.textBaseline=r.textBaseline;var a=void 0,o=void 0;e.setLineDash&&r.lineDash&&(n=XE(t),a=n[0],o=n[1]),a&&(e.setLineDash(a),e.lineDashOffset=o),r.strokeFirst?(Bd(r)&&e.strokeText(i,r.x,r.y),Fd(r)&&e.fillText(i,r.x,r.y)):(Fd(r)&&e.fillText(i,r.x,r.y),Bd(r)&&e.strokeText(i,r.x,r.y)),a&&e.setLineDash([])}}var ax=["shadowBlur","shadowOffsetX","shadowOffsetY"],ox=[["lineCap","butt"],["lineJoin","miter"],["miterLimit",10]];function ZE(e,t,r,n,i){var a=!1;if(!n&&(r=r||{},t===r))return!1;if(n||t.opacity!==r.opacity){Tr(e,i),a=!0;var o=Math.max(Math.min(t.opacity,1),0);e.globalAlpha=isNaN(o)?fo.opacity:o}(n||t.blend!==r.blend)&&(a||(Tr(e,i),a=!0),e.globalCompositeOperation=t.blend||fo.blend);for(var s=0;s0&&r.unfinished);r.unfinished||this._zr.flush()}}},t.prototype.getDom=function(){return this._dom},t.prototype.getId=function(){return this.id},t.prototype.getZr=function(){return this._zr},t.prototype.isSSR=function(){return this._ssr},t.prototype.setOption=function(r,n,i){if(!this[nr]){if(this._disposed){this.id;return}var a,o,s;if(Re(n)&&(i=n.lazyUpdate,a=n.silent,o=n.replaceMerge,s=n.transition,n=n.notMerge),this[nr]=!0,!this._model||n){var l=new vq(this._api),u=this._theme,f=this._model=new F0;f.scheduler=this._scheduler,f.ssr=this._ssr,f.init(null,null,null,u,this._locale,l)}this._model.setOption(r,{replaceMerge:o},Pm);var c={seriesTransition:s,optionChanged:!0};if(i)this[br]={silent:a,updateParams:c},this[nr]=!1,this.getZr().wakeUp();else{try{jo(this),$i.update.call(this,null,c)}catch(h){throw this[br]=null,this[nr]=!1,h}this._ssr||this._zr.flush(),this[br]=null,this[nr]=!1,hl.call(this,a),vl.call(this,a)}}},t.prototype.setTheme=function(){},t.prototype.getModel=function(){return this._model},t.prototype.getOption=function(){return this._model&&this._model.getOption()},t.prototype.getWidth=function(){return this._zr.getWidth()},t.prototype.getHeight=function(){return this._zr.getHeight()},t.prototype.getDevicePixelRatio=function(){return this._zr.painter.dpr||He.hasGlobalWindow&&window.devicePixelRatio||1},t.prototype.getRenderedCanvas=function(r){return this.renderToCanvas(r)},t.prototype.renderToCanvas=function(r){r=r||{};var n=this._zr.painter;return n.getRenderedCanvas({backgroundColor:r.backgroundColor||this._model.get("backgroundColor"),pixelRatio:r.pixelRatio||this.getDevicePixelRatio()})},t.prototype.renderToSVGString=function(r){r=r||{};var n=this._zr.painter;return n.renderToString({useViewBox:r.useViewBox})},t.prototype.getSvgDataURL=function(){if(He.svgSupported){var r=this._zr,n=r.storage.getDisplayList();return R(n,function(i){i.stopAnimation(null,!0)}),r.painter.toDataURL()}},t.prototype.getDataURL=function(r){if(this._disposed){this.id;return}r=r||{};var n=r.excludeComponents,i=this._model,a=[],o=this;R(n,function(l){i.eachComponent({mainType:l},function(u){var f=o._componentsMap[u.__viewId];f.group.ignore||(a.push(f),f.group.ignore=!0)})});var s=this._zr.painter.getType()==="svg"?this.getSvgDataURL():this.renderToCanvas(r).toDataURL("image/"+(r&&r.type||"png"));return R(a,function(l){l.group.ignore=!1}),s},t.prototype.getConnectedDataURL=function(r){if(this._disposed){this.id;return}var n=r.type==="svg",i=this.group,a=Math.min,o=Math.max,s=1/0;if(Sx[i]){var l=s,u=s,f=-s,c=-s,h=[],d=r&&r.pixelRatio||this.getDevicePixelRatio();R(au,function(_,b){if(_.group===i){var x=n?_.getZr().painter.getSvgDom().innerHTML:_.renderToCanvas(tt(r)),w=_.getDom().getBoundingClientRect();l=a(w.left,l),u=a(w.top,u),f=o(w.right,f),c=o(w.bottom,c),h.push({dom:x,left:w.left,top:w.top})}}),l*=d,u*=d,f*=d,c*=d;var v=f-l,p=c-u,m=Gs.createCanvas(),g=Tw(m,{renderer:n?"svg":"canvas"});if(g.resize({width:v,height:p}),n){var y="";return R(h,function(_){var b=_.left-l,x=_.top-u;y+=''+_.dom+""}),g.painter.getSvgRoot().innerHTML=y,r.connectedBackgroundColor&&g.painter.setBackgroundColor(r.connectedBackgroundColor),g.refreshImmediately(),g.painter.toDataURL()}else return r.connectedBackgroundColor&&g.add(new Gt({shape:{x:0,y:0,width:v,height:p},style:{fill:r.connectedBackgroundColor}})),R(h,function(_){var b=new Ys({style:{x:_.left*d-l,y:_.top*d-u,image:_.dom}});g.add(b)}),g.refreshImmediately(),m.toDataURL("image/"+(r&&r.type||"png"))}else return this.getDataURL(r)},t.prototype.convertToPixel=function(r,n){return vp(this,"convertToPixel",r,n)},t.prototype.convertFromPixel=function(r,n){return vp(this,"convertFromPixel",r,n)},t.prototype.containPixel=function(r,n){if(this._disposed){this.id;return}var i=this._model,a,o=Bv(i,r);return R(o,function(s,l){l.indexOf("Models")>=0&&R(s,function(u){var f=u.coordinateSystem;if(f&&f.containPoint)a=a||!!f.containPoint(n);else if(l==="seriesModels"){var c=this._chartsMap[u.__viewId];c&&c.containPoint&&(a=a||c.containPoint(n,u))}},this)},this),!!a},t.prototype.getVisual=function(r,n){var i=this._model,a=Bv(i,r,{defaultMainType:"series"}),o=a.seriesModel,s=o.getData(),l=a.hasOwnProperty("dataIndexInside")?a.dataIndexInside:a.hasOwnProperty("dataIndex")?s.indexOfRawIndex(a.dataIndex):null;return l!=null?OK(s,l,n):RK(s,n)},t.prototype.getViewOfComponentModel=function(r){return this._componentsMap[r.__viewId]},t.prototype.getViewOfSeriesModel=function(r){return this._chartsMap[r.__viewId]},t.prototype._initEvents=function(){var r=this;R(PX,function(n){var i=function(a){var o=r.getModel(),s=a.target,l,u=n==="globalout";if(u?l={}:s&&Ll(s,function(v){var p=dt(v);if(p&&p.dataIndex!=null){var m=p.dataModel||o.getSeriesByIndex(p.seriesIndex);return l=m&&m.getDataParams(p.dataIndex,p.dataType,s)||{},!0}else if(p.eventData)return l=ue({},p.eventData),!0},!0),l){var f=l.componentType,c=l.componentIndex;(f==="markLine"||f==="markPoint"||f==="markArea")&&(f="series",c=l.seriesIndex);var h=f&&c!=null&&o.getComponent(f,c),d=h&&r[h.mainType==="series"?"_chartsMap":"_componentsMap"][h.__viewId];l.event=a,l.type=n,r._$eventProcessor.eventInfo={targetEl:s,packedEvent:l,model:h,view:d},r.trigger(n,l)}};i.zrEventfulCallAtLast=!0,r._zr.on(n,i,r)}),R(iu,function(n,i){r._messageCenter.on(i,function(a){this.trigger(i,a)},r)}),R(["selectchanged"],function(n){r._messageCenter.on(n,function(i){this.trigger(n,i)},r)}),NK(this._messageCenter,this,this._api)},t.prototype.isDisposed=function(){return this._disposed},t.prototype.clear=function(){if(this._disposed){this.id;return}this.setOption({series:[]},!0)},t.prototype.dispose=function(){if(this._disposed){this.id;return}this._disposed=!0;var r=this.getDom();r&&J2(this.getDom(),X0,"");var n=this,i=n._api,a=n._model;R(n._componentsViews,function(o){o.dispose(a,i)}),R(n._chartsViews,function(o){o.dispose(a,i)}),n._zr.dispose(),n._dom=n._model=n._chartsMap=n._componentsMap=n._chartsViews=n._componentsViews=n._scheduler=n._api=n._zr=n._throttledZrFlush=n._theme=n._coordSysMgr=n._messageCenter=null,delete au[n.id]},t.prototype.resize=function(r){if(!this[nr]){if(this._disposed){this.id;return}this._zr.resize(r);var n=this._model;if(this._loadingFX&&this._loadingFX.resize(),!!n){var i=n.resetOption("media"),a=r&&r.silent;this[br]&&(a==null&&(a=this[br].silent),i=!0,this[br]=null),this[nr]=!0;try{i&&jo(this),$i.update.call(this,{type:"resize",animation:ue({duration:0},r&&r.animation)})}catch(o){throw this[nr]=!1,o}this[nr]=!1,hl.call(this,a),vl.call(this,a)}}},t.prototype.showLoading=function(r,n){if(this._disposed){this.id;return}if(Re(r)&&(n=r,r=""),r=r||"default",this.hideLoading(),!!Em[r]){var i=Em[r](this._api,n),a=this._zr;this._loadingFX=i,a.add(i)}},t.prototype.hideLoading=function(){if(this._disposed){this.id;return}this._loadingFX&&this._zr.remove(this._loadingFX),this._loadingFX=null},t.prototype.makeActionFromEvent=function(r){var n=ue({},r);return n.type=iu[r.type],n},t.prototype.dispatchAction=function(r,n){if(this._disposed){this.id;return}if(Re(n)||(n={silent:!!n}),!!$d[r.type]&&this._model){if(this[nr]){this._pendingActions.push(r);return}var i=n.silent;gp.call(this,r,i);var a=n.flush;a?this._zr.flush():a!==!1&&He.browser.weChat&&this._throttledZrFlush(),hl.call(this,i),vl.call(this,i)}},t.prototype.updateLabelLayout=function(){_n.trigger("series:layoutlabels",this._model,this._api,{updatedSeries:[]})},t.prototype.appendData=function(r){if(this._disposed){this.id;return}var n=r.seriesIndex,i=this.getModel(),a=i.getSeriesByIndex(n);a.appendData(r),this._scheduler.unfinished=!0,this.getZr().wakeUp()},t.internalField=function(){jo=function(c){var h=c._scheduler;h.restorePipelines(c._model),h.prepareStageTasks(),hp(c,!0),hp(c,!1),h.plan()},hp=function(c,h){for(var d=c._model,v=c._scheduler,p=h?c._componentsViews:c._chartsViews,m=h?c._componentsMap:c._chartsMap,g=c._zr,y=c._api,_=0;_h.get("hoverLayerThreshold")&&!He.node&&!He.worker&&h.eachSeries(function(m){if(!m.preventUsingHoverLayer){var g=c._chartsMap[m.__viewId];g.__alive&&g.eachRendered(function(y){y.states.emphasis&&(y.states.emphasis.hoverLayer=!0)})}})}function o(c,h){var d=c.get("blendMode")||null;h.eachRendered(function(v){v.isGroup||(v.style.blend=d)})}function s(c,h){if(!c.preventAutoZ){var d=c.get("z")||0,v=c.get("zlevel")||0;h.eachRendered(function(p){return l(p,d,v,-1/0),!0})}}function l(c,h,d,v){var p=c.getTextContent(),m=c.getTextGuideLine(),g=c.isGroup;if(g)for(var y=c.childrenRef(),_=0;_0?{duration:p,delay:d.get("delay"),easing:d.get("easing")}:null;h.eachRendered(function(g){if(g.states&&g.states.emphasis){if(ds(g))return;if(g instanceof vt&&bY(g),g.__dirty){var y=g.prevStates;y&&g.useStates(y)}if(v){g.stateTransition=m;var _=g.getTextContent(),b=g.getTextGuideLine();_&&(_.stateTransition=m),b&&(b.stateTransition=m)}g.__dirty&&i(g)}})}_x=function(c){return new(function(h){ge(d,h);function d(){return h!==null&&h.apply(this,arguments)||this}return d.prototype.getCoordinateSystems=function(){return c._coordSysMgr.getCoordinateSystems()},d.prototype.getComponentByElement=function(v){for(;v;){var p=v.__ecComponentInfo;if(p!=null)return c._model.getComponent(p.mainType,p.index);v=v.parent}},d.prototype.enterEmphasis=function(v,p){am(v,p),qr(c)},d.prototype.leaveEmphasis=function(v,p){om(v,p),qr(c)},d.prototype.enterBlur=function(v){fY(v),qr(c)},d.prototype.leaveBlur=function(v){_P(v),qr(c)},d.prototype.enterSelect=function(v){bP(v),qr(c)},d.prototype.leaveSelect=function(v){wP(v),qr(c)},d.prototype.getModel=function(){return c.getModel()},d.prototype.getViewOfComponentModel=function(v){return c.getViewOfComponentModel(v)},d.prototype.getViewOfSeriesModel=function(v){return c.getViewOfSeriesModel(v)},d}(SE))(c)},dL=function(c){function h(d,v){for(var p=0;p=0)){xx.push(r);var a=UE.wrapStageHandler(r,i);a.__prio=t,a.__raw=r,e.push(a)}}function yL(e,t){Em[e]=t}function kX(e,t,r){var n=hX("registerMap");n&&n(e,t,r)}var NX=Hq;Do(q0,pK);Do(Fh,gK);Do(Fh,mK);Do(q0,DK);Do(Fh,IK);Do(oL,fX);gL(CE);mL(gX,Sq);yL("default",yK);Ks({type:co,event:co,update:co},Er);Ks({type:Uc,event:Uc,update:Uc},Er);Ks({type:Ql,event:Ql,update:Ql},Er);Ks({type:Yc,event:Yc,update:Yc},Er);Ks({type:Jl,event:Jl,update:Jl},Er);pL("light",PK);pL("dark",EK);function pl(e){return e==null?0:e.length||1}function Cx(e){return e}var BX=function(){function e(t,r,n,i,a,o){this._old=t,this._new=r,this._oldKeyGetter=n||Cx,this._newKeyGetter=i||Cx,this.context=a,this._diffModeMultiple=o==="multiple"}return e.prototype.add=function(t){return this._add=t,this},e.prototype.update=function(t){return this._update=t,this},e.prototype.updateManyToOne=function(t){return this._updateManyToOne=t,this},e.prototype.updateOneToMany=function(t){return this._updateOneToMany=t,this},e.prototype.updateManyToMany=function(t){return this._updateManyToMany=t,this},e.prototype.remove=function(t){return this._remove=t,this},e.prototype.execute=function(){this[this._diffModeMultiple?"_executeMultiple":"_executeOneToOne"]()},e.prototype._executeOneToOne=function(){var t=this._old,r=this._new,n={},i=new Array(t.length),a=new Array(r.length);this._initIndexMap(t,null,i,"_oldKeyGetter"),this._initIndexMap(r,n,a,"_newKeyGetter");for(var o=0;o1){var f=l.shift();l.length===1&&(n[s]=l[0]),this._update&&this._update(f,o)}else u===1?(n[s]=null,this._update&&this._update(l,o)):this._remove&&this._remove(o)}this._performRestAdd(a,n)},e.prototype._executeMultiple=function(){var t=this._old,r=this._new,n={},i={},a=[],o=[];this._initIndexMap(t,n,a,"_oldKeyGetter"),this._initIndexMap(r,i,o,"_newKeyGetter");for(var s=0;s1&&h===1)this._updateManyToOne&&this._updateManyToOne(f,u),i[l]=null;else if(c===1&&h>1)this._updateOneToMany&&this._updateOneToMany(f,u),i[l]=null;else if(c===1&&h===1)this._update&&this._update(f,u),i[l]=null;else if(c>1&&h>1)this._updateManyToMany&&this._updateManyToMany(f,u),i[l]=null;else if(c>1)for(var d=0;d1)for(var s=0;s30}var gl=Re,Hi=Ne,UX=typeof Int32Array>"u"?Array:Int32Array,YX="e\0\0",Tx=-1,jX=["hasItemOption","_nameList","_idList","_invertedIndicesMap","_dimSummary","userOutput","_rawData","_dimValueGetter","_nameDimIdx","_idDimIdx","_nameRepeatCount"],qX=["_approximateExtent"],Mx,lc,ml,yl,_p,uc,bp,CL=function(){function e(t,r){this.type="list",this._dimOmitted=!1,this._nameList=[],this._idList=[],this._visual={},this._layout={},this._itemVisuals=[],this._itemLayouts=[],this._graphicEls=[],this._approximateExtent={},this._calculationInfo={},this.hasItemOption=!1,this.TRANSFERABLE_METHODS=["cloneShallow","downSample","lttbDownSample","map"],this.CHANGABLE_METHODS=["filterSelf","selectRange"],this.DOWNSAMPLE_METHODS=["downSample","lttbDownSample"];var n,i=!1;bL(t)?(n=t.dimensions,this._dimOmitted=t.isDimensionOmitted(),this._schema=t):(i=!0,n=t),n=n||["x","y"];for(var a={},o=[],s={},l=!1,u={},f=0;f=r)){var n=this._store,i=n.getProvider();this._updateOrdinalMeta();var a=this._nameList,o=this._idList,s=i.getSource().sourceFormat,l=s===hn;if(l&&!i.pure)for(var u=[],f=t;f0},e.prototype.ensureUniqueItemVisual=function(t,r){var n=this._itemVisuals,i=n[t];i||(i=n[t]={});var a=i[r];return a==null&&(a=this.getVisual(r),ye(a)?a=a.slice():gl(a)&&(a=ue({},a)),i[r]=a),a},e.prototype.setItemVisual=function(t,r,n){var i=this._itemVisuals[t]||{};this._itemVisuals[t]=i,gl(r)?ue(i,r):i[r]=n},e.prototype.clearAllVisual=function(){this._visual={},this._itemVisuals=[]},e.prototype.setLayout=function(t,r){gl(t)?ue(this._layout,t):this._layout[t]=r},e.prototype.getLayout=function(t){return this._layout[t]},e.prototype.getItemLayout=function(t){return this._itemLayouts[t]},e.prototype.setItemLayout=function(t,r,n){this._itemLayouts[t]=n?ue(this._itemLayouts[t]||{},r):r},e.prototype.clearItemLayouts=function(){this._itemLayouts.length=0},e.prototype.setItemGraphicEl=function(t,r){var n=this.hostModel&&this.hostModel.seriesIndex;eY(n,this.dataType,t,r),this._graphicEls[t]=r},e.prototype.getItemGraphicEl=function(t){return this._graphicEls[t]},e.prototype.eachItemGraphicEl=function(t,r){R(this._graphicEls,function(n,i){n&&t&&t.call(r,n,i)})},e.prototype.cloneShallow=function(t){return t||(t=new e(this._schema?this._schema:Hi(this.dimensions,this._getDimInfo,this),this.hostModel)),_p(t,this),t._store=this._store,t},e.prototype.wrapMethod=function(t,r){var n=this[t];Ye(n)&&(this.__wrappedMethods=this.__wrappedMethods||[],this.__wrappedMethods.push(t),this[t]=function(){var i=n.apply(this,arguments);return r.apply(this,[i].concat(n0(arguments)))})},e.internalField=function(){Mx=function(t){var r=t._invertedIndicesMap;R(r,function(n,i){var a=t._dimInfos[i],o=a.ordinalMeta,s=t._store;if(o){n=r[i]=new UX(o.categories.length);for(var l=0;l1&&(l+="__ec__"+f),i[r]=l}}}(),e}();function TL(e,t){H0(e)||(e=z0(e)),t=t||{};var r=t.coordDimensions||[],n=t.dimensionsDefine||e.dimensionsDefine||[],i=je(),a=[],o=XX(e,r,n,t.dimensionsCount),s=t.canOmitUnusedDimensions&&xL(o),l=n===e.dimensionsDefine,u=l?SL(e):wL(n),f=t.encodeDefine;!f&&t.encodeDefaulter&&(f=t.encodeDefaulter(e,o));for(var c=je(f),h=new IE(o),d=0;d0&&(n.name=i+(a-1)),a++,t.set(i,a)}}function XX(e,t,r,n){var i=Math.max(e.dimensionsDetectedCount||1,t.length,r.length,n||0);return R(t,function(a){var o;Re(a)&&(o=a.dimsDef)&&(i=Math.max(i,o.length))}),i}function ZX(e,t,r){if(r||t.hasKey(e)){for(var n=0;t.hasKey(e+n);)n++;e+=n}return t.set(e,!0),e}var QX=function(){function e(t){this.coordSysDims=[],this.axisMap=je(),this.categoryAxisMap=je(),this.coordSysName=t}return e}();function JX(e){var t=e.get("coordinateSystem"),r=new QX(t),n=eZ[t];if(n)return n(e,r,r.axisMap,r.categoryAxisMap),r}var eZ={cartesian2d:function(e,t,r,n){var i=e.getReferringComponents("xAxis",Tn).models[0],a=e.getReferringComponents("yAxis",Tn).models[0];t.coordSysDims=["x","y"],r.set("x",i),r.set("y",a),qo(i)&&(n.set("x",i),t.firstCategoryDimIndex=0),qo(a)&&(n.set("y",a),t.firstCategoryDimIndex==null&&(t.firstCategoryDimIndex=1))},singleAxis:function(e,t,r,n){var i=e.getReferringComponents("singleAxis",Tn).models[0];t.coordSysDims=["single"],r.set("single",i),qo(i)&&(n.set("single",i),t.firstCategoryDimIndex=0)},polar:function(e,t,r,n){var i=e.getReferringComponents("polar",Tn).models[0],a=i.findAxisModel("radiusAxis"),o=i.findAxisModel("angleAxis");t.coordSysDims=["radius","angle"],r.set("radius",a),r.set("angle",o),qo(a)&&(n.set("radius",a),t.firstCategoryDimIndex=0),qo(o)&&(n.set("angle",o),t.firstCategoryDimIndex==null&&(t.firstCategoryDimIndex=1))},geo:function(e,t,r,n){t.coordSysDims=["lng","lat"]},parallel:function(e,t,r,n){var i=e.ecModel,a=i.getComponent("parallel",e.get("parallelIndex")),o=t.coordSysDims=a.dimensions.slice();R(a.parallelAxisIndex,function(s,l){var u=i.getComponent("parallelAxis",s),f=o[l];r.set(f,u),qo(u)&&(n.set(f,u),t.firstCategoryDimIndex==null&&(t.firstCategoryDimIndex=l))})}};function qo(e){return e.get("type")==="category"}function tZ(e,t,r){r=r||{};var n=r.byIndex,i=r.stackedCoordDimension,a,o,s;rZ(t)?a=t:(o=t.schema,a=o.dimensions,s=t.store);var l=!!(e&&e.get("stack")),u,f,c,h;if(R(a,function(y,_){Ee(y)&&(a[_]=y={name:y}),l&&!y.isExtraCoord&&(!n&&!u&&y.ordinalMeta&&(u=y),!f&&y.type!=="ordinal"&&y.type!=="time"&&(!i||i===y.coordDim)&&(f=y))}),f&&!n&&!u&&(n=!0),f){c="__\0ecstackresult_"+e.id,h="__\0ecstackedover_"+e.id,u&&(u.createInvertedIndices=!0);var d=f.coordDim,v=f.type,p=0;R(a,function(y){y.coordDim===d&&p++});var m={name:c,coordDim:d,coordDimIndex:p,type:v,isExtraCoord:!0,isCalculationCoord:!0,storeDimIndex:a.length},g={name:h,coordDim:h,coordDimIndex:p+1,type:v,isExtraCoord:!0,isCalculationCoord:!0,storeDimIndex:a.length+1};o?(s&&(m.storeDimIndex=s.ensureCalculationDimension(h,v),g.storeDimIndex=s.ensureCalculationDimension(c,v)),o.appendCalculationDimension(m),o.appendCalculationDimension(g)):(a.push(m),a.push(g))}return{stackedDimension:f&&f.name,stackedByDimension:u&&u.name,isStackedByIndex:n,stackedOverDimension:h,stackResultDimension:c}}function rZ(e){return!bL(e.schema)}function ML(e,t){return!!t&&t===e.getCalculationInfo("stackedDimension")}function nZ(e,t){return ML(e,t)?e.getCalculationInfo("stackResultDimension"):t}function iZ(e,t){var r=e.get("coordinateSystem"),n=$0.get(r),i;return t&&t.coordSysDims&&(i=Ne(t.coordSysDims,function(a){var o={name:a},s=t.axisMap.get(a);if(s){var l=s.get("type");o.type=zX(l)}return o})),i||(i=n&&(n.getDimensionsInfo?n.getDimensionsInfo():n.dimensions.slice())||["x","y"]),i}function aZ(e,t,r){var n,i;return r&&R(e,function(a,o){var s=a.coordDim,l=r.categoryAxisMap.get(s);l&&(n==null&&(n=o),a.ordinalMeta=l.getOrdinalMeta(),t&&(a.createInvertedIndices=!0)),a.otherDims.itemName!=null&&(i=!0)}),!i&&n!=null&&(e[n].otherDims.itemName=0),n}function AL(e,t,r){r=r||{};var n=t.getSourceManager(),i,a=!1;e?(a=!0,i=z0(e)):(i=n.getSource(),a=i.sourceFormat===hn);var o=JX(t),s=iZ(t,o),l=r.useEncodeDefaulter,u=Ye(l)?l:l?Rt(Kj,s,t):null,f={coordDimensions:s,generateCoord:r.generateCoord,encodeDefine:t.getEncode(),encodeDefaulter:u,canOmitUnusedDimensions:!a},c=TL(i,f),h=aZ(c.dimensions,r.createInvertedIndices,o),d=a?null:n.getSharedDataStore(c),v=tZ(t,{schema:c,store:d}),p=new CL(c,t);p.setCalculationInfo(v);var m=h!=null&&oZ(i)?function(g,y,_,b){return b===h?_:this.defaultDimValueGetter(g,y,_,b)}:null;return p.hasItemOption=!1,p.initData(a?i:d,null,m),p}function oZ(e){if(e.sourceFormat===hn){var t=sZ(e.data||[]);return!ye(of(t))}}function sZ(e){for(var t=0;tr[1]&&(r[1]=t[1])},e.prototype.unionExtentFromData=function(t,r){this.unionExtent(t.getApproximateExtent(r))},e.prototype.getExtent=function(){return this._extent.slice()},e.prototype.setExtent=function(t,r){var n=this._extent;isNaN(t)||(n[0]=t),isNaN(r)||(n[1]=r)},e.prototype.isInExtentRange=function(t){return this._extent[0]<=t&&this._extent[1]>=t},e.prototype.isBlank=function(){return this._isBlank},e.prototype.setBlank=function(t){this._isBlank=t},e}();Sh(oi);var lZ=0,Lm=function(){function e(t){this.categories=t.categories||[],this._needCollect=t.needCollect,this._deduplication=t.deduplication,this.uid=++lZ}return e.createByAxisModel=function(t){var r=t.option,n=r.data,i=n&&Ne(n,uZ);return new e({categories:i,needCollect:!i,deduplication:r.dedplication!==!1})},e.prototype.getOrdinal=function(t){return this._getOrCreateMap().get(t)},e.prototype.parseAndCollect=function(t){var r,n=this._needCollect;if(!Ee(t)&&!n)return t;if(n&&!this._deduplication)return r=this.categories.length,this.categories[r]=t,r;var i=this._getOrCreateMap();return r=i.get(t),r==null&&(n?(r=this.categories.length,this.categories[r]=t,i.set(t,r)):r=NaN),r},e.prototype._getOrCreateMap=function(){return this._map||(this._map=je(this.categories))},e}();function uZ(e){return Re(e)&&e.value!=null?e.value:e+""}function Dm(e){return e.type==="interval"||e.type==="log"}function fZ(e,t,r,n){var i={},a=e[1]-e[0],o=i.interval=q2(a/t,!0);r!=null&&on&&(o=i.interval=n);var s=i.intervalPrecision=PL(o),l=i.niceTickExtent=[$t(Math.ceil(e[0]/o)*o,s),$t(Math.floor(e[1]/o)*o,s)];return cZ(l,e),i}function wp(e){var t=Math.pow(10,d0(e)),r=e/t;return r?r===2?r=3:r===3?r=5:r*=2:r=1,$t(r*t)}function PL(e){return vi(e)+2}function Ax(e,t,r){e[t]=Math.max(Math.min(e[t],r[1]),r[0])}function cZ(e,t){!isFinite(e[0])&&(e[0]=t[0]),!isFinite(e[1])&&(e[1]=t[1]),Ax(e,0,t),Ax(e,1,t),e[0]>e[1]&&(e[0]=e[1])}function $h(e,t){return e>=t[0]&&e<=t[1]}function Hh(e,t){return t[1]===t[0]?.5:(e-t[0])/(t[1]-t[0])}function zh(e,t){return e*(t[1]-t[0])+t[0]}var EL=function(e){ge(t,e);function t(r){var n=e.call(this,r)||this;n.type="ordinal";var i=n.getSetting("ordinalMeta");return i||(i=new Lm({})),ye(i)&&(i=new Lm({categories:Ne(i,function(a){return Re(a)?a.value:a})})),n._ordinalMeta=i,n._extent=n.getSetting("extent")||[0,i.categories.length-1],n}return t.prototype.parse=function(r){return r==null?NaN:Ee(r)?this._ordinalMeta.getOrdinal(r):Math.round(r)},t.prototype.contain=function(r){return r=this.parse(r),$h(r,this._extent)&&this._ordinalMeta.categories[r]!=null},t.prototype.normalize=function(r){return r=this._getTickNumber(this.parse(r)),Hh(r,this._extent)},t.prototype.scale=function(r){return r=Math.round(zh(r,this._extent)),this.getRawOrdinalNumber(r)},t.prototype.getTicks=function(){for(var r=[],n=this._extent,i=n[0];i<=n[1];)r.push({value:i}),i++;return r},t.prototype.getMinorTicks=function(r){},t.prototype.setSortInfo=function(r){if(r==null){this._ordinalNumbersByTick=this._ticksByOrdinalNumber=null;return}for(var n=r.ordinalNumbers,i=this._ordinalNumbersByTick=[],a=this._ticksByOrdinalNumber=[],o=0,s=this._ordinalMeta.categories.length,l=Math.min(s,n.length);o=0&&r=0&&r=r},t.prototype.getOrdinalMeta=function(){return this._ordinalMeta},t.prototype.calcNiceTicks=function(){},t.prototype.calcNiceExtent=function(){},t.type="ordinal",t}(oi);oi.registerClass(EL);const LL=EL;var za=$t,DL=function(e){ge(t,e);function t(){var r=e!==null&&e.apply(this,arguments)||this;return r.type="interval",r._interval=0,r._intervalPrecision=2,r}return t.prototype.parse=function(r){return r},t.prototype.contain=function(r){return $h(r,this._extent)},t.prototype.normalize=function(r){return Hh(r,this._extent)},t.prototype.scale=function(r){return zh(r,this._extent)},t.prototype.setExtent=function(r,n){var i=this._extent;isNaN(r)||(i[0]=parseFloat(r)),isNaN(n)||(i[1]=parseFloat(n))},t.prototype.unionExtent=function(r){var n=this._extent;r[0]n[1]&&(n[1]=r[1]),this.setExtent(n[0],n[1])},t.prototype.getInterval=function(){return this._interval},t.prototype.setInterval=function(r){this._interval=r,this._niceExtent=this._extent.slice(),this._intervalPrecision=PL(r)},t.prototype.getTicks=function(r){var n=this._interval,i=this._extent,a=this._niceExtent,o=this._intervalPrecision,s=[];if(!n)return s;var l=1e4;i[0]l)return[];var f=s.length?s[s.length-1].value:a[1];return i[1]>f&&(r?s.push({value:za(f+n,o)}):s.push({value:i[1]})),s},t.prototype.getMinorTicks=function(r){for(var n=this.getTicks(!0),i=[],a=this.getExtent(),o=1;oa[0]&&d0&&(a=a===null?s:Math.min(a,s))}r[n]=a}}return r}function RL(e){var t=vZ(e),r=[];return R(e,function(n){var i=n.coordinateSystem,a=i.getBaseAxis(),o=a.getExtent(),s;if(a.type==="category")s=a.getBandWidth();else if(a.type==="value"||a.type==="time"){var l=a.dim+"_"+a.index,u=t[l],f=Math.abs(o[1]-o[0]),c=a.scale.getExtent(),h=Math.abs(c[1]-c[0]);s=u?f/h*u:f}else{var d=n.getData();s=Math.abs(o[1]-o[0])/d.count()}var v=yt(n.get("barWidth"),s),p=yt(n.get("barMaxWidth"),s),m=yt(n.get("barMinWidth")||(NL(n)?.5:1),s),g=n.get("barGap"),y=n.get("barCategoryGap");r.push({bandWidth:s,barWidth:v,barMaxWidth:p,barMinWidth:m,barGap:g,barCategoryGap:y,axisKey:t_(a),stackId:e_(n)})}),pZ(r)}function pZ(e){var t={};R(e,function(n,i){var a=n.axisKey,o=n.bandWidth,s=t[a]||{bandWidth:o,remainedWidth:o,autoWidthCount:0,categoryGap:null,gap:"20%",stacks:{}},l=s.stacks;t[a]=s;var u=n.stackId;l[u]||s.autoWidthCount++,l[u]=l[u]||{width:0,maxWidth:0};var f=n.barWidth;f&&!l[u].width&&(l[u].width=f,f=Math.min(s.remainedWidth,f),s.remainedWidth-=f);var c=n.barMaxWidth;c&&(l[u].maxWidth=c);var h=n.barMinWidth;h&&(l[u].minWidth=h);var d=n.barGap;d!=null&&(s.gap=d);var v=n.barCategoryGap;v!=null&&(s.categoryGap=v)});var r={};return R(t,function(n,i){r[i]={};var a=n.stacks,o=n.bandWidth,s=n.categoryGap;if(s==null){var l=Ct(a).length;s=Math.max(35-l*4,15)+"%"}var u=yt(s,o),f=yt(n.gap,1),c=n.remainedWidth,h=n.autoWidthCount,d=(c-u)/(h+(h-1)*f);d=Math.max(d,0),R(a,function(g){var y=g.maxWidth,_=g.minWidth;if(g.width){var b=g.width;y&&(b=Math.min(b,y)),_&&(b=Math.max(b,_)),g.width=b,c-=b+f*b,h--}else{var b=d;y&&yb&&(b=_),b!==d&&(g.width=b,c-=b+f*b,h--)}}),d=(c-u)/(h+(h-1)*f),d=Math.max(d,0);var v=0,p;R(a,function(g,y){g.width||(g.width=d),p=g,v+=g.width*(1+f)}),p&&(v-=p.width*f);var m=-v/2;R(a,function(g,y){r[i][y]=r[i][y]||{bandWidth:o,offset:m,width:g.width},m+=g.width*(1+f)})}),r}function gZ(e,t,r){if(e&&t){var n=e[t_(t)];return n!=null&&r!=null?n[e_(r)]:n}}function mZ(e,t){var r=OL(e,t),n=RL(r);R(r,function(i){var a=i.getData(),o=i.coordinateSystem,s=o.getBaseAxis(),l=e_(i),u=n[t_(s)][l],f=u.offset,c=u.width;a.setLayout({bandWidth:u.bandWidth,offset:f,size:c})})}function yZ(e){return{seriesType:e,plan:HE(),reset:function(t){if(kL(t)){var r=t.getData(),n=t.coordinateSystem,i=n.getBaseAxis(),a=n.getOtherAxis(i),o=r.getDimensionIndex(r.mapDimension(a.dim)),s=r.getDimensionIndex(r.mapDimension(i.dim)),l=t.get("showBackground",!0),u=r.mapDimension(a.dim),f=r.getCalculationInfo("stackResultDimension"),c=ML(r,u)&&!!r.getCalculationInfo("stackedOnSeries"),h=a.isHorizontal(),d=_Z(i,a),v=NL(t),p=t.get("barMinHeight")||0,m=f&&r.getDimensionIndex(f),g=r.getLayout("size"),y=r.getLayout("offset");return{progress:function(_,b){for(var x=_.count,w=v&&Sp(x*3),S=v&&l&&Sp(x*3),C=v&&Sp(x),M=n.master.getRect(),A=h?M.width:M.height,P,E=b.getStore(),L=0;(P=_.next())!=null;){var O=E.get(c?m:o,P),N=E.get(s,P),H=d,V=void 0;c&&(V=+O-E.get(o,P));var U=void 0,F=void 0,z=void 0,ee=void 0;if(h){var J=n.dataToPoint([O,N]);if(c){var me=n.dataToPoint([V,N]);H=me[0]}U=H,F=J[1]+y,z=J[0]-H,ee=g,Math.abs(z)>>1;e[i][1]i&&(this._approxInterval=i);var s=fc.length,l=Math.min(bZ(fc,this._approxInterval,0,s),s-1);this._interval=fc[l][1],this._minLevelUnit=fc[Math.max(l-1,0)][0]},t.prototype.parse=function(r){return Tt(r)?r:+Ti(r)},t.prototype.contain=function(r){return $h(this.parse(r),this._extent)},t.prototype.normalize=function(r){return Hh(this.parse(r),this._extent)},t.prototype.scale=function(r){return zh(r,this._extent)},t.type="time",t}(df),fc=[["second",I0],["minute",O0],["hour",tu],["quarter-day",tu*6],["half-day",tu*12],["day",on*1.2],["half-week",on*3.5],["week",on*7],["month",on*31],["quarter",on*95],["half-year",gS/2],["year",gS]];function wZ(e,t,r,n){var i=Ti(t),a=Ti(r),o=function(v){return yS(i,v,n)===yS(a,v,n)},s=function(){return o("year")},l=function(){return s()&&o("month")},u=function(){return l()&&o("day")},f=function(){return u()&&o("hour")},c=function(){return f()&&o("minute")},h=function(){return c()&&o("second")},d=function(){return h()&&o("millisecond")};switch(e){case"year":return s();case"month":return l();case"day":return u();case"hour":return f();case"minute":return c();case"second":return h();case"millisecond":return d()}}function SZ(e,t){return e/=on,e>16?16:e>7.5?7:e>3.5?4:e>1.5?2:1}function xZ(e){var t=30*on;return e/=t,e>6?6:e>3?3:e>2?2:1}function CZ(e){return e/=tu,e>12?12:e>6?6:e>3.5?4:e>2?2:1}function Px(e,t){return e/=t?O0:I0,e>30?30:e>20?20:e>15?15:e>10?10:e>5?5:e>2?2:1}function TZ(e){return q2(e,!0)}function MZ(e,t,r){var n=new Date(e);switch(hs(t)){case"year":case"month":n[sE(r)](0);case"day":n[lE(r)](1);case"hour":n[uE(r)](0);case"minute":n[fE(r)](0);case"second":n[cE(r)](0),n[dE(r)](0)}return n.getTime()}function AZ(e,t,r,n){var i=1e4,a=aE,o=0;function s(A,P,E,L,O,N,H){for(var V=new Date(P),U=P,F=V[L]();U1&&N===0&&E.unshift({value:E[0].value-U})}}for(var N=0;N=n[0]&&y<=n[1]&&c++)}var _=(n[1]-n[0])/t;if(c>_*1.5&&h>_/1.5||(u.push(m),c>_||e===a[d]))break}f=[]}}}for(var b=jt(Ne(u,function(A){return jt(A,function(P){return P.value>=n[0]&&P.value<=n[1]&&!P.notAdd})}),function(A){return A.length>0}),x=[],w=b.length-1,d=0;d0;)a*=10;var s=[$t(DZ(n[0]/a)*a),$t(LZ(n[1]/a)*a)];this._interval=a,this._niceExtent=s}},t.prototype.calcNiceExtent=function(r){ou.calcNiceExtent.call(this,r),this._fixMin=r.fixMin,this._fixMax=r.fixMax},t.prototype.parse=function(r){return r},t.prototype.contain=function(r){return r=pn(r)/pn(this.base),$h(r,this._extent)},t.prototype.normalize=function(r){return r=pn(r)/pn(this.base),Hh(r,this._extent)},t.prototype.scale=function(r){return r=zh(r,this._extent),cc(this.base,r)},t.type="log",t}(oi),FL=r_.prototype;FL.getMinorTicks=ou.getMinorTicks;FL.getLabel=ou.getLabel;function dc(e,t){return EZ(e,vi(t))}oi.registerClass(r_);const IZ=r_;var OZ=function(){function e(t,r,n){this._prepareParams(t,r,n)}return e.prototype._prepareParams=function(t,r,n){n[1]0&&l>0&&!u&&(s=0),s<0&&l<0&&!f&&(l=0));var h=this._determinedMin,d=this._determinedMax;return h!=null&&(s=h,u=!0),d!=null&&(l=d,f=!0),{min:s,max:l,minFixed:u,maxFixed:f,isBlank:c}},e.prototype.modifyDataMinMax=function(t,r){this[kZ[t]]=r},e.prototype.setDeterminedMinMax=function(t,r){var n=RZ[t];this[n]=r},e.prototype.freeze=function(){this.frozen=!0},e}(),RZ={min:"_determinedMin",max:"_determinedMax"},kZ={min:"_dataMin",max:"_dataMax"};function NZ(e,t,r){var n=e.rawExtentInfo;return n||(n=new OZ(e,t,r),e.rawExtentInfo=n,n)}function hc(e,t){return t==null?null:bd(t)?NaN:e.parse(t)}function $L(e,t){var r=e.type,n=NZ(e,t,e.getExtent()).calculate();e.setBlank(n.isBlank);var i=n.min,a=n.max,o=t.ecModel;if(o&&r==="time"){var s=OL("bar",o),l=!1;if(R(s,function(c){l=l||c.getBaseAxis()===t.axis}),l){var u=RL(s),f=BZ(i,a,t,u);i=f.min,a=f.max}}return{extent:[i,a],fixMin:n.minFixed,fixMax:n.maxFixed}}function BZ(e,t,r,n){var i=r.axis.getExtent(),a=i[1]-i[0],o=gZ(n,r.axis);if(o===void 0)return{min:e,max:t};var s=1/0;R(o,function(d){s=Math.min(d.offset,s)});var l=-1/0;R(o,function(d){l=Math.max(d.offset+d.width,l)}),s=Math.abs(s),l=Math.abs(l);var u=s+l,f=t-e,c=1-(s+l)/a,h=f/c-f;return t+=h*(l/u),e-=h*(s/u),{min:e,max:t}}function Lx(e,t){var r=t,n=$L(e,r),i=n.extent,a=r.get("splitNumber");e instanceof IZ&&(e.base=r.get("logBase"));var o=e.type,s=r.get("interval"),l=o==="interval"||o==="time";e.setExtent(i[0],i[1]),e.calcNiceExtent({splitNumber:a,fixMin:n.fixMin,fixMax:n.fixMax,minInterval:l?r.get("minInterval"):null,maxInterval:l?r.get("maxInterval"):null}),s!=null&&e.setInterval&&e.setInterval(s)}function FZ(e,t){if(t=t||e.get("type"),t)switch(t){case"category":return new LL({ordinalMeta:e.getOrdinalMeta?e.getOrdinalMeta():e.getCategories(),extent:[1/0,-1/0]});case"time":return new PZ({locale:e.ecModel.getLocaleModel(),useUTC:e.ecModel.get("useUTC")});default:return new(oi.getClass(t)||df)}}function $Z(e){var t=e.scale.getExtent(),r=t[0],n=t[1];return!(r>0&&n>0||r<0&&n<0)}function hf(e){var t=e.getLabelModel().get("formatter"),r=e.type==="category"?e.scale.getExtent()[0]:null;return e.scale.type==="time"?function(n){return function(i,a){return e.scale.getFormattedLabel(i,a,n)}}(t):Ee(t)?function(n){return function(i){var a=e.scale.getLabel(i),o=n.replace("{value}",a??"");return o}}(t):Ye(t)?function(n){return function(i,a){return r!=null&&(a=i.value-r),n(n_(e,i),a,i.level!=null?{level:i.level}:null)}}(t):function(n){return e.scale.getLabel(n)}}function n_(e,t){return e.type==="category"?e.scale.getLabel(t):t.value}function HZ(e){var t=e.model,r=e.scale;if(!(!t.get(["axisLabel","show"])||r.isBlank())){var n,i,a=r.getExtent();r instanceof LL?i=r.count():(n=r.getTicks(),i=n.length);var o=e.getLabelModel(),s=hf(e),l,u=1;i>40&&(u=Math.ceil(i/40));for(var f=0;f=0||(Dx.push(e),Ye(e)&&(e={install:e}),e.install(GZ))}var zu=Et();function UZ(e){return e.type==="category"?jZ(e):KZ(e)}function YZ(e,t){return e.type==="category"?qZ(e,t):{ticks:Ne(e.scale.getTicks(),function(r){return r.value})}}function jZ(e){var t=e.getLabelModel(),r=zL(e,t);return!t.get("show")||e.scale.isBlank()?{labels:[],labelCategoryInterval:r.labelCategoryInterval}:r}function zL(e,t){var r=VL(e,"labels"),n=i_(t),i=WL(r,n);if(i)return i;var a,o;return Ye(n)?a=YL(e,n):(o=n==="auto"?XZ(e):n,a=UL(e,o)),GL(r,n,{labels:a,labelCategoryInterval:o})}function qZ(e,t){var r=VL(e,"ticks"),n=i_(t),i=WL(r,n);if(i)return i;var a,o;if((!t.get("show")||e.scale.isBlank())&&(a=[]),Ye(n))a=YL(e,n,!0);else if(n==="auto"){var s=zL(e,e.getLabelModel());o=s.labelCategoryInterval,a=Ne(s.labels,function(l){return l.tickValue})}else o=n,a=UL(e,o,!0);return GL(r,n,{ticks:a,tickCategoryInterval:o})}function KZ(e){var t=e.scale.getTicks(),r=hf(e);return{labels:Ne(t,function(n,i){return{level:n.level,formattedLabel:r(n,i),rawLabel:e.scale.getLabel(n),tickValue:n.value}})}}function VL(e,t){return zu(e)[t]||(zu(e)[t]=[])}function WL(e,t){for(var r=0;r40&&(s=Math.max(1,Math.floor(o/40)));for(var l=a[0],u=e.dataToCoord(l+1)-e.dataToCoord(l),f=Math.abs(u*Math.cos(n)),c=Math.abs(u*Math.sin(n)),h=0,d=0;l<=a[1];l+=s){var v=0,p=0,m=u0(r({value:l}),t.font,"center","top");v=m.width*1.3,p=m.height*1.3,h=Math.max(h,v,7),d=Math.max(d,p,7)}var g=h/f,y=d/c;isNaN(g)&&(g=1/0),isNaN(y)&&(y=1/0);var _=Math.max(0,Math.floor(Math.min(g,y))),b=zu(e.model),x=e.getExtent(),w=b.lastAutoInterval,S=b.lastTickCount;return w!=null&&S!=null&&Math.abs(w-_)<=1&&Math.abs(S-o)<=1&&w>_&&b.axisExtent0===x[0]&&b.axisExtent1===x[1]?_=w:(b.lastTickCount=o,b.lastAutoInterval=_,b.axisExtent0=x[0],b.axisExtent1=x[1]),_}function QZ(e){var t=e.getLabelModel();return{axisRotate:e.getRotate?e.getRotate():e.isHorizontal&&!e.isHorizontal()?90:0,labelRotate:t.get("rotate")||0,font:t.getFont()}}function UL(e,t,r){var n=hf(e),i=e.scale,a=i.getExtent(),o=e.getLabelModel(),s=[],l=Math.max((t||0)+1,1),u=a[0],f=i.count();u!==0&&l>1&&f/l>2&&(u=Math.round(Math.ceil(u/l)*l));var c=HL(e),h=o.get("showMinLabel")||c,d=o.get("showMaxLabel")||c;h&&u!==a[0]&&p(a[0]);for(var v=u;v<=a[1];v+=l)p(v);d&&v-l!==a[1]&&p(a[1]);function p(m){var g={value:m};s.push(r?m:{formattedLabel:n(g),rawLabel:i.getLabel(g),tickValue:m})}return s}function YL(e,t,r){var n=e.scale,i=hf(e),a=[];return R(n.getTicks(),function(o){var s=n.getLabel(o),l=o.value;t(o.value,s)&&a.push(r?l:{formattedLabel:i(o),rawLabel:s,tickValue:l})}),a}var Ix=[0,1],JZ=function(){function e(t,r,n){this.onBand=!1,this.inverse=!1,this.dim=t,this.scale=r,this._extent=n||[0,0]}return e.prototype.contain=function(t){var r=this._extent,n=Math.min(r[0],r[1]),i=Math.max(r[0],r[1]);return t>=n&&t<=i},e.prototype.containData=function(t){return this.scale.contain(t)},e.prototype.getExtent=function(){return this._extent.slice()},e.prototype.getPixelPrecision=function(t){return O9(t||this.scale.getExtent(),this._extent)},e.prototype.setExtent=function(t,r){var n=this._extent;n[0]=t,n[1]=r},e.prototype.dataToCoord=function(t,r){var n=this._extent,i=this.scale;return t=i.normalize(t),this.onBand&&i.type==="ordinal"&&(n=n.slice(),Ox(n,i.count())),Jg(t,Ix,n,r)},e.prototype.coordToData=function(t,r){var n=this._extent,i=this.scale;this.onBand&&i.type==="ordinal"&&(n=n.slice(),Ox(n,i.count()));var a=Jg(t,n,Ix,r);return this.scale.scale(a)},e.prototype.pointToData=function(t,r){},e.prototype.getTicksCoords=function(t){t=t||{};var r=t.tickModel||this.getTickModel(),n=YZ(this,r),i=n.ticks,a=Ne(i,function(s){return{coord:this.dataToCoord(this.scale.type==="ordinal"?this.scale.getRawOrdinalNumber(s):s),tickValue:s}},this),o=r.get("alignWithLabel");return eQ(this,a,o,t.clamp),a},e.prototype.getMinorTicksCoords=function(){if(this.scale.type==="ordinal")return[];var t=this.model.getModel("minorTick"),r=t.get("splitNumber");r>0&&r<100||(r=5);var n=this.scale.getMinorTicks(r),i=Ne(n,function(a){return Ne(a,function(o){return{coord:this.dataToCoord(o),tickValue:o}},this)},this);return i},e.prototype.getViewLabels=function(){return UZ(this).labels},e.prototype.getLabelModel=function(){return this.model.getModel("axisLabel")},e.prototype.getTickModel=function(){return this.model.getModel("axisTick")},e.prototype.getBandWidth=function(){var t=this._extent,r=this.scale.getExtent(),n=r[1]-r[0]+(this.onBand?1:0);n===0&&(n=1);var i=Math.abs(t[1]-t[0]);return Math.abs(i)/n},e.prototype.calculateCategoryInterval=function(){return ZZ(this)},e}();function Ox(e,t){var r=e[1]-e[0],n=t,i=r/n/2;e[0]+=i,e[1]-=i}function eQ(e,t,r,n){var i=t.length;if(!e.onBand||r||!i)return;var a=e.getExtent(),o,s;if(i===1)t[0].coord=a[0],o=t[1]={coord:a[1]};else{var l=t[i-1].tickValue-t[0].tickValue,u=(t[i-1].coord-t[0].coord)/l;R(t,function(d){d.coord-=u/2});var f=e.scale.getExtent();s=1+f[1]-t[i-1].tickValue,o={coord:t[i-1].coord+u*s},t.push(o)}var c=a[0]>a[1];h(t[0].coord,a[0])&&(n?t[0].coord=a[0]:t.shift()),n&&h(a[0],t[0].coord)&&t.unshift({coord:a[0]}),h(a[1],o.coord)&&(n?o.coord=a[1]:t.pop()),n&&h(o.coord,a[1])&&t.push({coord:a[1]});function h(d,v){return d=$t(d),v=$t(v),c?d>v:di&&(i+=_l);var d=Math.atan2(s,o);if(d<0&&(d+=_l),d>=n&&d<=i||d+_l>=n&&d+_l<=i)return l[0]=f,l[1]=c,u-r;var v=r*Math.cos(n)+e,p=r*Math.sin(n)+t,m=r*Math.cos(i)+e,g=r*Math.sin(i)+t,y=(v-o)*(v-o)+(p-s)*(p-s),_=(m-o)*(m-o)+(g-s)*(g-s);return y<_?(l[0]=v,l[1]=p,Math.sqrt(y)):(l[0]=m,l[1]=g,Math.sqrt(_))}function zd(e,t,r,n,i,a,o,s){var l=i-e,u=a-t,f=r-e,c=n-t,h=Math.sqrt(f*f+c*c);f/=h,c/=h;var d=l*f+u*c,v=d/h;s&&(v=Math.min(Math.max(v,0),1)),v*=h;var p=o[0]=e+v*f,m=o[1]=t+v*c;return Math.sqrt((p-i)*(p-i)+(m-a)*(m-a))}function jL(e,t,r,n,i,a,o){r<0&&(e=e+r,r=-r),n<0&&(t=t+n,n=-n);var s=e+r,l=t+n,u=o[0]=Math.min(Math.max(i,e),s),f=o[1]=Math.min(Math.max(a,t),l);return Math.sqrt((u-i)*(u-i)+(f-a)*(f-a))}var bn=[];function aQ(e,t,r){var n=jL(t.x,t.y,t.width,t.height,e.x,e.y,bn);return r.set(bn[0],bn[1]),n}function oQ(e,t,r){for(var n=0,i=0,a=0,o=0,s,l,u=1/0,f=t.data,c=e.x,h=e.y,d=0;d0){t=t/180*Math.PI,Mn.fromArray(e[0]),ut.fromArray(e[1]),Lt.fromArray(e[2]),Fe.sub(Yn,Mn,ut),Fe.sub(Wn,Lt,ut);var r=Yn.len(),n=Wn.len();if(!(r<.001||n<.001)){Yn.scale(1/r),Wn.scale(1/n);var i=Yn.dot(Wn),a=Math.cos(t);if(a1&&Fe.copy(dr,Lt),dr.toArray(e[1])}}}}function sQ(e,t,r){if(r<=180&&r>0){r=r/180*Math.PI,Mn.fromArray(e[0]),ut.fromArray(e[1]),Lt.fromArray(e[2]),Fe.sub(Yn,ut,Mn),Fe.sub(Wn,Lt,ut);var n=Yn.len(),i=Wn.len();if(!(n<.001||i<.001)){Yn.scale(1/n),Wn.scale(1/i);var a=Yn.dot(t),o=Math.cos(r);if(a=l)Fe.copy(dr,Lt);else{dr.scaleAndAdd(Wn,s/Math.tan(Math.PI/2-f));var c=Lt.x!==ut.x?(dr.x-ut.x)/(Lt.x-ut.x):(dr.y-ut.y)/(Lt.y-ut.y);if(isNaN(c))return;c<0?Fe.copy(dr,ut):c>1&&Fe.copy(dr,Lt)}dr.toArray(e[1])}}}}function kx(e,t,r,n){var i=r==="normal",a=i?e:e.ensureState(r);a.ignore=t;var o=n.get("smooth");o&&o===!0&&(o=.3),a.shape=a.shape||{},o>0&&(a.shape.smooth=o);var s=n.getModel("lineStyle").getLineStyle();i?e.useStyle(s):a.style=s}function lQ(e,t){var r=t.smooth,n=t.points;if(n)if(e.moveTo(n[0][0],n[0][1]),r>0&&n.length>=3){var i=Fg(n[0],n[1]),a=Fg(n[1],n[2]);if(!i||!a){e.lineTo(n[1][0],n[1][1]),e.lineTo(n[2][0],n[2][1]);return}var o=Math.min(i,a)*r,s=gv([],n[1],n[0],o/i),l=gv([],n[1],n[2],o/a),u=gv([],s,l,.5);e.bezierCurveTo(s[0],s[1],s[0],s[1],u[0],u[1]),e.bezierCurveTo(l[0],l[1],l[0],l[1],n[2][0],n[2][1])}else for(var f=1;f0&&a&&x(-f/o,0,o);var p=e[0],m=e[o-1],g,y;_(),g<0&&w(-g,.8),y<0&&w(y,.8),_(),b(g,y,1),b(y,g,-1),_(),g<0&&S(-g),y<0&&S(y);function _(){g=p.rect[t]-n,y=i-m.rect[t]-m.rect[r]}function b(C,M,A){if(C<0){var P=Math.min(M,-C);if(P>0){x(P*A,0,o);var E=P+C;E<0&&w(-E*A,1)}else w(-C*A,1)}}function x(C,M,A){C!==0&&(u=!0);for(var P=M;P0)for(var E=0;E0;E--){var H=A[E-1]*N;x(-H,E,o)}}}function S(C){var M=C<0?-1:1;C=Math.abs(C);for(var A=Math.ceil(C/(o-1)),P=0;P0?x(A,0,P+1):x(-A,o-P-1,o),C-=A,C<=0)return}return u}function uQ(e,t,r,n){return QL(e,"x","width",t,r,n)}function JL(e,t,r,n){return QL(e,"y","height",t,r,n)}function eD(e){var t=[];e.sort(function(p,m){return m.priority-p.priority});var r=new nt(0,0,0,0);function n(p){if(!p.ignore){var m=p.ensureState("emphasis");m.ignore==null&&(m.ignore=!1)}p.ignore=!0}for(var i=0;i=0&&n.attr(a.oldLayoutSelect),ot(h,"emphasis")>=0&&n.attr(a.oldLayoutEmphasis)),Or(n,u,r,l)}else if(n.attr(u),!cf(n).valueAnimation){var c=Ze(n.style.opacity,1);n.style.opacity=0,Wr(n,{style:{opacity:c}},r,l)}if(a.oldLayout=u,n.states.select){var d=a.oldLayoutSelect={};vc(d,u,pc),vc(d,n.states.select,pc)}if(n.states.emphasis){var v=a.oldLayoutEmphasis={};vc(v,u,pc),vc(v,n.states.emphasis,pc)}Sj(n,l,f,r,r)}if(i&&!i.ignore&&!i.invisible){var a=dQ(i),o=a.oldLayout,p={points:i.shape.points};o?(i.attr({shape:o}),Or(i,{shape:p},r)):(i.setShape(p),i.style.strokePercent=0,Wr(i,{style:{strokePercent:1}},r)),a.oldLayout=p}},e}(),Cp=Et();function vQ(e){e.registerUpdateLifecycle("series:beforeupdate",function(t,r,n){var i=Cp(r).labelManager;i||(i=Cp(r).labelManager=new hQ),i.clearLabels()}),e.registerUpdateLifecycle("series:layoutlabels",function(t,r,n){var i=Cp(r).labelManager;n.updatedSeries.forEach(function(a){i.addLabelsOfSeries(r.getViewOfSeriesModel(a))}),i.updateLayoutConfig(r),i.layout(r),i.processLabelsOverall()})}function pQ(e,t){var r=e.mapDimensionsAll("defaultedLabel"),n=r.length;if(n===1){var i=Rs(e,t,r[0]);return i!=null?i+"":null}else if(n){for(var a=[],o=0;o=0&&n.push(t[a])}return n.join(" ")}function mQ(e,t,r,n,i){var a=e.getArea(),o=a.x,s=a.y,l=a.width,u=a.height,f=r.get(["lineStyle","width"])||2;o-=f/2,s-=f/2,l+=f,u+=f,o=Math.floor(o),l=Math.round(l);var c=new Gt({shape:{x:o,y:s,width:l,height:u}});if(t){var h=e.getBaseAxis(),d=h.isHorizontal(),v=h.inverse;d?(v&&(c.shape.x+=l),c.shape.width=0):(v||(c.shape.y+=u),c.shape.height=0);var p=Ye(i)?function(m){i(m,c)}:null;Wr(c,{shape:{width:l,height:u,x:o,y:s}},r,null,n,p)}return c}function yQ(e,t,r){var n=e.getArea(),i=$t(n.r0,1),a=$t(n.r,1),o=new Eo({shape:{cx:$t(e.cx,1),cy:$t(e.cy,1),r0:i,r:a,startAngle:n.startAngle,endAngle:n.endAngle,clockwise:n.clockwise}});if(t){var s=e.getBaseAxis().dim==="angle";s?o.shape.endAngle=n.startAngle:o.shape.r=i,Wr(o,{shape:{endAngle:n.endAngle,r:a}},r)}return o}function _Q(e,t,r,n,i){if(e){if(e.type==="polar")return yQ(e,t,r);if(e.type==="cartesian2d")return mQ(e,t,r,n,i)}else return null;return null}function tD(e,t){return e.type===t}var bQ={average:function(e){for(var t=0,r=0,n=0;nt&&(t=e[r]);return isFinite(t)?t:NaN},min:function(e){for(var t=1/0,r=0;r10&&o.type==="cartesian2d"&&a){var l=o.getBaseAxis(),u=o.getOtherAxis(l),f=l.getExtent(),c=n.getDevicePixelRatio(),h=Math.abs(f[1]-f[0])*(c||1),d=Math.round(s/h);if(isFinite(d)&&d>1){a==="lttb"&&t.setData(i.lttbDownSample(i.mapDimension(u.dim),1/d));var v=void 0;Ee(a)?v=bQ[a]:Ye(a)&&(v=a),v&&t.setData(i.downSample(i.mapDimension(u.dim),1/d,v,wQ))}}}}}var Im=function(e){ge(t,e);function t(){var r=e!==null&&e.apply(this,arguments)||this;return r.type=t.type,r}return t.prototype.getInitialData=function(r,n){return AL(null,this,{useEncodeDefaulter:!0})},t.prototype.getMarkerPosition=function(r,n,i){var a=this.coordinateSystem;if(a&&a.clampData){var o=a.clampData(r),s=a.dataToPoint(o);if(i)R(a.getAxes(),function(h,d){if(h.type==="category"&&n!=null){var v=h.getTicksCoords(),p=o[d],m=n[d]==="x1"||n[d]==="y1";if(m&&(p+=1),v.length<2)return;if(v.length===2){s[d]=h.toGlobalCoord(h.getExtent()[m?1:0]);return}for(var g=void 0,y=void 0,_=1,b=0;bp){y=(x+g)/2;break}b===1&&(_=w-v[0].tickValue)}y==null&&(g?g&&(y=v[v.length-1].coord):y=v[0].coord),s[d]=h.toGlobalCoord(y)}});else{var l=this.getData(),u=l.getLayout("offset"),f=l.getLayout("size"),c=a.getBaseAxis().isHorizontal()?0:1;s[c]+=u+f/2}return s}return[NaN,NaN]},t.type="series.__base_bar__",t.defaultOption={z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,barMinHeight:0,barMinAngle:0,large:!1,largeThreshold:400,progressive:3e3,progressiveChunkMode:"mod"},t}(So);So.registerClass(Im);var xQ=function(e){ge(t,e);function t(){var r=e!==null&&e.apply(this,arguments)||this;return r.type=t.type,r}return t.prototype.getInitialData=function(){return AL(null,this,{useEncodeDefaulter:!0,createInvertedIndices:!!this.get("realtimeSort",!0)||null})},t.prototype.getProgressive=function(){return this.get("large")?this.get("progressive"):!1},t.prototype.getProgressiveThreshold=function(){var r=this.get("progressiveThreshold"),n=this.get("largeThreshold");return n>r&&(r=n),r},t.prototype.brushSelector=function(r,n,i){return i.rect(n.getItemLayout(r))},t.type="series.bar",t.dependencies=["grid","polar"],t.defaultOption=rE(Im.defaultOption,{clip:!0,roundCap:!1,showBackground:!1,backgroundStyle:{color:"rgba(180, 180, 180, 0.2)",borderColor:null,borderWidth:0,borderType:"solid",borderRadius:0,shadowBlur:0,shadowColor:null,shadowOffsetX:0,shadowOffsetY:0,opacity:1},select:{itemStyle:{borderColor:"#212121"}},realtimeSort:!1}),t}(Im);const CQ=xQ;var TQ=function(){function e(){this.cx=0,this.cy=0,this.r0=0,this.r=0,this.startAngle=0,this.endAngle=Math.PI*2,this.clockwise=!0}return e}(),Bx=function(e){ge(t,e);function t(r){var n=e.call(this,r)||this;return n.type="sausage",n}return t.prototype.getDefaultShape=function(){return new TQ},t.prototype.buildPath=function(r,n){var i=n.cx,a=n.cy,o=Math.max(n.r0||0,0),s=Math.max(n.r,0),l=(s-o)*.5,u=o+l,f=n.startAngle,c=n.endAngle,h=n.clockwise,d=Math.PI*2,v=h?c-fMath.PI/2&&fs)return!0;s=c}return!1},t.prototype._isOrderDifferentInView=function(r,n){for(var i=n.scale,a=i.getExtent(),o=Math.max(0,a[0]),s=Math.min(a[1],i.getOrdinalMeta().categories.length-1);o<=s;++o)if(r.ordinalNumbers[o]!==i.getRawOrdinalNumber(o))return!0},t.prototype._updateSortWithinSameData=function(r,n,i,a){if(this._isOrderChangedWithinSameData(r,n,i)){var o=this._dataSort(r,i,n);this._isOrderDifferentInView(o,i)&&(this._removeOnRenderedListener(a),a.dispatchAction({type:"changeAxisOrder",componentType:i.dim+"Axis",axisId:i.index,sortInfo:o}))}},t.prototype._dispatchInitSort=function(r,n,i){var a=n.baseAxis,o=this._dataSort(r,a,function(s){return r.get(r.mapDimension(n.otherAxis.dim),s)});i.dispatchAction({type:"changeAxisOrder",componentType:a.dim+"Axis",isInitSort:!0,axisId:a.index,sortInfo:o})},t.prototype.remove=function(r,n){this._clear(this._model),this._removeOnRenderedListener(n)},t.prototype.dispose=function(r,n){this._removeOnRenderedListener(n)},t.prototype._removeOnRenderedListener=function(r){this._onRendered&&(r.getZr().off("rendered",this._onRendered),this._onRendered=null)},t.prototype._clear=function(r){var n=this.group,i=this._data;r&&r.isAnimationEnabled()&&i&&!this._isLargeDraw?(this._removeBackground(),this._backgroundEls=[],i.eachItemGraphicEl(function(a){Dd(a,r,dt(a).dataIndex)})):n.removeAll(),this._data=null,this._isFirstFrame=!0},t.prototype._removeBackground=function(){this.group.remove(this._backgroundGroup),this._backgroundGroup=null},t.type="bar",t}(ho),Fx={cartesian2d:function(e,t){var r=t.width<0?-1:1,n=t.height<0?-1:1;r<0&&(t.x+=t.width,t.width=-t.width),n<0&&(t.y+=t.height,t.height=-t.height);var i=e.x+e.width,a=e.y+e.height,o=Tp(t.x,e.x),s=Mp(t.x+t.width,i),l=Tp(t.y,e.y),u=Mp(t.y+t.height,a),f=si?s:o,t.y=c&&l>a?u:l,t.width=f?0:s-o,t.height=c?0:u-l,r<0&&(t.x+=t.width,t.width=-t.width),n<0&&(t.y+=t.height,t.height=-t.height),f||c},polar:function(e,t){var r=t.r0<=t.r?1:-1;if(r<0){var n=t.r;t.r=t.r0,t.r0=n}var i=Mp(t.r,e.r),a=Tp(t.r0,e.r0);t.r=i,t.r0=a;var o=i-a<0;if(r<0){var n=t.r;t.r=t.r0,t.r0=n}return o}},$x={cartesian2d:function(e,t,r,n,i,a,o,s,l){var u=new Gt({shape:ue({},n),z2:1});if(u.__dataIndex=r,u.name="item",a){var f=u.shape,c=i?"height":"width";f[c]=0}return u},polar:function(e,t,r,n,i,a,o,s,l){var u=!i&&l?Bx:Eo,f=new u({shape:n,z2:1});f.name="item";var c=rD(i);if(f.calculateTextPosition=MQ(c,{isRoundCap:u===Bx}),a){var h=f.shape,d=i?"r":"endAngle",v={};h[d]=i?n.r0:n.startAngle,v[d]=n[d],(s?Or:Wr)(f,{shape:v},a)}return f}};function LQ(e,t){var r=e.get("realtimeSort",!0),n=t.getBaseAxis();if(r&&n.type==="category"&&t.type==="cartesian2d")return{baseAxis:n,otherAxis:t.getOtherAxis(n)}}function Hx(e,t,r,n,i,a,o,s){var l,u;a?(u={x:n.x,width:n.width},l={y:n.y,height:n.height}):(u={y:n.y,height:n.height},l={x:n.x,width:n.width}),s||(o?Or:Wr)(r,{shape:l},t,i,null);var f=t?e.baseAxis.model:null;(o?Or:Wr)(r,{shape:u},f,i)}function zx(e,t){for(var r=0;r0?1:-1,o=n.height>0?1:-1;return{x:n.x+a*i/2,y:n.y+o*i/2,width:n.width-a*i,height:n.height-o*i}},polar:function(e,t,r){var n=e.getItemLayout(t);return{cx:n.cx,cy:n.cy,r0:n.r0,r:n.r,startAngle:n.startAngle,endAngle:n.endAngle,clockwise:n.clockwise}}};function OQ(e){return e.startAngle!=null&&e.endAngle!=null&&e.startAngle===e.endAngle}function rD(e){return function(t){var r=t?"Arc":"Angle";return function(n){switch(n){case"start":case"insideStart":case"end":case"insideEnd":return n+r;default:return n}}}(e)}function Wx(e,t,r,n,i,a,o,s){var l=t.getItemVisual(r,"style");if(s){if(!a.get("roundCap")){var f=e.shape,c=Dl(n.getModel("itemStyle"),f,!0);ue(f,c),e.setShape(f)}}else{var u=n.get(["itemStyle","borderRadius"])||0;e.setShape("r",u)}e.useStyle(l);var h=n.getShallow("cursor");h&&e.attr("cursor",h);var d=s?o?i.r>=i.r0?"endArc":"startArc":i.endAngle>=i.startAngle?"endAngle":"startAngle":o?i.height>=0?"bottom":"top":i.width>=0?"right":"left",v=JP(n);E0(e,v,{labelFetcher:a,labelDataIndex:r,defaultText:pQ(a.getData(),r),inheritColor:l.fill,defaultOpacity:l.opacity,defaultOutsidePosition:d});var p=e.getTextContent();if(s&&p){var m=n.get(["label","position"]);e.textConfig.inside=m==="middle"?!0:null,AQ(e,m==="outside"?d:m,rD(o),n.get(["label","rotate"]))}wj(p,v,a.getRawValue(r),function(y){return gQ(t,y)});var g=n.getModel(["emphasis"]);CP(e,g.get("focus"),g.get("blurScope"),g.get("disabled")),TP(e,n),OQ(i)&&(e.style.fill="none",e.style.stroke="none",R(e.states,function(y){y.style&&(y.style.fill=y.style.stroke="none")}))}function RQ(e,t){var r=e.get(["itemStyle","borderColor"]);if(!r||r==="none")return 0;var n=e.get(["itemStyle","borderWidth"])||0,i=isNaN(t.width)?Number.MAX_VALUE:Math.abs(t.width),a=isNaN(t.height)?Number.MAX_VALUE:Math.abs(t.height);return Math.min(n,i,a)}var kQ=function(){function e(){}return e}(),Gx=function(e){ge(t,e);function t(r){var n=e.call(this,r)||this;return n.type="largeBar",n}return t.prototype.getDefaultShape=function(){return new kQ},t.prototype.buildPath=function(r,n){for(var i=n.points,a=this.baseDimIdx,o=1-this.baseDimIdx,s=[],l=[],u=this.barWidth,f=0;f=0?r:null},30,!1);function NQ(e,t,r){for(var n=e.baseDimIdx,i=1-n,a=e.shape.points,o=e.largeDataIndices,s=[],l=[],u=e.barWidth,f=0,c=a.length/3;f=s[0]&&t<=s[0]+l[0]&&r>=s[1]&&r<=s[1]+l[1])return o[f]}return-1}function nD(e,t,r){if(tD(r,"cartesian2d")){var n=t,i=r.getArea();return{x:e?n.x:i.x,y:e?i.y:n.y,width:e?n.width:i.width,height:e?i.height:n.height}}else{var i=r.getArea(),a=t;return{cx:i.cx,cy:i.cy,r0:e?i.r0:a.r0,r:e?i.r:a.r,startAngle:e?a.startAngle:0,endAngle:e?a.endAngle:Math.PI*2}}}function BQ(e,t,r){var n=e.type==="polar"?Eo:Gt;return new n({shape:nD(t,r,e),silent:!0,z2:0})}const FQ=EQ;function $Q(e){e.registerChartView(FQ),e.registerSeriesModel(CQ),e.registerLayout(e.PRIORITY.VISUAL.LAYOUT,Rt(mZ,"bar")),e.registerLayout(e.PRIORITY.VISUAL.PROGRESSIVE_LAYOUT,yZ("bar")),e.registerProcessor(e.PRIORITY.PROCESSOR.STATISTIC,SQ("bar")),e.registerAction({type:"changeAxisOrder",event:"changeAxisOrder",update:"update"},function(t,r){var n=t.componentType||"series";r.eachComponent({mainType:n,query:t},function(i){t.sortInfo&&i.axis.setCategorySortInfo(t.sortInfo)})})}var _c=Math.PI*2,jx=Math.PI/180;function iD(e,t){return Is(e.getBoxLayoutParams(),{width:t.getWidth(),height:t.getHeight()})}function aD(e,t){var r=iD(e,t),n=e.get("center"),i=e.get("radius");ye(i)||(i=[0,i]);var a=yt(r.width,t.getWidth()),o=yt(r.height,t.getHeight()),s=Math.min(a,o),l=yt(i[0],s/2),u=yt(i[1],s/2),f,c,h=e.coordinateSystem;if(h){var d=h.dataToPoint(n);f=d[0]||0,c=d[1]||0}else ye(n)||(n=[n,n]),f=yt(n[0],a)+r.x,c=yt(n[1],o)+r.y;return{cx:f,cy:c,r0:l,r:u}}function HQ(e,t,r){t.eachSeriesByType(e,function(n){var i=n.getData(),a=i.mapDimension("value"),o=iD(n,r),s=aD(n,r),l=s.cx,u=s.cy,f=s.r,c=s.r0,h=-n.get("startAngle")*jx,d=n.get("minAngle")*jx,v=0;i.each(a,function(A){!isNaN(A)&&v++});var p=i.getSum(a),m=Math.PI/(p||v)*2,g=n.get("clockwise"),y=n.get("roseType"),_=n.get("stillShowZeroSum"),b=i.getDataExtent(a);b[0]=0;var x=_c,w=0,S=h,C=g?1:-1;if(i.setLayout({viewRect:o,r:f}),i.each(a,function(A,P){var E;if(isNaN(A)){i.setItemLayout(P,{angle:NaN,startAngle:NaN,endAngle:NaN,clockwise:g,cx:l,cy:u,r0:c,r:y?NaN:f});return}y!=="area"?E=p===0&&_?m:A*m:E=_c/v,Er?g:m,x=Math.abs(_.label.y-r);if(x>=b.maxY){var w=_.label.x-t-_.len2*i,S=n+_.len,C=Math.abs(w)e.unconstrainedWidth?null:d:null;n.setStyle("width",v)}var p=n.getBoundingRect();a.width=p.width;var m=(n.style.margin||0)+2.1;a.height=p.height+m,a.y-=(a.height-c)/2}}}function Ap(e){return e.position==="center"}function GQ(e){var t=e.getData(),r=[],n,i,a=!1,o=(e.get("minShowLabelAngle")||0)*VQ,s=t.getLayout("viewRect"),l=t.getLayout("r"),u=s.width,f=s.x,c=s.y,h=s.height;function d(w){w.ignore=!0}function v(w){if(!w.ignore)return!0;for(var S in w.states)if(w.states[S].ignore===!1)return!0;return!1}t.each(function(w){var S=t.getItemGraphicEl(w),C=S.shape,M=S.getTextContent(),A=S.getTextGuideLine(),P=t.getItemModel(w),E=P.getModel("label"),L=E.get("position")||P.get(["emphasis","label","position"]),O=E.get("distanceToLabelLine"),N=E.get("alignTo"),H=yt(E.get("edgeDistance"),u),V=E.get("bleedMargin"),U=P.getModel("labelLine"),F=U.get("length");F=yt(F,u);var z=U.get("length2");if(z=yt(z,u),Math.abs(C.endAngle-C.startAngle)0?"right":"left":J>0?"left":"right"}var W=Math.PI,X=0,j=E.get("rotate");if(Tt(j))X=j*(W/180);else if(L==="center")X=0;else if(j==="radial"||j===!0){var le=J<0?-ee+W:-ee;X=le}else if(j==="tangential"&&L!=="outside"&&L!=="outer"){var fe=Math.atan2(J,me);fe<0&&(fe=W*2+fe);var ae=me>0;ae&&(fe=W+fe),X=fe-W}if(a=!!X,M.x=we,M.y=$e,M.rotation=X,M.setStyle({verticalAlign:"middle"}),Y){M.setStyle({align:B});var de=M.states.select;de&&(de.x+=M.x,de.y+=M.y)}else{var se=M.getBoundingRect().clone();se.applyTransform(M.getComputedTransform());var ne=(M.style.margin||0)+2.1;se.y-=ne/2,se.height+=ne,r.push({label:M,labelLine:A,position:L,len:F,len2:z,minTurnAngle:U.get("minTurnAngle"),maxSurfaceAngle:U.get("maxSurfaceAngle"),surfaceNormal:new Fe(J,me),linePoints:Ie,textAlign:B,labelDistance:O,labelAlignTo:N,edgeDistance:H,bleedMargin:V,rect:se,unconstrainedWidth:se.width,labelStyleWidth:M.style.width})}S.setTextConfig({inside:Y})}}),!a&&e.get("avoidLabelOverlap")&&WQ(r,n,i,l,u,h,f,c);for(var p=0;p0){for(var f=o.getItemLayout(0),c=1;isNaN(f&&f.startAngle)&&c=a.r0}},t.type="pie",t}(ho);const jQ=YQ;function qQ(e,t,r){t=ye(t)&&{coordDimensions:t}||ue({encodeDefine:e.getEncode()},t);var n=e.getSource(),i=TL(n,t).dimensions,a=new CL(i,e);return a.initData(n,r),a}var KQ=function(){function e(t,r){this._getDataWithEncodedVisual=t,this._getRawData=r}return e.prototype.getAllNames=function(){var t=this._getRawData();return t.mapArray(t.getName)},e.prototype.containName=function(t){var r=this._getRawData();return r.indexOfName(t)>=0},e.prototype.indexOfName=function(t){var r=this._getDataWithEncodedVisual();return r.indexOfName(t)},e.prototype.getItemVisual=function(t,r){var n=this._getDataWithEncodedVisual();return n.getItemVisual(t,r)},e}();const XQ=KQ;var ZQ=Et(),QQ=function(e){ge(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.init=function(r){e.prototype.init.apply(this,arguments),this.legendVisualProvider=new XQ(xt(this.getData,this),xt(this.getRawData,this)),this._defaultLabelLine(r)},t.prototype.mergeOption=function(){e.prototype.mergeOption.apply(this,arguments)},t.prototype.getInitialData=function(){return qQ(this,{coordDimensions:["value"],encodeDefaulter:Rt(Xj,this)})},t.prototype.getDataParams=function(r){var n=this.getData(),i=ZQ(n),a=i.seats;if(!a){var o=[];n.each(n.mapDimension("value"),function(l){o.push(l)}),a=i.seats=R9(o,n.hostModel.get("percentPrecision"))}var s=e.prototype.getDataParams.call(this,r);return s.percent=a[r]||0,s.$vars.push("percent"),s},t.prototype._defaultLabelLine=function(r){em(r,"labelLine",["show"]);var n=r.labelLine,i=r.emphasis.labelLine;n.show=n.show&&r.label.show,i.show=i.show&&r.emphasis.label.show},t.type="series.pie",t.defaultOption={z:2,legendHoverLink:!0,colorBy:"data",center:["50%","50%"],radius:[0,"75%"],clockwise:!0,startAngle:90,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"},t}(So);const JQ=QQ;function eJ(e){return{seriesType:e,reset:function(t,r){var n=t.getData();n.filterSelf(function(i){var a=n.mapDimension("value"),o=n.get(a,i);return!(Tt(o)&&!isNaN(o)&&o<0)})}}}function tJ(e){e.registerChartView(jQ),e.registerSeriesModel(JQ),kK("pie",e.registerAction),e.registerLayout(Rt(HQ,"pie")),e.registerProcessor(zQ("pie")),e.registerProcessor(eJ("pie"))}var rJ=function(e){ge(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.type="grid",t.dependencies=["xAxis","yAxis"],t.layoutMode="box",t.defaultOption={show:!1,z:0,left:"10%",top:60,right:"10%",bottom:70,containLabel:!1,backgroundColor:"rgba(0,0,0,0)",borderWidth:1,borderColor:"#ccc"},t}(Mt);const nJ=rJ;var Om=function(e){ge(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.getCoordSysModel=function(){return this.getReferringComponents("grid",Tn).models[0]},t.type="cartesian2dAxis",t}(Mt);ni(Om,WZ);var sD={show:!0,z:0,inverse:!1,name:"",nameLocation:"end",nameRotate:null,nameTruncate:{maxWidth:null,ellipsis:"...",placeholder:"."},nameTextStyle:{},nameGap:15,silent:!1,triggerEvent:!1,tooltip:{show:!1},axisPointer:{},axisLine:{show:!0,onZero:!0,onZeroAxisIndex:null,lineStyle:{color:"#6E7079",width:1,type:"solid"},symbol:["none","none"],symbolSize:[10,15]},axisTick:{show:!0,inside:!1,length:5,lineStyle:{width:1}},axisLabel:{show:!0,inside:!1,rotate:0,showMinLabel:null,showMaxLabel:null,margin:8,fontSize:12},splitLine:{show:!0,lineStyle:{color:["#E0E6F1"],width:1,type:"solid"}},splitArea:{show:!1,areaStyle:{color:["rgba(250,250,250,0.2)","rgba(210,219,238,0.2)"]}}},iJ=st({boundaryGap:!0,deduplication:null,splitLine:{show:!1},axisTick:{alignWithLabel:!1,interval:"auto"},axisLabel:{interval:"auto"}},sD),a_=st({boundaryGap:[0,0],axisLine:{show:"auto"},axisTick:{show:"auto"},splitNumber:5,minorTick:{show:!1,splitNumber:5,length:3,lineStyle:{}},minorSplitLine:{show:!1,lineStyle:{color:"#F4F7FD",width:1}}},sD),aJ=st({splitNumber:6,axisLabel:{showMinLabel:!1,showMaxLabel:!1,rich:{primary:{fontWeight:"bold"}}},splitLine:{show:!1}},a_),oJ=ht({logBase:10},a_);const sJ={category:iJ,value:a_,time:aJ,log:oJ};var lJ={value:1,category:1,time:1,log:1};function Kx(e,t,r,n){R(lJ,function(i,a){var o=st(st({},sJ[a],!0),n,!0),s=function(l){ge(u,l);function u(){var f=l!==null&&l.apply(this,arguments)||this;return f.type=t+"Axis."+a,f}return u.prototype.mergeDefaultAndTheme=function(f,c){var h=Nu(this),d=h?Rh(f):{},v=c.getTheme();st(f,v.get(a+"Axis")),st(f,this.getDefaultOption()),f.type=Xx(f),h&&Os(f,d,h)},u.prototype.optionUpdated=function(){var f=this.option;f.type==="category"&&(this.__ordinalMeta=Lm.createByAxisModel(this))},u.prototype.getCategories=function(f){var c=this.option;if(c.type==="category")return f?c.data:this.__ordinalMeta.categories},u.prototype.getOrdinalMeta=function(){return this.__ordinalMeta},u.type=t+"Axis."+a,u.defaultOption=o,u}(r);e.registerComponentModel(s)}),e.registerSubTypeDefaulter(t+"Axis",Xx)}function Xx(e){return e.type||(e.data?"category":"value")}var uJ=function(){function e(t){this.type="cartesian",this._dimList=[],this._axes={},this.name=t||""}return e.prototype.getAxis=function(t){return this._axes[t]},e.prototype.getAxes=function(){return Ne(this._dimList,function(t){return this._axes[t]},this)},e.prototype.getAxesByScale=function(t){return t=t.toLowerCase(),jt(this.getAxes(),function(r){return r.scale.type===t})},e.prototype.addAxis=function(t){var r=t.dim;this._axes[r]=t,this._dimList.push(r)},e}();const fJ=uJ;var Rm=["x","y"];function Zx(e){return e.type==="interval"||e.type==="time"}var cJ=function(e){ge(t,e);function t(){var r=e!==null&&e.apply(this,arguments)||this;return r.type="cartesian2d",r.dimensions=Rm,r}return t.prototype.calcAffineTransform=function(){this._transform=this._invTransform=null;var r=this.getAxis("x").scale,n=this.getAxis("y").scale;if(!(!Zx(r)||!Zx(n))){var i=r.getExtent(),a=n.getExtent(),o=this.dataToPoint([i[0],a[0]]),s=this.dataToPoint([i[1],a[1]]),l=i[1]-i[0],u=a[1]-a[0];if(!(!l||!u)){var f=(s[0]-o[0])/l,c=(s[1]-o[1])/u,h=o[0]-i[0]*f,d=o[1]-a[0]*c,v=this._transform=[f,0,0,c,h,d];this._invTransform=bh([],v)}}},t.prototype.getBaseAxis=function(){return this.getAxesByScale("ordinal")[0]||this.getAxesByScale("time")[0]||this.getAxis("x")},t.prototype.containPoint=function(r){var n=this.getAxis("x"),i=this.getAxis("y");return n.contain(n.toLocalCoord(r[0]))&&i.contain(i.toLocalCoord(r[1]))},t.prototype.containData=function(r){return this.getAxis("x").containData(r[0])&&this.getAxis("y").containData(r[1])},t.prototype.containZone=function(r,n){var i=this.dataToPoint(r),a=this.dataToPoint(n),o=this.getArea(),s=new nt(i[0],i[1],a[0]-i[0],a[1]-i[1]);return o.intersect(s)},t.prototype.dataToPoint=function(r,n,i){i=i||[];var a=r[0],o=r[1];if(this._transform&&a!=null&&isFinite(a)&&o!=null&&isFinite(o))return un(i,r,this._transform);var s=this.getAxis("x"),l=this.getAxis("y");return i[0]=s.toGlobalCoord(s.dataToCoord(a,n)),i[1]=l.toGlobalCoord(l.dataToCoord(o,n)),i},t.prototype.clampData=function(r,n){var i=this.getAxis("x").scale,a=this.getAxis("y").scale,o=i.getExtent(),s=a.getExtent(),l=i.parse(r[0]),u=a.parse(r[1]);return n=n||[],n[0]=Math.min(Math.max(Math.min(o[0],o[1]),l),Math.max(o[0],o[1])),n[1]=Math.min(Math.max(Math.min(s[0],s[1]),u),Math.max(s[0],s[1])),n},t.prototype.pointToData=function(r,n){var i=[];if(this._invTransform)return un(i,r,this._invTransform);var a=this.getAxis("x"),o=this.getAxis("y");return i[0]=a.coordToData(a.toLocalCoord(r[0]),n),i[1]=o.coordToData(o.toLocalCoord(r[1]),n),i},t.prototype.getOtherAxis=function(r){return this.getAxis(r.dim==="x"?"y":"x")},t.prototype.getArea=function(){var r=this.getAxis("x").getGlobalExtent(),n=this.getAxis("y").getGlobalExtent(),i=Math.min(r[0],r[1]),a=Math.min(n[0],n[1]),o=Math.max(r[0],r[1])-i,s=Math.max(n[0],n[1])-a;return new nt(i,a,o,s)},t}(fJ),dJ=function(e){ge(t,e);function t(r,n,i,a,o){var s=e.call(this,r,n,i)||this;return s.index=0,s.type=a||"value",s.position=o||"bottom",s}return t.prototype.isHorizontal=function(){var r=this.position;return r==="top"||r==="bottom"},t.prototype.getGlobalExtent=function(r){var n=this.getExtent();return n[0]=this.toGlobalCoord(n[0]),n[1]=this.toGlobalCoord(n[1]),r&&n[0]>n[1]&&n.reverse(),n},t.prototype.pointToData=function(r,n){return this.coordToData(this.toLocalCoord(r[this.dim==="x"?0:1]),n)},t.prototype.setCategorySortInfo=function(r){if(this.type!=="category")return!1;this.model.option.categorySortInfo=r,this.scale.setSortInfo(r)},t}(tQ);const hJ=dJ;function km(e,t,r){r=r||{};var n=e.coordinateSystem,i=t.axis,a={},o=i.getAxesOnZeroOf()[0],s=i.position,l=o?"onZero":s,u=i.dim,f=n.getRect(),c=[f.x,f.x+f.width,f.y,f.y+f.height],h={left:0,right:1,top:0,bottom:1,onZero:2},d=t.get("offset")||0,v=u==="x"?[c[2]-d,c[3]+d]:[c[0]-d,c[1]+d];if(o){var p=o.toGlobalCoord(o.dataToCoord(0));v[h.onZero]=Math.max(Math.min(p,v[1]),v[0])}a.position=[u==="y"?v[h[l]]:c[0],u==="x"?v[h[l]]:c[3]],a.rotation=Math.PI/2*(u==="x"?0:1);var m={top:-1,bottom:1,left:-1,right:1};a.labelDirection=a.tickDirection=a.nameDirection=m[s],a.labelOffset=o?v[h[s]]-v[h.onZero]:0,t.get(["axisTick","inside"])&&(a.tickDirection=-a.tickDirection),Au(r.labelInside,t.get(["axisLabel","inside"]))&&(a.labelDirection=-a.labelDirection);var g=t.get(["axisLabel","rotate"]);return a.labelRotate=l==="top"?-g:g,a.z2=1,a}function Qx(e){return e.get("coordinateSystem")==="cartesian2d"}function Jx(e){var t={xAxisModel:null,yAxisModel:null};return R(t,function(r,n){var i=n.replace(/Model$/,""),a=e.getReferringComponents(i,Tn).models[0];t[n]=a}),t}var Pp=Math.log;function vJ(e,t,r){var n=df.prototype,i=n.getTicks.call(r),a=n.getTicks.call(r,!0),o=i.length-1,s=n.getInterval.call(r),l=$L(e,t),u=l.extent,f=l.fixMin,c=l.fixMax;if(e.type==="log"){var h=Pp(e.base);u=[Pp(u[0])/h,Pp(u[1])/h]}e.setExtent(u[0],u[1]),e.calcNiceExtent({splitNumber:o,fixMin:f,fixMax:c});var d=n.getExtent.call(e);f&&(u[0]=d[0]),c&&(u[1]=d[1]);var v=n.getInterval.call(e),p=u[0],m=u[1];if(f&&c)v=(m-p)/o;else if(f)for(m=u[0]+v*o;mu[0]&&isFinite(p)&&isFinite(u[0]);)v=wp(v),p=u[1]-v*o;else{var g=e.getTicks().length-1;g>o&&(v=wp(v));var y=v*o;m=Math.ceil(u[1]/v)*v,p=$t(m-y),p<0&&u[0]>=0?(p=0,m=$t(y)):m>0&&u[1]<=0&&(m=0,p=-$t(y))}var _=(i[0].value-a[0].value)/s,b=(i[o].value-a[o].value)/s;n.setExtent.call(e,p+v*_,m+v*b),n.setInterval.call(e,v),(_||b)&&n.setNiceExtent.call(e,p+v,m-v)}var pJ=function(){function e(t,r,n){this.type="grid",this._coordsMap={},this._coordsList=[],this._axesMap={},this._axesList=[],this.axisPointerEnabled=!0,this.dimensions=Rm,this._initCartesian(t,r,n),this.model=t}return e.prototype.getRect=function(){return this._rect},e.prototype.update=function(t,r){var n=this._axesMap;this._updateScale(t,this.model);function i(o){var s,l=Ct(o),u=l.length;if(u){for(var f=[],c=u-1;c>=0;c--){var h=+l[c],d=o[h],v=d.model,p=d.scale;Dm(p)&&v.get("alignTicks")&&v.get("interval")==null?f.push(d):(Lx(p,v),Dm(p)&&(s=d))}f.length&&(s||(s=f.pop(),Lx(s.scale,s.model)),R(f,function(m){vJ(m.scale,m.model,s.scale)}))}}i(n.x),i(n.y);var a={};R(n.x,function(o){eC(n,"y",o,a)}),R(n.y,function(o){eC(n,"x",o,a)}),this.resize(this.model,r)},e.prototype.resize=function(t,r,n){var i=t.getBoxLayoutParams(),a=!n&&t.get("containLabel"),o=Is(i,{width:r.getWidth(),height:r.getHeight()});this._rect=o;var s=this._axesList;l(),a&&(R(s,function(u){if(!u.model.get(["axisLabel","inside"])){var f=HZ(u);if(f){var c=u.isHorizontal()?"height":"width",h=u.model.get(["axisLabel","margin"]);o[c]-=f[c]+h,u.position==="top"?o.y+=f.height+h:u.position==="left"&&(o.x+=f.width+h)}}}),l()),R(this._coordsList,function(u){u.calcAffineTransform()});function l(){R(s,function(u){var f=u.isHorizontal(),c=f?[0,o.width]:[0,o.height],h=u.inverse?1:0;u.setExtent(c[h],c[1-h]),gJ(u,f?o.x:o.y)})}},e.prototype.getAxis=function(t,r){var n=this._axesMap[t];if(n!=null)return n[r||0]},e.prototype.getAxes=function(){return this._axesList.slice()},e.prototype.getCartesian=function(t,r){if(t!=null&&r!=null){var n="x"+t+"y"+r;return this._coordsMap[n]}Re(t)&&(r=t.yAxisIndex,t=t.xAxisIndex);for(var i=0,a=this._coordsList;i0?"top":"bottom",a="center"):Ad(i-ea)?(o=n>0?"bottom":"top",a="center"):(o="middle",i>0&&i0?"right":"left":a=n>0?"left":"right"),{rotation:i,textAlign:a,textVerticalAlign:o}},e.makeAxisEventDataBase=function(t){var r={componentType:t.mainType,componentIndex:t.componentIndex};return r[t.mainType+"Index"]=t.componentIndex,r},e.isLabelSilent=function(t){var r=t.get("tooltip");return t.get("silent")||!(t.get("triggerEvent")||r&&r.show)},e}(),rC={axisLine:function(e,t,r,n){var i=t.get(["axisLine","show"]);if(i==="auto"&&e.handleAutoShown&&(i=e.handleAutoShown("axisLine")),!!i){var a=t.axis.getExtent(),o=n.transform,s=[a[0],0],l=[a[1],0],u=s[0]>l[0];o&&(un(s,s,o),un(l,l,o));var f=ue({lineCap:"round"},t.getModel(["axisLine","lineStyle"]).getLineStyle()),c=new wo({shape:{x1:s[0],y1:s[1],x2:l[0],y2:l[1]},style:f,strokeContainThreshold:e.strokeContainThreshold||5,silent:!0,z2:1});Iu(c.shape,c.style.lineWidth),c.anid="line",r.add(c);var h=t.get(["axisLine","symbol"]);if(h!=null){var d=t.get(["axisLine","symbolSize"]);Ee(h)&&(h=[h,h]),(Ee(d)||Tt(d))&&(d=[d,d]);var v=qK(t.get(["axisLine","symbolOffset"])||0,d),p=d[0],m=d[1];R([{rotate:e.rotation+Math.PI/2,offset:v[0],r:0},{rotate:e.rotation-Math.PI/2,offset:v[1],r:Math.sqrt((s[0]-l[0])*(s[0]-l[0])+(s[1]-l[1])*(s[1]-l[1]))}],function(g,y){if(h[y]!=="none"&&h[y]!=null){var _=j0(h[y],-p/2,-m/2,p,m,f.stroke,!0),b=g.r+g.offset,x=u?l:s;_.attr({rotation:g.rotate,x:x[0]+b*Math.cos(e.rotation),y:x[1]-b*Math.sin(e.rotation),silent:!0,z2:11}),r.add(_)}})}}},axisTickLabel:function(e,t,r,n){var i=bJ(r,n,t,e),a=SJ(r,n,t,e);if(_J(t,a,i),wJ(r,n,t,e.tickDirection),t.get(["axisLabel","hideOverlap"])){var o=ZL(Ne(a,function(s){return{label:s,priority:s.z2,defaultAttr:{ignore:s.ignore}}}));eD(o)}},axisName:function(e,t,r,n){var i=Au(e.axisName,t.get("name"));if(i){var a=t.get("nameLocation"),o=e.nameDirection,s=t.getModel("nameTextStyle"),l=t.get("nameGap")||0,u=t.axis.getExtent(),f=u[0]>u[1]?-1:1,c=[a==="start"?u[0]-f*l:a==="end"?u[1]+f*l:(u[0]+u[1])/2,iC(a)?e.labelOffset+o*l:0],h,d=t.get("nameRotate");d!=null&&(d=d*ea/180);var v;iC(a)?h=vo.innerTextLayout(e.rotation,d??e.rotation,o):(h=yJ(e.rotation,a,d||0,u),v=e.axisNameAvailableWidth,v!=null&&(v=Math.abs(v/Math.sin(h.rotation)),!isFinite(v)&&(v=null)));var p=s.getFont(),m=t.get("nameTruncate",!0)||{},g=m.ellipsis,y=Au(e.nameTruncateMaxWidth,m.maxWidth,v),_=new mr({x:c[0],y:c[1],rotation:h.rotation,silent:vo.isLabelSilent(t),style:ha(s,{text:i,font:p,overflow:"truncate",width:y,ellipsis:g,fill:s.getTextColor()||t.get(["axisLine","lineStyle","color"]),align:s.get("align")||h.textAlign,verticalAlign:s.get("verticalAlign")||h.textVerticalAlign}),z2:1});if(A0({el:_,componentModel:t,itemName:i}),_.__fullText=i,_.anid="name",t.get("triggerEvent")){var b=vo.makeAxisEventDataBase(t);b.targetType="axisName",b.name=i,dt(_).eventData=b}n.add(_),_.updateTransform(),r.add(_),_.decomposeTransform()}}};function yJ(e,t,r,n){var i=j2(r-e),a,o,s=n[0]>n[1],l=t==="start"&&!s||t!=="start"&&s;return Ad(i-ea/2)?(o=l?"bottom":"top",a="center"):Ad(i-ea*1.5)?(o=l?"top":"bottom",a="center"):(o="middle",iea/2?a=l?"left":"right":a=l?"right":"left"),{rotation:i,textAlign:a,textVerticalAlign:o}}function _J(e,t,r){if(!HL(e.axis)){var n=e.get(["axisLabel","showMinLabel"]),i=e.get(["axisLabel","showMaxLabel"]);t=t||[],r=r||[];var a=t[0],o=t[1],s=t[t.length-1],l=t[t.length-2],u=r[0],f=r[1],c=r[r.length-1],h=r[r.length-2];n===!1?(Kr(a),Kr(u)):nC(a,o)&&(n?(Kr(o),Kr(f)):(Kr(a),Kr(u))),i===!1?(Kr(s),Kr(c)):nC(l,s)&&(i?(Kr(l),Kr(h)):(Kr(s),Kr(c)))}}function Kr(e){e&&(e.ignore=!0)}function nC(e,t){var r=e&&e.getBoundingRect().clone(),n=t&&t.getBoundingRect().clone();if(!(!r||!n)){var i=a0([]);return o0(i,i,-e.rotation),r.applyTransform(fs([],i,e.getLocalTransform())),n.applyTransform(fs([],i,t.getLocalTransform())),r.intersect(n)}}function iC(e){return e==="middle"||e==="center"}function lD(e,t,r,n,i){for(var a=[],o=[],s=[],l=0;l=0||e===t}function PJ(e){var t=o_(e);if(t){var r=t.axisPointerModel,n=t.axis.scale,i=r.option,a=r.get("status"),o=r.get("value");o!=null&&(o=n.parse(o));var s=Nm(r);a==null&&(i.status=s?"show":"hide");var l=n.getExtent().slice();l[0]>l[1]&&l.reverse(),(o==null||o>l[1])&&(o=l[1]),o=s)}}for(var c=this.__startIndex;c15)break}}O.prevElClipPaths&&g.restore()};if(y)if(y.length===0)C=m.__endIndex;else for(var A=d.dpr,P=0;P0&&t>i[0]){for(l=0;lt);l++);s=n[i[l]]}if(i.splice(l+1,0,t),n[t]=r,!r.virtual)if(s){var u=s.dom;u.nextSibling?o.insertBefore(r.dom,u.nextSibling):o.appendChild(r.dom)}else o.firstChild?o.insertBefore(r.dom,o.firstChild):o.appendChild(r.dom);r.__painter=this}},e.prototype.eachLayer=function(t,r){for(var n=this._zlevelList,i=0;i0?bc:0),this._needsManuallyCompositing),f.__builtin__||r0("ZLevel "+u+" has been used by unkown layer "+f.id),f!==a&&(f.__used=!0,f.__startIndex!==l&&(f.__dirty=!0),f.__startIndex=l,f.incremental?f.__drawIndex=-1:f.__drawIndex=l,r(l),a=f),i.__dirty&Br&&!i.__inHover&&(f.__dirty=!0,f.incremental&&f.__drawIndex<0&&(f.__drawIndex=l))}r(l),this.eachBuiltinLayer(function(c,h){!c.__used&&c.getElementCount()>0&&(c.__dirty=!0,c.__startIndex=c.__endIndex=c.__drawIndex=0),c.__dirty&&c.__drawIndex<0&&(c.__drawIndex=c.__startIndex)})},e.prototype.clear=function(){return this.eachBuiltinLayer(this._clearLayer),this},e.prototype._clearLayer=function(t){t.clear()},e.prototype.setBackgroundColor=function(t){this._backgroundColor=t,R(this._layers,function(r){r.setUnpainted()})},e.prototype.configLayer=function(t,r){if(r){var n=this._layerConfig;n[t]?st(n[t],r,!0):n[t]=r;for(var i=0;is)return!0;if(o){var l=o_(t).seriesDataCount,u=i.getExtent();return Math.abs(u[0]-u[1])/l>s}return!1}return n===!0},e.prototype.makeElOption=function(t,r,n,i,a){},e.prototype.createPointerEl=function(t,r,n,i){var a=r.pointer;if(a){var o=Ka(t).pointerEl=new mj[a.type](uC(r.pointer));t.add(o)}},e.prototype.createLabelEl=function(t,r,n,i){if(r.label){var a=Ka(t).labelEl=new mr(uC(r.label));t.add(a),cC(a,i)}},e.prototype.updatePointerEl=function(t,r,n){var i=Ka(t).pointerEl;i&&r.pointer&&(i.setStyle(r.pointer.style),n(i,{shape:r.pointer.shape}))},e.prototype.updateLabelEl=function(t,r,n,i){var a=Ka(t).labelEl;a&&(a.setStyle(r.label.style),n(a,{x:r.label.x,y:r.label.y}),cC(a,i))},e.prototype._renderHandle=function(t){if(!(this._dragging||!this.updateHandleTransform)){var r=this._axisPointerModel,n=this._api.getZr(),i=this._handle,a=r.getModel("handle"),o=r.get("status");if(!a.get("show")||!o||o==="hide"){i&&n.remove(i),this._handle=null;return}var s;this._handle||(s=!0,i=this._handle=M0(a.get("icon"),{cursor:"move",draggable:!0,onmousemove:function(u){C2(u.event)},onmousedown:Ip(this._onHandleDragMove,this,0,0),drift:Ip(this._onHandleDragMove,this),ondragend:Ip(this._onHandleDragEnd,this)}),n.add(i)),dC(i,r,!1),i.setStyle(a.getItemStyle(null,["color","borderColor","borderWidth","opacity","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY"]));var l=a.get("size");ye(l)||(l=[l,l]),i.scaleX=l[0]/2,i.scaleY=l[1]/2,VE(this,"_doDispatchAxisPointer",a.get("throttle")||0,"fixRate"),this._moveHandleToValue(t,s)}},e.prototype._moveHandleToValue=function(t,r){fC(this._axisPointerModel,!r&&this._moveAnimation,this._handle,Op(this.getHandleTransform(t,this._axisModel,this._axisPointerModel)))},e.prototype._onHandleDragMove=function(t,r){var n=this._handle;if(n){this._dragging=!0;var i=this.updateHandleTransform(Op(n),[t,r],this._axisModel,this._axisPointerModel);this._payloadInfo=i,n.stopAnimation(),n.attr(Op(i)),Ka(n).lastProp=null,this._doDispatchAxisPointer()}},e.prototype._doDispatchAxisPointer=function(){var t=this._handle;if(t){var r=this._payloadInfo,n=this._axisModel;this._api.dispatchAction({type:"updateAxisPointer",x:r.cursorPoint[0],y:r.cursorPoint[1],tooltipOption:r.tooltipOption,axesInfo:[{axisDim:n.axis.dim,axisIndex:n.componentIndex}]})}},e.prototype._onHandleDragEnd=function(){this._dragging=!1;var t=this._handle;if(t){var r=this._axisPointerModel.get("value");this._moveHandleToValue(r),this._api.dispatchAction({type:"hideTip"})}},e.prototype.clear=function(t){this._lastValue=null,this._lastStatus=null;var r=t.getZr(),n=this._group,i=this._handle;r&&n&&(this._lastGraphicKey=null,n&&r.remove(n),i&&r.remove(i),this._group=null,this._handle=null,this._payloadInfo=null),wm(this,"_doDispatchAxisPointer")},e.prototype.doClear=function(){},e.prototype.buildLabel=function(t,r,n){return n=n||0,{x:t[n],y:t[1-n],width:r[n],height:r[1-n]}},e}();function fC(e,t,r,n){hD(Ka(r).lastProp,n)||(Ka(r).lastProp=n,t?Or(r,n,e):(r.stopAnimation(),r.attr(n)))}function hD(e,t){if(Re(e)&&Re(t)){var r=!0;return R(t,function(n,i){r=r&&hD(e[i],n)}),!!r}else return e===t}function cC(e,t){e[t.get(["label","show"])?"show":"hide"]()}function Op(e){return{x:e.x||0,y:e.y||0,rotation:e.rotation||0}}function dC(e,t,r){var n=t.get("z"),i=t.get("zlevel");e&&e.traverse(function(a){a.type!=="group"&&(n!=null&&(a.z=n),i!=null&&(a.zlevel=i),a.silent=r)})}const YJ=UJ;function jJ(e){var t=e.get("type"),r=e.getModel(t+"Style"),n;return t==="line"?(n=r.getLineStyle(),n.fill=null):t==="shadow"&&(n=r.getAreaStyle(),n.stroke=null),n}function qJ(e,t,r,n,i){var a=r.get("value"),o=vD(a,t.axis,t.ecModel,r.get("seriesDataIndices"),{precision:r.get(["label","precision"]),formatter:r.get(["label","formatter"])}),s=r.getModel("label"),l=Oh(s.get("padding")||0),u=s.getFont(),f=u0(o,u),c=i.position,h=f.width+l[1]+l[3],d=f.height+l[0]+l[2],v=i.align;v==="right"&&(c[0]-=h),v==="center"&&(c[0]-=h/2);var p=i.verticalAlign;p==="bottom"&&(c[1]-=d),p==="middle"&&(c[1]-=d/2),KJ(c,h,d,n);var m=s.get("backgroundColor");(!m||m==="auto")&&(m=t.get(["axisLine","lineStyle","color"])),e.label={x:c[0],y:c[1],style:ha(s,{text:o,font:u,fill:s.getTextColor(),padding:l,backgroundColor:m}),z2:10}}function KJ(e,t,r,n){var i=n.getWidth(),a=n.getHeight();e[0]=Math.min(e[0]+t,i)-t,e[1]=Math.min(e[1]+r,a)-r,e[0]=Math.max(e[0],0),e[1]=Math.max(e[1],0)}function vD(e,t,r,n,i){e=t.scale.parse(e);var a=t.scale.getLabel({value:e},{precision:i.precision}),o=i.formatter;if(o){var s={value:n_(t,{value:e}),axisDimension:t.dim,axisIndex:t.index,seriesData:[]};R(n,function(l){var u=r.getSeriesByIndex(l.seriesIndex),f=l.dataIndexInside,c=u&&u.getDataParams(f);c&&s.seriesData.push(c)}),Ee(o)?a=o.replace("{value}",a):Ye(o)&&(a=o(s))}return a}function pD(e,t,r){var n=Pu();return o0(n,n,r.rotation),Vg(n,n,r.position),T0([e.dataToCoord(t),(r.labelOffset||0)+(r.labelDirection||1)*(r.labelMargin||0)],n)}function XJ(e,t,r,n,i,a){var o=uD.innerTextLayout(r.rotation,0,r.labelDirection);r.labelMargin=i.get(["label","margin"]),qJ(t,n,i,a,{position:pD(n.axis,e,r),align:o.textAlign,verticalAlign:o.textVerticalAlign})}function ZJ(e,t,r){return r=r||0,{x1:e[r],y1:e[1-r],x2:t[r],y2:t[1-r]}}function QJ(e,t,r){return r=r||0,{x:e[r],y:e[1-r],width:t[r],height:t[1-r]}}var JJ=function(e){ge(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.makeElOption=function(r,n,i,a,o){var s=i.axis,l=s.grid,u=a.get("type"),f=hC(l,s).getOtherAxis(s).getGlobalExtent(),c=s.toGlobalCoord(s.dataToCoord(n,!0));if(u&&u!=="none"){var h=jJ(a),d=eee[u](s,c,f);d.style=h,r.graphicKey=d.type,r.pointer=d}var v=km(l.model,i);XJ(n,r,v,i,a,o)},t.prototype.getHandleTransform=function(r,n,i){var a=km(n.axis.grid.model,n,{labelInside:!1});a.labelMargin=i.get(["handle","margin"]);var o=pD(n.axis,r,a);return{x:o[0],y:o[1],rotation:a.rotation+(a.labelDirection<0?Math.PI:0)}},t.prototype.updateHandleTransform=function(r,n,i,a){var o=i.axis,s=o.grid,l=o.getGlobalExtent(!0),u=hC(s,o).getOtherAxis(o).getGlobalExtent(),f=o.dim==="x"?0:1,c=[r.x,r.y];c[f]+=n[f],c[f]=Math.min(l[1],c[f]),c[f]=Math.max(l[0],c[f]);var h=(u[1]+u[0])/2,d=[h,h];d[f]=c[f];var v=[{verticalAlign:"middle"},{align:"center"}];return{x:c[0],y:c[1],rotation:r.rotation,cursorPoint:d,tooltipOption:v[f]}},t}(YJ);function hC(e,t){var r={};return r[t.dim+"AxisIndex"]=t.index,e.getCartesian(r)}var eee={line:function(e,t,r){var n=ZJ([t,r[0]],[t,r[1]],vC(e));return{type:"Line",subPixelOptimize:!0,shape:n}},shadow:function(e,t,r){var n=Math.max(1,e.getBandWidth()),i=r[1]-r[0];return{type:"Rect",shape:QJ([t-n/2,r[0]],[n,i],vC(e))}}};function vC(e){return e.dim==="x"?0:1}const tee=JJ;var ree=function(e){ge(t,e);function t(){var r=e!==null&&e.apply(this,arguments)||this;return r.type=t.type,r}return t.type="axisPointer",t.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}},t}(Mt);const nee=ree;var gi=Et(),iee=R;function gD(e,t,r){if(!He.node){var n=t.getZr();gi(n).records||(gi(n).records={}),aee(n,t);var i=gi(n).records[e]||(gi(n).records[e]={});i.handler=r}}function aee(e,t){if(gi(e).initialized)return;gi(e).initialized=!0,r("click",Rt(pC,"click")),r("mousemove",Rt(pC,"mousemove")),r("globalout",see);function r(n,i){e.on(n,function(a){var o=lee(t);iee(gi(e).records,function(s){s&&i(s,a,o.dispatchAction)}),oee(o.pendings,t)})}}function oee(e,t){var r=e.showTip.length,n=e.hideTip.length,i;r?i=e.showTip[r-1]:n&&(i=e.hideTip[n-1]),i&&(i.dispatchAction=null,t.dispatchAction(i))}function see(e,t,r){e.handler("leave",null,r)}function pC(e,t,r,n){t.handler(e,r,n)}function lee(e){var t={showTip:[],hideTip:[]},r=function(n){var i=t[n.type];i?i.push(n):(n.dispatchAction=r,e.dispatchAction(n))};return{dispatchAction:r,pendings:t}}function Fm(e,t){if(!He.node){var r=t.getZr(),n=(gi(r).records||{})[e];n&&(gi(r).records[e]=null)}}var uee=function(e){ge(t,e);function t(){var r=e!==null&&e.apply(this,arguments)||this;return r.type=t.type,r}return t.prototype.render=function(r,n,i){var a=n.getComponent("tooltip"),o=r.get("triggerOn")||a&&a.get("triggerOn")||"mousemove|click";gD("axisPointer",i,function(s,l,u){o!=="none"&&(s==="leave"||o.indexOf(s)>=0)&&u({type:"updateAxisPointer",currTrigger:s,x:l&&l.offsetX,y:l&&l.offsetY})})},t.prototype.remove=function(r,n){Fm("axisPointer",n)},t.prototype.dispose=function(r,n){Fm("axisPointer",n)},t.type="axisPointer",t}(Mi);const fee=uee;function mD(e,t){var r=[],n=e.seriesIndex,i;if(n==null||!(i=t.getSeriesByIndex(n)))return{point:[]};var a=i.getData(),o=sf(a,e);if(o==null||o<0||ye(o))return{point:[]};var s=a.getItemGraphicEl(o),l=i.coordinateSystem;if(i.getTooltipPosition)r=i.getTooltipPosition(o)||[];else if(l&&l.dataToPoint)if(e.isStacked){var u=l.getBaseAxis(),f=l.getOtherAxis(u),c=f.dim,h=u.dim,d=c==="x"||c==="radius"?1:0,v=a.mapDimension(h),p=[];p[d]=a.get(v,o),p[1-d]=a.get(a.getCalculationInfo("stackResultDimension"),o),r=l.dataToPoint(p)||[]}else r=l.dataToPoint(a.getValues(Ne(l.dimensions,function(g){return a.mapDimension(g)}),o))||[];else if(s){var m=s.getBoundingRect().clone();m.applyTransform(s.transform),r=[m.x+m.width/2,m.y+m.height/2]}return{point:r,el:s}}var gC=Et();function cee(e,t,r){var n=e.currTrigger,i=[e.x,e.y],a=e,o=e.dispatchAction||xt(r.dispatchAction,r),s=t.getComponent("axisPointer").coordSysAxesInfo;if(s){Zc(i)&&(i=mD({seriesIndex:a.seriesIndex,dataIndex:a.dataIndex},t).point);var l=Zc(i),u=a.axesInfo,f=s.axesInfo,c=n==="leave"||Zc(i),h={},d={},v={list:[],map:{}},p={showPointer:Rt(hee,d),showTooltip:Rt(vee,v)};R(s.coordSysMap,function(g,y){var _=l||g.containPoint(i);R(s.coordSysAxesInfo[y],function(b,x){var w=b.axis,S=yee(u,b);if(!c&&_&&(!u||S)){var C=S&&S.value;C==null&&!l&&(C=w.pointToData(i)),C!=null&&mC(b,C,p,!1,h)}})});var m={};return R(f,function(g,y){var _=g.linkGroup;_&&!d[y]&&R(_.axesInfo,function(b,x){var w=d[x];if(b!==g&&w){var S=w.value;_.mapper&&(S=g.axis.scale.parse(_.mapper(S,yC(b),yC(g)))),m[g.key]=S}})}),R(m,function(g,y){mC(f[y],g,p,!0,h)}),pee(d,f,h),gee(v,i,e,o),mee(f,o,r),h}}function mC(e,t,r,n,i){var a=e.axis;if(!(a.scale.isBlank()||!a.containData(t))){if(!e.involveSeries){r.showPointer(e,t);return}var o=dee(t,e),s=o.payloadBatch,l=o.snapToValue;s[0]&&i.seriesIndex==null&&ue(i,s[0]),!n&&e.snap&&a.containData(l)&&l!=null&&(t=l),r.showPointer(e,t,s),r.showTooltip(e,o,l)}}function dee(e,t){var r=t.axis,n=r.dim,i=e,a=[],o=Number.MAX_VALUE,s=-1;return R(t.seriesModels,function(l,u){var f=l.getData().mapDimensionsAll(n),c,h;if(l.getAxisTooltipData){var d=l.getAxisTooltipData(f,e,r);h=d.dataIndices,c=d.nestestValue}else{if(h=l.getData().indicesOfNearest(f[0],e,r.type==="category"?.5:null),!h.length)return;c=l.getData().get(f[0],h[0])}if(!(c==null||!isFinite(c))){var v=e-c,p=Math.abs(v);p<=o&&((p=0&&s<0)&&(o=p,s=v,i=c,a.length=0),R(h,function(m){a.push({seriesIndex:l.seriesIndex,dataIndexInside:m,dataIndex:l.getData().getRawIndex(m)})}))}}),{payloadBatch:a,snapToValue:i}}function hee(e,t,r,n){e[t.key]={value:r,payloadBatch:n}}function vee(e,t,r,n){var i=r.payloadBatch,a=t.axis,o=a.model,s=t.axisPointerModel;if(!(!t.triggerTooltip||!i.length)){var l=t.coordSys.model,u=Vu(l),f=e.map[u];f||(f=e.map[u]={coordSysId:l.id,coordSysIndex:l.componentIndex,coordSysType:l.type,coordSysMainType:l.mainType,dataByAxis:[]},e.list.push(f)),f.dataByAxis.push({axisDim:a.dim,axisIndex:o.componentIndex,axisType:o.type,axisId:o.id,value:n,valueLabelOpt:{precision:s.get(["label","precision"]),formatter:s.get(["label","formatter"])},seriesDataIndices:i.slice()})}}function pee(e,t,r){var n=r.axesInfo=[];R(t,function(i,a){var o=i.axisPointerModel.option,s=e[a];s?(!i.useHandle&&(o.status="show"),o.value=s.value,o.seriesDataIndices=(s.payloadBatch||[]).slice()):!i.useHandle&&(o.status="hide"),o.status==="show"&&n.push({axisDim:i.axis.dim,axisIndex:i.axis.model.componentIndex,value:o.value})})}function gee(e,t,r,n){if(Zc(t)||!e.list.length){n({type:"hideTip"});return}var i=((e.list[0].dataByAxis[0]||{}).seriesDataIndices||[])[0]||{};n({type:"showTip",escapeConnect:!0,x:t[0],y:t[1],tooltipOption:r.tooltipOption,position:r.position,dataIndexInside:i.dataIndexInside,dataIndex:i.dataIndex,seriesIndex:i.seriesIndex,dataByCoordSys:e.list})}function mee(e,t,r){var n=r.getZr(),i="axisPointerLastHighlights",a=gC(n)[i]||{},o=gC(n)[i]={};R(e,function(u,f){var c=u.axisPointerModel.option;c.status==="show"&&u.triggerEmphasis&&R(c.seriesDataIndices,function(h){var d=h.seriesIndex+" | "+h.dataIndex;o[d]=h})});var s=[],l=[];R(a,function(u,f){!o[f]&&l.push(u)}),R(o,function(u,f){!a[f]&&s.push(u)}),l.length&&r.dispatchAction({type:"downplay",escapeConnect:!0,notBlur:!0,batch:l}),s.length&&r.dispatchAction({type:"highlight",escapeConnect:!0,notBlur:!0,batch:s})}function yee(e,t){for(var r=0;r<(e||[]).length;r++){var n=e[r];if(t.axis.dim===n.axisDim&&t.axis.model.componentIndex===n.axisIndex)return n}}function yC(e){var t=e.axis.model,r={},n=r.axisDim=e.axis.dim;return r.axisIndex=r[n+"AxisIndex"]=t.componentIndex,r.axisName=r[n+"AxisName"]=t.name,r.axisId=r[n+"AxisId"]=t.id,r}function Zc(e){return!e||e[0]==null||isNaN(e[0])||e[1]==null||isNaN(e[1])}function yD(e){fD.registerAxisPointerClass("CartesianAxisPointer",tee),e.registerComponentModel(nee),e.registerComponentView(fee),e.registerPreprocessor(function(t){if(t){(!t.axisPointer||t.axisPointer.length===0)&&(t.axisPointer={});var r=t.axisPointer.link;r&&!ye(r)&&(t.axisPointer.link=[r])}}),e.registerProcessor(e.PRIORITY.PROCESSOR.STATISTIC,function(t,r){t.getComponent("axisPointer").coordSysAxesInfo=xJ(t,r)}),e.registerAction({type:"updateAxisPointer",event:"updateAxisPointer",update:":updateAxisPointer"},cee)}function _ee(e){va(BJ),va(yD)}function bee(e,t){var r=Oh(t.get("padding")),n=t.getItemStyle(["color","opacity"]);return n.fill=t.get("backgroundColor"),e=new Gt({shape:{x:e.x-r[3],y:e.y-r[0],width:e.width+r[1]+r[3],height:e.height+r[0]+r[2],r:t.get("borderRadius")},style:n,silent:!0,z2:-1}),e}var wee=function(e){ge(t,e);function t(){var r=e!==null&&e.apply(this,arguments)||this;return r.type=t.type,r}return t.type="tooltip",t.dependencies=["axisPointer"],t.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}},t}(Mt);const See=wee;function _D(e){var t=e.get("confine");return t!=null?!!t:e.get("renderMode")==="richText"}function bD(e){if(He.domSupported){for(var t=document.documentElement.style,r=0,n=e.length;r-1?(s+="top:50%",l+="translateY(-50%) rotate("+(u=a==="left"?-225:-45)+"deg)"):(s+="left:50%",l+="translateX(-50%) rotate("+(u=a==="top"?225:45)+"deg)");var f=u*Math.PI/180,c=o+i,h=c*Math.abs(Math.cos(f))+c*Math.abs(Math.sin(f)),d=Math.round(((h-Math.SQRT2*i)/2+Math.SQRT2*i-(h-c)/2)*100)/100;s+=";"+a+":-"+d+"px";var v=t+" solid "+i+"px;",p=["position:absolute;width:"+o+"px;height:"+o+"px;z-index:-1;",s+";"+l+";","border-bottom:"+v,"border-right:"+v,"background-color:"+n+";"];return'
'}function Eee(e,t){var r="cubic-bezier(0.23,1,0.32,1)",n=" "+e/2+"s "+r,i="opacity"+n+",visibility"+n;return t||(n=" "+e+"s "+r,i+=He.transformSupported?","+s_+n:",left"+n+",top"+n),Tee+":"+i}function _C(e,t,r){var n=e.toFixed(0)+"px",i=t.toFixed(0)+"px";if(!He.transformSupported)return r?"top:"+i+";left:"+n+";":[["top",i],["left",n]];var a=He.transform3dSupported,o="translate"+(a?"3d":"")+"("+n+","+i+(a?",0":"")+")";return r?"top:0;left:0;"+s_+":"+o+";":[["top",0],["left",0],[wD,o]]}function Lee(e){var t=[],r=e.get("fontSize"),n=e.getTextColor();n&&t.push("color:"+n),t.push("font:"+e.getFont()),r&&t.push("line-height:"+Math.round(r*3/2)+"px");var i=e.get("textShadowColor"),a=e.get("textShadowBlur")||0,o=e.get("textShadowOffsetX")||0,s=e.get("textShadowOffsetY")||0;return i&&a&&t.push("text-shadow:"+o+"px "+s+"px "+a+"px "+i),R(["decoration","align"],function(l){var u=e.get(l);u&&t.push("text-"+l+":"+u)}),t.join(";")}function Dee(e,t,r){var n=[],i=e.get("transitionDuration"),a=e.get("backgroundColor"),o=e.get("shadowBlur"),s=e.get("shadowColor"),l=e.get("shadowOffsetX"),u=e.get("shadowOffsetY"),f=e.getModel("textStyle"),c=$E(e,"html"),h=l+"px "+u+"px "+o+"px "+s;return n.push("box-shadow:"+h),t&&i&&n.push(Eee(i,r)),a&&n.push("background-color:"+a),R(["width","color","radius"],function(d){var v="border-"+d,p=vE(v),m=e.get(p);m!=null&&n.push(v+":"+m+(d==="color"?"":"px"))}),n.push(Lee(f)),c!=null&&n.push("padding:"+Oh(c).join("px ")+"px"),n.join(";")+";"}function bC(e,t,r,n,i){var a=t&&t.painter;if(r){var o=a&&a.getViewportRoot();o&&TU(e,o,document.body,n,i)}else{e[0]=n,e[1]=i;var s=a&&a.getViewportRootOffset();s&&(e[0]+=s.offsetLeft,e[1]+=s.offsetTop)}e[2]=e[0]/t.getWidth(),e[3]=e[1]/t.getHeight()}var Iee=function(){function e(t,r,n){if(this._show=!1,this._styleCoord=[0,0,0,0],this._enterable=!0,this._alwaysShowContent=!1,this._firstShow=!0,this._longHide=!0,He.wxa)return null;var i=document.createElement("div");i.domBelongToZr=!0,this.el=i;var a=this._zr=r.getZr(),o=this._appendToBody=n&&n.appendToBody;bC(this._styleCoord,a,o,r.getWidth()/2,r.getHeight()/2),o?document.body.appendChild(i):t.appendChild(i),this._container=t;var s=this;i.onmouseenter=function(){s._enterable&&(clearTimeout(s._hideTimeout),s._show=!0),s._inContent=!0},i.onmousemove=function(l){if(l=l||window.event,!s._enterable){var u=a.handler,f=a.painter.getViewportRoot();Qr(f,l,!0),u.dispatch("mousemove",l)}},i.onmouseleave=function(){s._inContent=!1,s._enterable&&s._show&&s.hideLater(s._hideDelay)}}return e.prototype.update=function(t){var r=this._container,n=Cee(r,"position"),i=r.style;i.position!=="absolute"&&n!=="absolute"&&(i.position="relative");var a=t.get("alwaysShowContent");a&&this._moveIfResized(),this._alwaysShowContent=a,this.el.className=t.get("className")||""},e.prototype.show=function(t,r){clearTimeout(this._hideTimeout),clearTimeout(this._longHideTimeout);var n=this.el,i=n.style,a=this._styleCoord;n.innerHTML?i.cssText=Mee+Dee(t,!this._firstShow,this._longHide)+_C(a[0],a[1],!0)+("border-color:"+ku(r)+";")+(t.get("extraCssText")||"")+(";pointer-events:"+(this._enterable?"auto":"none")):i.display="none",this._show=!0,this._firstShow=!1,this._longHide=!1},e.prototype.setContent=function(t,r,n,i,a){var o=this.el;if(t==null){o.innerHTML="";return}var s="";if(Ee(a)&&n.get("trigger")==="item"&&!_D(n)&&(s=Pee(n,i,a)),Ee(t))o.innerHTML=t+s;else if(t){o.innerHTML="",ye(t)||(t=[t]);for(var l=0;l=0?this._tryShow(a,o):i==="leave"&&this._hide(o))},this))},t.prototype._keepShow=function(){var r=this._tooltipModel,n=this._ecModel,i=this._api,a=r.get("triggerOn");if(this._lastX!=null&&this._lastY!=null&&a!=="none"&&a!=="click"){var o=this;clearTimeout(this._refreshUpdateTimeout),this._refreshUpdateTimeout=setTimeout(function(){!i.isDisposed()&&o.manuallyShowTip(r,n,i,{x:o._lastX,y:o._lastY,dataByCoordSys:o._lastDataByCoordSys})})}},t.prototype.manuallyShowTip=function(r,n,i,a){if(!(a.from===this.uid||He.node||!i.getDom())){var o=xC(a,i);this._ticket="";var s=a.dataByCoordSys,l=Hee(a,n,i);if(l){var u=l.el.getBoundingRect().clone();u.applyTransform(l.el.transform),this._tryShow({offsetX:u.x+u.width/2,offsetY:u.y+u.height/2,target:l.el,position:a.position,positionDefault:"bottom"},o)}else if(a.tooltip&&a.x!=null&&a.y!=null){var f=kee;f.x=a.x,f.y=a.y,f.update(),dt(f).tooltipConfig={name:null,option:a.tooltip},this._tryShow({offsetX:a.x,offsetY:a.y,target:f},o)}else if(s)this._tryShow({offsetX:a.x,offsetY:a.y,position:a.position,dataByCoordSys:s,tooltipOption:a.tooltipOption},o);else if(a.seriesIndex!=null){if(this._manuallyAxisShowTip(r,n,i,a))return;var c=mD(a,n),h=c.point[0],d=c.point[1];h!=null&&d!=null&&this._tryShow({offsetX:h,offsetY:d,target:c.el,position:a.position,positionDefault:"bottom"},o)}else a.x!=null&&a.y!=null&&(i.dispatchAction({type:"updateAxisPointer",x:a.x,y:a.y}),this._tryShow({offsetX:a.x,offsetY:a.y,position:a.position,target:i.getZr().findHover(a.x,a.y).target},o))}},t.prototype.manuallyHideTip=function(r,n,i,a){var o=this._tooltipContent;this._tooltipModel&&o.hideLater(this._tooltipModel.get("hideDelay")),this._lastX=this._lastY=this._lastDataByCoordSys=null,a.from!==this.uid&&this._hide(xC(a,i))},t.prototype._manuallyAxisShowTip=function(r,n,i,a){var o=a.seriesIndex,s=a.dataIndex,l=n.getComponent("axisPointer").coordSysAxesInfo;if(!(o==null||s==null||l==null)){var u=n.getSeriesByIndex(o);if(u){var f=u.getData(),c=bl([f.getItemModel(s),u,(u.coordinateSystem||{}).model],this._tooltipModel);if(c.get("trigger")==="axis")return i.dispatchAction({type:"updateAxisPointer",seriesIndex:o,dataIndex:s,position:a.position}),!0}}},t.prototype._tryShow=function(r,n){var i=r.target,a=this._tooltipModel;if(a){this._lastX=r.offsetX,this._lastY=r.offsetY;var o=r.dataByCoordSys;if(o&&o.length)this._showAxisTooltip(o,r);else if(i){this._lastDataByCoordSys=null;var s,l;Ll(i,function(u){if(dt(u).dataIndex!=null)return s=u,!0;if(dt(u).tooltipConfig!=null)return l=u,!0},!0),s?this._showSeriesItemTooltip(r,s,n):l?this._showComponentItemTooltip(r,l,n):this._hide(n)}else this._lastDataByCoordSys=null,this._hide(n)}},t.prototype._showOrMove=function(r,n){var i=r.get("showDelay");n=xt(n,this),clearTimeout(this._showTimout),i>0?this._showTimout=setTimeout(n,i):n()},t.prototype._showAxisTooltip=function(r,n){var i=this._ecModel,a=this._tooltipModel,o=[n.offsetX,n.offsetY],s=bl([n.tooltipOption],a),l=this._renderMode,u=[],f=Fu("section",{blocks:[],noHeader:!0}),c=[],h=new up;R(r,function(y){R(y.dataByAxis,function(_){var b=i.getComponent(_.axisDim+"Axis",_.axisIndex),x=_.value;if(!(!b||x==null)){var w=vD(x,b.axis,i,_.seriesDataIndices,_.valueLabelOpt),S=Fu("section",{header:w,noHeader:!Gn(w),sortBlocks:!0,blocks:[]});f.blocks.push(S),R(_.seriesDataIndices,function(C){var M=i.getSeriesByIndex(C.seriesIndex),A=C.dataIndexInside,P=M.getDataParams(A);if(!(P.dataIndex<0)){P.axisDim=_.axisDim,P.axisIndex=_.axisIndex,P.axisType=_.axisType,P.axisId=_.axisId,P.axisValue=n_(b.axis,{value:x}),P.axisValueLabel=w,P.marker=h.makeTooltipMarker("item",ku(P.color),l);var E=FS(M.formatTooltip(A,!0,null)),L=E.frag;if(L){var O=bl([M],a).get("valueFormatter");S.blocks.push(O?ue({valueFormatter:O},L):L)}E.text&&c.push(E.text),u.push(P)}})}})}),f.blocks.reverse(),c.reverse();var d=n.position,v=s.get("order"),p=WS(f,h,l,v,i.get("useUTC"),s.get("textStyle"));p&&c.unshift(p);var m=l==="richText"?` -`:"
",g=c.join(m);this._showOrMove(s,function(){this._updateContentNotChangedOnAxis(r,u)?this._updatePosition(s,d,o[0],o[1],this._tooltipContent,u):this._showTooltipContent(s,g,u,Math.random()+"",o[0],o[1],d,null,h)})},t.prototype._showSeriesItemTooltip=function(r,n,i){var a=this._ecModel,o=dt(n),s=o.seriesIndex,l=a.getSeriesByIndex(s),u=o.dataModel||l,f=o.dataIndex,c=o.dataType,h=u.getData(c),d=this._renderMode,v=r.positionDefault,p=bl([h.getItemModel(f),u,l&&(l.coordinateSystem||{}).model],this._tooltipModel,v?{position:v}:null),m=p.get("trigger");if(!(m!=null&&m!=="item")){var g=u.getDataParams(f,c),y=new up;g.marker=y.makeTooltipMarker("item",ku(g.color),d);var _=FS(u.formatTooltip(f,!1,c)),b=p.get("order"),x=p.get("valueFormatter"),w=_.frag,S=w?WS(x?ue({valueFormatter:x},w):w,y,d,b,a.get("useUTC"),p.get("textStyle")):_.text,C="item_"+u.name+"_"+f;this._showOrMove(p,function(){this._showTooltipContent(p,S,g,C,r.offsetX,r.offsetY,r.position,r.target,y)}),i({type:"showTip",dataIndexInside:f,dataIndex:h.getRawIndex(f),seriesIndex:s,from:this.uid})}},t.prototype._showComponentItemTooltip=function(r,n,i){var a=dt(n),o=a.tooltipConfig,s=o.option||{};if(Ee(s)){var l=s;s={content:l,formatter:l}}var u=[s],f=this._ecModel.getComponent(a.componentMainType,a.componentIndex);f&&u.push(f),u.push({formatter:s.content});var c=r.positionDefault,h=bl(u,this._tooltipModel,c?{position:c}:null),d=h.get("content"),v=Math.random()+"",p=new up;this._showOrMove(h,function(){var m=tt(h.get("formatterParams")||{});this._showTooltipContent(h,d,m,v,r.offsetX,r.offsetY,r.position,n,p)}),i({type:"showTip",from:this.uid})},t.prototype._showTooltipContent=function(r,n,i,a,o,s,l,u,f){if(this._ticket="",!(!r.get("showContent")||!r.get("show"))){var c=this._tooltipContent;c.setEnterable(r.get("enterable"));var h=r.get("formatter");l=l||r.get("position");var d=n,v=this._getNearestPoint([o,s],i,r.get("trigger"),r.get("borderColor")),p=v.color;if(h)if(Ee(h)){var m=r.ecModel.get("useUTC"),g=ye(i)?i[0]:i,y=g&&g.axisType&&g.axisType.indexOf("time")>=0;d=h,y&&(d=Ph(g.axisValue,d,m)),d=pE(d,i,!0)}else if(Ye(h)){var _=xt(function(b,x){b===this._ticket&&(c.setContent(x,f,r,p,l),this._updatePosition(r,l,o,s,c,i,u))},this);this._ticket=a,d=h(i,a,_)}else d=h;c.setContent(d,f,r,p,l),c.show(r,p),this._updatePosition(r,l,o,s,c,i,u)}},t.prototype._getNearestPoint=function(r,n,i,a){if(i==="axis"||ye(n))return{color:a||(this._renderMode==="html"?"#fff":"none")};if(!ye(n))return{color:a||n.color||n.borderColor}},t.prototype._updatePosition=function(r,n,i,a,o,s,l){var u=this._api.getWidth(),f=this._api.getHeight();n=n||r.get("position");var c=o.getSize(),h=r.get("align"),d=r.get("verticalAlign"),v=l&&l.getBoundingRect().clone();if(l&&v.applyTransform(l.transform),Ye(n)&&(n=n([i,a],s,o.el,v,{viewSize:[u,f],contentSize:c.slice()})),ye(n))i=yt(n[0],u),a=yt(n[1],f);else if(Re(n)){var p=n;p.width=c[0],p.height=c[1];var m=Ls(p,{width:u,height:f});i=m.x,a=m.y,h=null,d=null}else if(Ee(n)&&l){var g=$ee(n,v,c,r.get("borderWidth"));i=g[0],a=g[1]}else{var g=Bee(i,a,o,u,f,h?null:20,d?null:20);i=g[0],a=g[1]}if(h&&(i-=CC(h)?c[0]/2:h==="right"?c[0]:0),d&&(a-=CC(d)?c[1]/2:d==="bottom"?c[1]:0),_D(r)){var g=Fee(i,a,o,u,f);i=g[0],a=g[1]}o.moveTo(i,a)},t.prototype._updateContentNotChangedOnAxis=function(r,n){var i=this._lastDataByCoordSys,a=this._cbParamsList,o=!!i&&i.length===r.length;return o&&R(i,function(s,l){var u=s.dataByAxis||[],f=r[l]||{},c=f.dataByAxis||[];o=o&&u.length===c.length,o&&R(u,function(h,d){var v=c[d]||{},p=h.seriesDataIndices||[],m=v.seriesDataIndices||[];o=o&&h.value===v.value&&h.axisType===v.axisType&&h.axisId===v.axisId&&p.length===m.length,o&&R(p,function(g,y){var _=m[y];o=o&&g.seriesIndex===_.seriesIndex&&g.dataIndex===_.dataIndex}),a&&R(h.seriesDataIndices,function(g){var y=g.seriesIndex,_=n[y],b=a[y];_&&b&&b.data!==_.data&&(o=!1)})})}),this._lastDataByCoordSys=r,this._cbParamsList=n,!!o},t.prototype._hide=function(r){this._lastDataByCoordSys=null,r({type:"hideTip",from:this.uid})},t.prototype.dispose=function(r,n){He.node||!n.getDom()||(wm(this,"_updatePosition"),this._tooltipContent.dispose(),Fm("itemTooltip",n))},t.type="tooltip",t}(Mi);function bl(e,t,r){var n=t.ecModel,i;r?(i=new sr(r,n,n),i=new sr(t.option,i,n)):i=t;for(var a=e.length-1;a>=0;a--){var o=e[a];o&&(o instanceof sr&&(o=o.get("tooltip",!0)),Ee(o)&&(o={formatter:o}),o&&(i=new sr(o,i,n)))}return i}function xC(e,t){return e.dispatchAction||xt(t.dispatchAction,t)}function Bee(e,t,r,n,i,a,o){var s=r.getSize(),l=s[0],u=s[1];return a!=null&&(e+l+a+2>n?e-=l+a:e+=a),o!=null&&(t+u+o>i?t-=u+o:t+=o),[e,t]}function Fee(e,t,r,n,i){var a=r.getSize(),o=a[0],s=a[1];return e=Math.min(e+o,n)-o,t=Math.min(t+s,i)-s,e=Math.max(e,0),t=Math.max(t,0),[e,t]}function $ee(e,t,r,n){var i=r[0],a=r[1],o=Math.ceil(Math.SQRT2*n)+8,s=0,l=0,u=t.width,f=t.height;switch(e){case"inside":s=t.x+u/2-i/2,l=t.y+f/2-a/2;break;case"top":s=t.x+u/2-i/2,l=t.y-a-o;break;case"bottom":s=t.x+u/2-i/2,l=t.y+f+o;break;case"left":s=t.x-i-o,l=t.y+f/2-a/2;break;case"right":s=t.x+u+o,l=t.y+f/2-a/2}return[s,l]}function CC(e){return e==="center"||e==="middle"}function Hee(e,t,r){var n=v0(e).queryOptionMap,i=n.keys()[0];if(!(!i||i==="series")){var a=lf(t,i,n.get(i),{useDefault:!1,enableAll:!1,enableNone:!1}),o=a.models[0];if(o){var s=r.getViewOfComponentModel(o),l;if(s.group.traverse(function(u){var f=dt(u).tooltipConfig;if(f&&f.name===e.name)return l=u,!0}),l)return{componentMainType:i,componentIndex:o.componentIndex,el:l}}}}const zee=Nee;function Vee(e){va(yD),e.registerComponentModel(See),e.registerComponentView(zee),e.registerAction({type:"showTip",event:"showTip",update:"tooltip:manuallyShowTip"},Er),e.registerAction({type:"hideTip",event:"hideTip",update:"tooltip:manuallyHideTip"},Er)}var Wee=function(e){ge(t,e);function t(){var r=e!==null&&e.apply(this,arguments)||this;return r.type=t.type,r.layoutMode={type:"box",ignoreSize:!0},r}return t.type="title",t.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"}},t}(Mt),Gee=function(e){ge(t,e);function t(){var r=e!==null&&e.apply(this,arguments)||this;return r.type=t.type,r}return t.prototype.render=function(r,n,i){if(this.group.removeAll(),!!r.get("show")){var a=this.group,o=r.getModel("textStyle"),s=r.getModel("subtextStyle"),l=r.get("textAlign"),u=Ze(r.get("textBaseline"),r.get("textVerticalAlign")),f=new mr({style:ha(o,{text:r.get("text"),fill:o.getTextColor()},{disableBox:!0}),z2:10}),c=f.getBoundingRect(),h=r.get("subtext"),d=new mr({style:ha(s,{text:h,fill:s.getTextColor(),y:c.height+r.get("itemGap"),verticalAlign:"top"},{disableBox:!0}),z2:10}),v=r.get("link"),p=r.get("sublink"),m=r.get("triggerEvent",!0);f.silent=!v&&!m,d.silent=!p&&!m,v&&f.on("click",function(){bS(v,"_"+r.get("target"))}),p&&d.on("click",function(){bS(p,"_"+r.get("subtarget"))}),dt(f).eventData=dt(d).eventData=m?{componentType:"title",componentIndex:r.componentIndex}:null,a.add(f),h&&a.add(d);var g=a.getBoundingRect(),y=r.getBoxLayoutParams();y.width=g.width,y.height=g.height;var _=Ls(y,{width:i.getWidth(),height:i.getHeight()},r.get("padding"));l||(l=r.get("left")||r.get("right"),l==="middle"&&(l="center"),l==="right"?_.x+=_.width:l==="center"&&(_.x+=_.width/2)),u||(u=r.get("top")||r.get("bottom"),u==="center"&&(u="middle"),u==="bottom"?_.y+=_.height:u==="middle"&&(_.y+=_.height/2),u=u||"top"),a.x=_.x,a.y=_.y,a.markRedraw();var b={align:l,verticalAlign:u};f.setStyle(b),d.setStyle(b),g=a.getBoundingRect();var x=_.margin,w=r.getItemStyle(["color","opacity"]);w.fill=r.get("backgroundColor");var S=new Gt({shape:{x:g.x-x[3],y:g.y-x[0],width:g.width+x[1]+x[3],height:g.height+x[0]+x[2],r:r.get("borderRadius")},style:w,subPixelOptimize:!0,silent:!0});a.add(S)}},t.type="title",t}(Mi);function Uee(e){e.registerComponentModel(Wee),e.registerComponentView(Gee)}var Yee=function(e,t){if(t==="all")return{type:"all",title:e.getLocaleModel().get(["legend","selector","all"])};if(t==="inverse")return{type:"inverse",title:e.getLocaleModel().get(["legend","selector","inverse"])}},jee=function(e){ge(t,e);function t(){var r=e!==null&&e.apply(this,arguments)||this;return r.type=t.type,r.layoutMode={type:"box",ignoreSize:!0},r}return t.prototype.init=function(r,n,i){this.mergeDefaultAndTheme(r,i),r.selected=r.selected||{},this._updateSelector(r)},t.prototype.mergeOption=function(r,n){e.prototype.mergeOption.call(this,r,n),this._updateSelector(r)},t.prototype._updateSelector=function(r){var n=r.selector,i=this.ecModel;n===!0&&(n=r.selector=["all","inverse"]),ye(n)&&R(n,function(a,o){Ee(a)&&(a={type:a}),n[o]=st(a,Yee(i,a.type))})},t.prototype.optionUpdated=function(){this._updateData(this.ecModel);var r=this._data;if(r[0]&&this.get("selectedMode")==="single"){for(var n=!1,i=0;i=0},t.prototype.getOrient=function(){return this.get("orient")==="vertical"?{index:1,name:"vertical"}:{index:0,name:"horizontal"}},t.type="legend.plain",t.dependencies=["series"],t.defaultOption={z:4,show:!0,orient:"horizontal",left:"center",top:0,align:"auto",backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderRadius:0,borderWidth:0,padding:5,itemGap:10,itemWidth:25,itemHeight:14,symbolRotate:"inherit",symbolKeepAspect:!0,inactiveColor:"#ccc",inactiveBorderColor:"#ccc",inactiveBorderWidth:"auto",itemStyle:{color:"inherit",opacity:"inherit",borderColor:"inherit",borderWidth:"auto",borderCap:"inherit",borderJoin:"inherit",borderDashOffset:"inherit",borderMiterLimit:"inherit"},lineStyle:{width:"auto",color:"inherit",inactiveColor:"#ccc",inactiveWidth:2,opacity:"inherit",type:"inherit",cap:"inherit",join:"inherit",dashOffset:"inherit",miterLimit:"inherit"},textStyle:{color:"#333"},selectedMode:!0,selector:!1,selectorLabel:{show:!0,borderRadius:10,padding:[3,5,3,5],fontSize:12,fontFamily:"sans-serif",color:"#666",borderWidth:1,borderColor:"#666"},emphasis:{selectorLabel:{show:!0,color:"#eee",backgroundColor:"#666"}},selectorPosition:"auto",selectorItemGap:7,selectorButtonGap:10,tooltip:{show:!1}},t}(Mt);const $m=jee;var jo=Ot,Hm=R,wc=Ur,qee=function(e){ge(t,e);function t(){var r=e!==null&&e.apply(this,arguments)||this;return r.type=t.type,r.newlineDisabled=!1,r}return t.prototype.init=function(){this.group.add(this._contentGroup=new wc),this.group.add(this._selectorGroup=new wc),this._isFirstRender=!0},t.prototype.getContentGroup=function(){return this._contentGroup},t.prototype.getSelectorGroup=function(){return this._selectorGroup},t.prototype.render=function(r,n,i){var a=this._isFirstRender;if(this._isFirstRender=!1,this.resetInner(),!!r.get("show",!0)){var o=r.get("align"),s=r.get("orient");(!o||o==="auto")&&(o=r.get("left")==="right"&&s==="vertical"?"right":"left");var l=r.get("selector",!0),u=r.get("selectorPosition",!0);l&&(!u||u==="auto")&&(u=s==="horizontal"?"end":"start"),this.renderInner(o,r,n,i,l,s,u);var f=r.getBoxLayoutParams(),c={width:i.getWidth(),height:i.getHeight()},h=r.get("padding"),d=Ls(f,c,h),v=this.layoutInner(r,o,d,a,l,u),p=Ls(ht({width:v.width,height:v.height},f),c,h);this.group.x=p.x-v.x,this.group.y=p.y-v.y,this.group.markRedraw(),this.group.add(this._backgroundEl=bee(v,r))}},t.prototype.resetInner=function(){this.getContentGroup().removeAll(),this._backgroundEl&&this.group.remove(this._backgroundEl),this.getSelectorGroup().removeAll()},t.prototype.renderInner=function(r,n,i,a,o,s,l){var u=this.getContentGroup(),f=je(),c=n.get("selectedMode"),h=[];i.eachRawSeries(function(d){!d.get("legendHoverLink")&&h.push(d.id)}),Hm(n.getData(),function(d,v){var p=d.get("name");if(!this.newlineDisabled&&(p===""||p===` -`)){var m=new wc;m.newline=!0,u.add(m);return}var g=i.getSeriesByName(p)[0];if(!f.get(p))if(g){var y=g.getData(),_=y.getVisual("legendLineStyle")||{},b=y.getVisual("legendIcon"),x=y.getVisual("style"),w=this._createItem(g,p,v,d,n,r,_,x,b,c,a);w.on("click",jo(TC,p,null,a,h)).on("mouseover",jo(zm,g.name,null,a,h)).on("mouseout",jo(Vm,g.name,null,a,h)),f.set(p,!0)}else i.eachRawSeries(function(S){if(!f.get(p)&&S.legendVisualProvider){var C=S.legendVisualProvider;if(!C.containName(p))return;var M=C.indexOfName(p),A=C.getItemVisual(M,"style"),P=C.getItemVisual(M,"legendIcon"),E=uo(A.fill);E&&E[3]===0&&(E[3]=.2,A=ue(ue({},A),{fill:s0(E,"rgba")}));var L=this._createItem(S,p,v,d,n,r,{},A,P,c,a);L.on("click",jo(TC,null,p,a,h)).on("mouseover",jo(zm,null,p,a,h)).on("mouseout",jo(Vm,null,p,a,h)),f.set(p,!0)}},this)},this),o&&this._createSelector(o,n,a,s,l)},t.prototype._createSelector=function(r,n,i,a,o){var s=this.getSelectorGroup();Hm(r,function(u){var f=u.type,c=new mr({style:{x:0,y:0,align:"center",verticalAlign:"middle"},onclick:function(){i.dispatchAction({type:f==="all"?"legendAllSelect":"legendInverseSelect"})}});s.add(c);var h=n.getModel("selectorLabel"),d=n.getModel(["emphasis","selectorLabel"]);E0(c,{normal:h,emphasis:d},{defaultText:u.title}),um(c)})},t.prototype._createItem=function(r,n,i,a,o,s,l,u,f,c,h){var d=r.visualDrawType,v=o.get("itemWidth"),p=o.get("itemHeight"),m=o.isSelected(n),g=a.get("symbolRotate"),y=a.get("symbolKeepAspect"),_=a.get("icon");f=_||f||"roundRect";var b=Kee(f,a,l,u,d,m,h),x=new wc,w=a.getModel("textStyle");if(Ye(r.getLegendIcon)&&(!_||_==="inherit"))x.add(r.getLegendIcon({itemWidth:v,itemHeight:p,icon:f,iconRotate:g,itemStyle:b.itemStyle,lineStyle:b.lineStyle,symbolKeepAspect:y}));else{var S=_==="inherit"&&r.getData().getVisual("symbol")?g==="inherit"?r.getData().getVisual("symbolRotate"):g:0;x.add(Xee({itemWidth:v,itemHeight:p,icon:f,iconRotate:S,itemStyle:b.itemStyle,lineStyle:b.lineStyle,symbolKeepAspect:y}))}var C=s==="left"?v+5:-5,M=s,A=o.get("formatter"),P=n;Ee(A)&&A?P=A.replace("{name}",n??""):Ye(A)&&(P=A(n));var E=m?w.getTextColor():a.get("inactiveColor");x.add(new mr({style:ha(w,{text:P,x:C,y:p/2,fill:E,align:M,verticalAlign:"middle"},{inheritColor:E})}));var L=new Gt({shape:x.getBoundingRect(),invisible:!0}),O=a.getModel("tooltip");return O.get("show")&&A0({el:L,componentModel:o,itemName:n,itemTooltipOption:O.option}),x.add(L),x.eachChild(function(N){N.silent=!0}),L.silent=!c,this.getContentGroup().add(x),um(x),x.__legendDataIndex=i,x},t.prototype.layoutInner=function(r,n,i,a,o,s){var l=this.getContentGroup(),u=this.getSelectorGroup();ru(r.get("orient"),l,r.get("itemGap"),i.width,i.height);var f=l.getBoundingRect(),c=[-f.x,-f.y];if(u.markRedraw(),l.markRedraw(),o){ru("horizontal",u,r.get("selectorItemGap",!0));var h=u.getBoundingRect(),d=[-h.x,-h.y],v=r.get("selectorButtonGap",!0),p=r.getOrient().index,m=p===0?"width":"height",g=p===0?"height":"width",y=p===0?"y":"x";s==="end"?d[p]+=f[m]+v:c[p]+=h[m]+v,d[1-p]+=f[g]/2-h[g]/2,u.x=d[0],u.y=d[1],l.x=c[0],l.y=c[1];var _={x:0,y:0};return _[m]=f[m]+v+h[m],_[g]=Math.max(f[g],h[g]),_[y]=Math.min(0,h[y]+d[1-p]),_}else return l.x=c[0],l.y=c[1],this.group.getBoundingRect()},t.prototype.remove=function(){this.getContentGroup().removeAll(),this._isFirstRender=!0},t.type="legend.plain",t}(Mi);function Kee(e,t,r,n,i,a,o){function s(m,g){m.lineWidth==="auto"&&(m.lineWidth=g.lineWidth>0?2:0),Hm(m,function(y,_){m[_]==="inherit"&&(m[_]=g[_])})}var l=t.getModel("itemStyle"),u=l.getItemStyle(),f=e.lastIndexOf("empty",0)===0?"fill":"stroke",c=l.getShallow("decal");u.decal=!c||c==="inherit"?n.decal:Mm(c,o),u.fill==="inherit"&&(u.fill=n[i]),u.stroke==="inherit"&&(u.stroke=n[f]),u.opacity==="inherit"&&(u.opacity=(i==="fill"?n:r).opacity),s(u,n);var h=t.getModel("lineStyle"),d=h.getLineStyle();if(s(d,r),u.fill==="auto"&&(u.fill=n.fill),u.stroke==="auto"&&(u.stroke=n.fill),d.stroke==="auto"&&(d.stroke=n.fill),!a){var v=t.get("inactiveBorderWidth"),p=u[f];u.lineWidth=v==="auto"?n.lineWidth>0&&p?2:0:u.lineWidth,u.fill=t.get("inactiveColor"),u.stroke=t.get("inactiveBorderColor"),d.stroke=h.get("inactiveColor"),d.lineWidth=h.get("inactiveWidth")}return{itemStyle:u,lineStyle:d}}function Xee(e){var t=e.icon||"roundRect",r=j0(t,0,0,e.itemWidth,e.itemHeight,e.itemStyle.fill,e.symbolKeepAspect);return r.setStyle(e.itemStyle),r.rotation=(e.iconRotate||0)*Math.PI/180,r.setOrigin([e.itemWidth/2,e.itemHeight/2]),t.indexOf("empty")>-1&&(r.style.stroke=r.style.fill,r.style.fill="#fff",r.style.lineWidth=2),r}function TC(e,t,r,n){Vm(e,t,r,n),r.dispatchAction({type:"legendToggleSelect",name:e??t}),zm(e,t,r,n)}function xD(e){for(var t=e.getZr().storage.getDisplayList(),r,n=0,i=t.length;ni[o],m=[-d.x,-d.y];n||(m[a]=f[u]);var g=[0,0],y=[-v.x,-v.y],_=Ze(r.get("pageButtonGap",!0),r.get("itemGap",!0));if(p){var b=r.get("pageButtonPosition",!0);b==="end"?y[a]+=i[o]-v[o]:g[a]+=v[o]+_}y[1-a]+=d[s]/2-v[s]/2,f.setPosition(m),c.setPosition(g),h.setPosition(y);var x={x:0,y:0};if(x[o]=p?i[o]:d[o],x[s]=Math.max(d[s],v[s]),x[l]=Math.min(0,v[l]+y[1-a]),c.__rectSize=i[o],p){var w={x:0,y:0};w[o]=Math.max(i[o]-v[o]-_,0),w[s]=x[s],c.setClipPath(new Gt({shape:w})),c.__rectSize=w[o]}else h.eachChild(function(C){C.attr({invisible:!0,silent:!0})});var S=this._getPageInfo(r);return S.pageIndex!=null&&Or(f,{x:S.contentPosition[0],y:S.contentPosition[1]},p?r:null),this._updatePageInfoView(r,S),x},t.prototype._pageGo=function(r,n,i){var a=this._getPageInfo(n)[r];a!=null&&i.dispatchAction({type:"legendScroll",scrollDataIndex:a,legendId:n.id})},t.prototype._updatePageInfoView=function(r,n){var i=this._controllerGroup;R(["pagePrev","pageNext"],function(f){var c=f+"DataIndex",h=n[c]!=null,d=i.childOfName(f);d&&(d.setStyle("fill",h?r.get("pageIconColor",!0):r.get("pageIconInactiveColor",!0)),d.cursor=h?"pointer":"default")});var a=i.childOfName("pageText"),o=r.get("pageFormatter"),s=n.pageIndex,l=s!=null?s+1:0,u=n.pageCount;a&&o&&a.setStyle("text",Ee(o)?o.replace("{current}",l==null?"":l+"").replace("{total}",u==null?"":u+""):o({current:l,total:u}))},t.prototype._getPageInfo=function(r){var n=r.get("scrollDataIndex",!0),i=this.getContentGroup(),a=this._containerGroup.__rectSize,o=r.getOrient().index,s=Rp[o],l=kp[o],u=this._findTargetItemIndex(n),f=i.children(),c=f[u],h=f.length,d=h?1:0,v={contentPosition:[i.x,i.y],pageCount:d,pageIndex:d-1,pagePrevDataIndex:null,pageNextDataIndex:null};if(!c)return v;var p=b(c);v.contentPosition[o]=-p.s;for(var m=u+1,g=p,y=p,_=null;m<=h;++m)_=b(f[m]),(!_&&y.e>g.s+a||_&&!x(_,g.s))&&(y.i>g.i?g=y:g=_,g&&(v.pageNextDataIndex==null&&(v.pageNextDataIndex=g.i),++v.pageCount)),y=_;for(var m=u-1,g=p,y=p,_=null;m>=-1;--m)_=b(f[m]),(!_||!x(y,_.s))&&g.i=S&&w.s<=S+a}},t.prototype._findTargetItemIndex=function(r){if(!this._showController)return 0;var n,i=this.getContentGroup(),a;return i.eachChild(function(o,s){var l=o.__legendDataIndex;a==null&&l!=null&&(a=s),l===r&&(n=s)}),n??a},t.type="legend.scroll",t}(CD);const rte=tte;function nte(e){e.registerAction("legendScroll","legendscroll",function(t,r){var n=t.scrollDataIndex;n!=null&&r.eachComponent({mainType:"legend",subType:"scroll",query:t},function(i){i.setScrollDataIndex(n)})})}function ite(e){va(TD),e.registerComponentModel(ete),e.registerComponentView(rte),nte(e)}function ate(e){va(TD),va(ite)}va([tJ,$Q,GJ,vQ,Uee,Vee,ate,_ee]);function ote(e,t,r){const n=Z0(document.getElementById(e),"macarons");n.showLoading();const i={title:{text:"Network Traffic",subtext:"today",left:"center"},tooltip:{trigger:"item",formatter:function(a){return Mu.fileSize(a.data.value)+" ("+a.percent+"%)"}},legend:{orient:"vertical",left:"left",data:["Traffic In","Traffic Out"]},series:[{type:"pie",radius:"55%",center:["50%","60%"],data:[{value:t,name:"Traffic In"},{value:r,name:"Traffic Out"}],emphasis:{itemStyle:{shadowBlur:10,shadowOffsetX:0,shadowColor:"rgba(0, 0, 0, 0.5)"}}}]};n.setOption(i),n.hideLoading()}function ste(e,t){const r=Z0(document.getElementById(e),"macarons");r.showLoading();const n={title:{text:"Proxies",subtext:"now",left:"center"},tooltip:{trigger:"item",formatter:function(i){return String(i.data.value)}},legend:{orient:"vertical",left:"left",data:[]},series:[{type:"pie",radius:"55%",center:["50%","60%"],data:[],emphasis:{itemStyle:{shadowBlur:10,shadowOffsetX:0,shadowColor:"rgba(0, 0, 0, 0.5)"}}}]};t.proxyTypeCount.tcp!=null&&t.proxyTypeCount.tcp!=0&&(n.series[0].data.push({value:t.proxyTypeCount.tcp,name:"TCP"}),n.legend.data.push("TCP")),t.proxyTypeCount.udp!=null&&t.proxyTypeCount.udp!=0&&(n.series[0].data.push({value:t.proxyTypeCount.udp,name:"UDP"}),n.legend.data.push("UDP")),t.proxyTypeCount.http!=null&&t.proxyTypeCount.http!=0&&(n.series[0].data.push({value:t.proxyTypeCount.http,name:"HTTP"}),n.legend.data.push("HTTP")),t.proxyTypeCount.https!=null&&t.proxyTypeCount.https!=0&&(n.series[0].data.push({value:t.proxyTypeCount.https,name:"HTTPS"}),n.legend.data.push("HTTPS")),t.proxyTypeCount.stcp!=null&&t.proxyTypeCount.stcp!=0&&(n.series[0].data.push({value:t.proxyTypeCount.stcp,name:"STCP"}),n.legend.data.push("STCP")),t.proxyTypeCount.sudp!=null&&t.proxyTypeCount.sudp!=0&&(n.series[0].data.push({value:t.proxyTypeCount.sudp,name:"SUDP"}),n.legend.data.push("SUDP")),t.proxyTypeCount.xtcp!=null&&t.proxyTypeCount.xtcp!=0&&(n.series[0].data.push({value:t.proxyTypeCount.xtcp,name:"XTCP"}),n.legend.data.push("XTCP")),r.setOption(n),r.hideLoading()}function lte(e,t,r){const n={width:"600px",height:"400px"},i=Z0(document.getElementById(e),"macarons",n);i.showLoading(),t=t.reverse(),r=r.reverse();let a=new Date;a=new Date(a.getFullYear(),a.getMonth(),a.getDate()-6);const o=[];for(let l=0;l<7;l++)o.push(a.getFullYear()+"-"+(a.getMonth()+1)+"-"+a.getDate()),a=new Date(a.getFullYear(),a.getMonth(),a.getDate()+1);const s={tooltip:{trigger:"axis",axisPointer:{type:"shadow"},formatter:function(l){let u="";l.length>0&&(u+=l[0].name+"
");for(const f of l){const c='';u+=c+f.seriesName+": "+Mu.fileSize(f.value)+"
"}return u}},legend:{data:["Traffic In","Traffic Out"]},grid:{left:"3%",right:"4%",bottom:"3%",containLabel:!0},xAxis:[{type:"category",data:o}],yAxis:[{type:"value",axisLabel:{formatter:function(l){return Mu.fileSize(l)}}}],series:[{name:"Traffic In",type:"bar",data:t},{name:"Traffic Out",type:"bar",data:r}]};i.setOption(s),i.hideLoading()}const PC=ie({__name:"LongSpan",props:{content:{},length:{}},setup(e){return(t,r)=>{const n=Hs;return G(),ce(ft,null,[Z(n,{content:t.content,placement:"top"},{default:j(()=>[qt(ee("span",null,be(t.content.slice(0,t.length))+"...",513),[[Kn,t.content.length>t.length]])]),_:1},8,["content"]),qt(ee("span",null,be(t.content),513),[[Kn,t.content.length<30]])],64)}}}),ute={class:"source"},fte=ee("div",{id:"traffic",style:{width:"400px",height:"250px","margin-bottom":"30px"}},null,-1),cte=ee("div",{id:"proxies",style:{width:"400px",height:"250px"}},null,-1),dte=ie({__name:"ServerOverview",setup(e){let t=$({version:"",bindPort:0,kcpBindPort:0,quicBindPort:0,vhostHTTPPort:0,vhostHTTPSPort:0,tcpmuxHTTPConnectPort:0,subdomainHost:"",maxPoolCount:0,maxPortsPerClient:"",allowPortsStr:"",tlsForce:!1,heartbeatTimeout:0,clientCounts:0,curConns:0,proxyCounts:0});return(()=>{fetch("../api/serverinfo",{credentials:"include"}).then(n=>n.json()).then(n=>{t.value.version=n.version,t.value.bindPort=n.bindPort,t.value.kcpBindPort=n.kcpBindPort,t.value.quicBindPort=n.quicBindPort,t.value.vhostHTTPPort=n.vhostHTTPPort,t.value.vhostHTTPSPort=n.vhostHTTPSPort,t.value.tcpmuxHTTPConnectPort=n.tcpmuxHTTPConnectPort,t.value.subdomainHost=n.subdomainHost,t.value.maxPoolCount=n.maxPoolCount,t.value.maxPortsPerClient=n.maxPortsPerClient,t.value.maxPortsPerClient=="0"&&(t.value.maxPortsPerClient="no limit"),t.value.allowPortsStr=n.allowPortsStr,t.value.tlsForce=n.tlsForce,t.value.heartbeatTimeout=n.heartbeatTimeout,t.value.clientCounts=n.clientCounts,t.value.curConns=n.curConns,t.value.proxyCounts=0,n.proxyTypeCount!=null&&(n.proxyTypeCount.tcp!=null&&(t.value.proxyCounts+=n.proxyTypeCount.tcp),n.proxyTypeCount.udp!=null&&(t.value.proxyCounts+=n.proxyTypeCount.udp),n.proxyTypeCount.http!=null&&(t.value.proxyCounts+=n.proxyTypeCount.http),n.proxyTypeCount.https!=null&&(t.value.proxyCounts+=n.proxyTypeCount.https),n.proxyTypeCount.stcp!=null&&(t.value.proxyCounts+=n.proxyTypeCount.stcp),n.proxyTypeCount.sudp!=null&&(t.value.proxyCounts+=n.proxyTypeCount.sudp),n.proxyTypeCount.xtcp!=null&&(t.value.proxyCounts+=n.proxyTypeCount.xtcp)),ote("traffic",n.totalTrafficIn,n.totalTrafficOut),ste("proxies",n)}).catch(()=>{Wl({showClose:!0,message:"Get server info from frps failed!",type:"warning"})})})(),(n,i)=>{const a=sA,o=oA,s=$A,l=FA;return G(),ce("div",null,[Z(l,null,{default:j(()=>[Z(s,{md:12},{default:j(()=>[ee("div",ute,[Z(o,{"label-position":"left","label-width":"220px",class:"server_info"},{default:j(()=>[Z(a,{label:"Version"},{default:j(()=>[ee("span",null,be(T(t).version),1)]),_:1}),Z(a,{label:"BindPort"},{default:j(()=>[ee("span",null,be(T(t).bindPort),1)]),_:1}),T(t).kcpBindPort!=0?(G(),de(a,{key:0,label:"KCP Bind Port"},{default:j(()=>[ee("span",null,be(T(t).kcpBindPort),1)]),_:1})):Ae("",!0),T(t).quicBindPort!=0?(G(),de(a,{key:1,label:"QUIC Bind Port"},{default:j(()=>[ee("span",null,be(T(t).quicBindPort),1)]),_:1})):Ae("",!0),T(t).vhostHTTPPort!=0?(G(),de(a,{key:2,label:"Http Port"},{default:j(()=>[ee("span",null,be(T(t).vhostHTTPPort),1)]),_:1})):Ae("",!0),T(t).vhostHTTPSPort!=0?(G(),de(a,{key:3,label:"Https Port"},{default:j(()=>[ee("span",null,be(T(t).vhostHTTPSPort),1)]),_:1})):Ae("",!0),T(t).tcpmuxHTTPConnectPort!=0?(G(),de(a,{key:4,label:"TCPMux HTTPConnect Port"},{default:j(()=>[ee("span",null,be(T(t).tcpmuxHTTPConnectPort),1)]),_:1})):Ae("",!0),T(t).subdomainHost!=""?(G(),de(a,{key:5,label:"Subdomain Host"},{default:j(()=>[Z(PC,{content:T(t).subdomainHost,length:30},null,8,["content"])]),_:1})):Ae("",!0),Z(a,{label:"Max PoolCount"},{default:j(()=>[ee("span",null,be(T(t).maxPoolCount),1)]),_:1}),Z(a,{label:"Max Ports Per Client"},{default:j(()=>[ee("span",null,be(T(t).maxPortsPerClient),1)]),_:1}),T(t).allowPortsStr!=""?(G(),de(a,{key:6,label:"Allow Ports"},{default:j(()=>[Z(PC,{content:T(t).allowPortsStr,length:30},null,8,["content"])]),_:1})):Ae("",!0),T(t).tlsForce===!0?(G(),de(a,{key:7,label:"TLS Force"},{default:j(()=>[ee("span",null,be(T(t).tlsForce),1)]),_:1})):Ae("",!0),Z(a,{label:"HeartBeat Timeout"},{default:j(()=>[ee("span",null,be(T(t).heartbeatTimeout),1)]),_:1}),Z(a,{label:"Client Counts"},{default:j(()=>[ee("span",null,be(T(t).clientCounts),1)]),_:1}),Z(a,{label:"Current Connections"},{default:j(()=>[ee("span",null,be(T(t).curConns),1)]),_:1}),Z(a,{label:"Proxy Counts"},{default:j(()=>[ee("span",null,be(T(t).proxyCounts),1)]),_:1})]),_:1})])]),_:1}),Z(s,{md:12},{default:j(()=>[fte,cte]),_:1})]),_:1})])}}});class qs{constructor(t){zt(this,"name");zt(this,"type");zt(this,"annotations");zt(this,"encryption");zt(this,"compression");zt(this,"conns");zt(this,"trafficIn");zt(this,"trafficOut");zt(this,"lastStartTime");zt(this,"lastCloseTime");zt(this,"status");zt(this,"clientVersion");zt(this,"addr");zt(this,"port");zt(this,"customDomains");zt(this,"hostHeaderRewrite");zt(this,"locations");zt(this,"subdomain");var r,n,i,a,o;if(this.name=t.name,this.type="",this.annotations=new Map,(r=t.conf)!=null&&r.annotations)for(const s in t.conf.annotations)this.annotations.set(s,t.conf.annotations[s]);this.encryption=!1,this.compression=!1,this.encryption=((i=(n=t.conf)==null?void 0:n.transport)==null?void 0:i.useEncryption)||this.encryption,this.compression=((o=(a=t.conf)==null?void 0:a.transport)==null?void 0:o.useCompression)||this.compression,this.conns=t.curConns,this.trafficIn=t.todayTrafficIn,this.trafficOut=t.todayTrafficOut,this.lastStartTime=t.lastStartTime,this.lastCloseTime=t.lastCloseTime,this.status=t.status,this.clientVersion=t.clientVersion,this.addr="",this.port=0,this.customDomains="",this.hostHeaderRewrite="",this.locations="",this.subdomain=""}}class hte extends qs{constructor(t){super(t),this.type="tcp",t.conf!=null?(this.addr=":"+t.conf.remotePort,this.port=t.conf.remotePort):(this.addr="",this.port=0)}}class vte extends qs{constructor(t){super(t),this.type="udp",t.conf!=null?(this.addr=":"+t.conf.remotePort,this.port=t.conf.remotePort):(this.addr="",this.port=0)}}class pte extends qs{constructor(t,r,n){super(t),this.type="http",this.port=r,t.conf&&(this.customDomains=t.conf.customDomains||this.customDomains,this.hostHeaderRewrite=t.conf.hostHeaderRewrite,this.locations=t.conf.locations,t.conf.subdomain&&(this.subdomain=`${t.conf.subdomain}.${n}`))}}class gte extends qs{constructor(t,r,n){super(t),this.type="https",this.port=r,t.conf!=null&&(this.customDomains=t.conf.customDomains||this.customDomains,t.conf.subdomain&&(this.subdomain=`${t.conf.subdomain}.${n}`))}}class mte extends qs{constructor(t){super(t),this.type="stcp"}}class yte extends qs{constructor(t){super(t),this.type="sudp"}}const _te=["id"],bte=ie({__name:"Traffic",props:{proxyName:{}},setup(e){const t=e;return(()=>{let n="../api/traffic/"+t.proxyName;fetch(n,{credentials:"include"}).then(i=>i.json()).then(i=>{lte(t.proxyName,i.trafficIn,i.trafficOut)}).catch(i=>{Wl({showClose:!0,message:"Get traffic info failed!"+i,type:"warning"})})})(),(n,i)=>(G(),ce("div",{id:n.proxyName,style:{width:"600px",height:"400px"}},null,8,_te))}}),wte={key:2},Ste={class:"annotation-key"},xte=ie({__name:"ProxyViewExpand",props:{row:{},proxyType:{}},setup(e){const t=e,r=()=>{const n=[];return t.row.annotations&&t.row.annotations.forEach((i,a)=>{n.push({key:a,value:i})}),n};return(n,i)=>{const a=sA,o=oA,s=VA,l=wW;return G(),ce(ft,null,[n.proxyType==="http"||n.proxyType==="https"?(G(),de(o,{key:0,"label-position":"left",inline:"",class:"proxy-table-expand"},{default:j(()=>[Z(a,{label:"Name"},{default:j(()=>[ee("span",null,be(n.row.name),1)]),_:1}),Z(a,{label:"Type"},{default:j(()=>[ee("span",null,be(n.row.type),1)]),_:1}),Z(a,{label:"Domains"},{default:j(()=>[ee("span",null,be(n.row.customDomains),1)]),_:1}),Z(a,{label:"SubDomain"},{default:j(()=>[ee("span",null,be(n.row.subdomain),1)]),_:1}),Z(a,{label:"locations"},{default:j(()=>[ee("span",null,be(n.row.locations),1)]),_:1}),Z(a,{label:"HostRewrite"},{default:j(()=>[ee("span",null,be(n.row.hostHeaderRewrite),1)]),_:1}),Z(a,{label:"Encryption"},{default:j(()=>[ee("span",null,be(n.row.encryption),1)]),_:1}),Z(a,{label:"Compression"},{default:j(()=>[ee("span",null,be(n.row.compression),1)]),_:1}),Z(a,{label:"Last Start"},{default:j(()=>[ee("span",null,be(n.row.lastStartTime),1)]),_:1}),Z(a,{label:"Last Close"},{default:j(()=>[ee("span",null,be(n.row.lastCloseTime),1)]),_:1})]),_:1})):(G(),de(o,{key:1,"label-position":"left",inline:"",class:"proxy-table-expand"},{default:j(()=>[Z(a,{label:"Name"},{default:j(()=>[ee("span",null,be(n.row.name),1)]),_:1}),Z(a,{label:"Type"},{default:j(()=>[ee("span",null,be(n.row.type),1)]),_:1}),Z(a,{label:"Addr"},{default:j(()=>[ee("span",null,be(n.row.addr),1)]),_:1}),Z(a,{label:"Encryption"},{default:j(()=>[ee("span",null,be(n.row.encryption),1)]),_:1}),Z(a,{label:"Compression"},{default:j(()=>[ee("span",null,be(n.row.compression),1)]),_:1}),Z(a,{label:"Last Start"},{default:j(()=>[ee("span",null,be(n.row.lastStartTime),1)]),_:1}),Z(a,{label:"Last Close"},{default:j(()=>[ee("span",null,be(n.row.lastCloseTime),1)]),_:1})]),_:1})),n.row.annotations&&n.row.annotations.size>0?(G(),ce("div",wte,[Z(s),Z(l,{class:"title-text",size:"large"},{default:j(()=>[mt("Annotations")]),_:1}),ee("ul",null,[(G(!0),ce(ft,null,Hp(r(),u=>(G(),ce("li",null,[ee("span",Ste,be(u.key),1),ee("span",null,be(u.value),1)]))),256))])])):Ae("",!0)],64)}}}),Cte={class:"flex items-center",style:{"margin-right":"30px"}},Ks=ie({__name:"ProxyView",props:{proxies:{},proxyType:{}},emits:["refresh"],setup(e,{emit:t}){const r=t,n=$(!1),i=$(""),a=(l,u)=>Mu.fileSize(l.trafficIn),o=(l,u)=>Mu.fileSize(l.trafficOut),s=()=>{fetch("../api/proxies?status=offline",{method:"DELETE",credentials:"include"}).then(l=>{l.ok?(Wl({message:"Successfully cleared offline proxies",type:"success"}),r("refresh")):Wl({message:"Failed to clear offline proxies: "+l.status+" "+l.statusText,type:"warning"})}).catch(l=>{Wl({message:"Failed to clear offline proxies: "+l.message,type:"warning"})})};return(l,u)=>{const f=yg,c=eV,h=q6,d=gW,v=N8,p=pW,m=bte,g=p6;return G(),ce(ft,null,[ee("div",null,[Z(h,{icon:null,style:{width:"100%","margin-left":"30px","margin-bottom":"20px"}},{title:j(()=>[ee("span",null,be(l.proxyType),1)]),content:j(()=>[]),extra:j(()=>[ee("div",Cte,[Z(c,{title:"Are you sure to clear all data of offline proxies?",onConfirm:s},{reference:j(()=>[Z(f,null,{default:j(()=>[mt("ClearOfflineProxies")]),_:1})]),_:1}),Z(f,{onClick:u[0]||(u[0]=y=>l.$emit("refresh"))},{default:j(()=>[mt("Refresh")]),_:1})])]),_:1}),Z(p,{data:l.proxies,"default-sort":{prop:"name",order:"ascending"},style:{width:"100%"}},{default:j(()=>[Z(d,{type:"expand"},{default:j(y=>[Z(xte,{row:y.row,proxyType:l.proxyType},null,8,["row","proxyType"])]),_:1}),Z(d,{label:"Name",prop:"name",sortable:""}),Z(d,{label:"Port",prop:"port",sortable:""}),Z(d,{label:"Connections",prop:"conns",sortable:""}),Z(d,{label:"Traffic In",prop:"trafficIn",formatter:a,sortable:""}),Z(d,{label:"Traffic Out",prop:"trafficOut",formatter:o,sortable:""}),Z(d,{label:"ClientVersion",prop:"clientVersion",sortable:""}),Z(d,{label:"Status",prop:"status",sortable:""},{default:j(y=>[y.row.status==="online"?(G(),de(v,{key:0,type:"success"},{default:j(()=>[mt(be(y.row.status),1)]),_:2},1024)):(G(),de(v,{key:1,type:"danger"},{default:j(()=>[mt(be(y.row.status),1)]),_:2},1024))]),_:1}),Z(d,{label:"Operations"},{default:j(y=>[Z(f,{type:"primary",name:y.row.name,style:{"margin-bottom":"10px"},onClick:_=>{i.value=y.row.name,n.value=!0}},{default:j(()=>[mt("Traffic ")]),_:2},1032,["name","onClick"])]),_:1})]),_:1},8,["data"])]),Z(g,{modelValue:n.value,"onUpdate:modelValue":u[1]||(u[1]=y=>n.value=y),"destroy-on-close":"true",title:i.value,width:"700px"},{default:j(()=>[Z(m,{proxyName:i.value},null,8,["proxyName"])]),_:1},8,["modelValue","title"])],64)}}}),Tte=ie({__name:"ProxiesTCP",setup(e){let t=$([]);const r=()=>{fetch("../api/proxy/tcp",{credentials:"include"}).then(n=>n.json()).then(n=>{t.value=[];for(let i of n.proxies)t.value.push(new hte(i))})};return r(),(n,i)=>(G(),de(Ks,{proxies:T(t),proxyType:"tcp",onRefresh:r},null,8,["proxies"]))}}),Mte=ie({__name:"ProxiesUDP",setup(e){let t=$([]);const r=()=>{fetch("../api/proxy/udp",{credentials:"include"}).then(n=>n.json()).then(n=>{t.value=[];for(let i of n.proxies)t.value.push(new vte(i))})};return r(),(n,i)=>(G(),de(Ks,{proxies:T(t),proxyType:"udp",onRefresh:r},null,8,["proxies"]))}}),Ate=ie({__name:"ProxiesHTTP",setup(e){let t=$([]);const r=()=>{let n,i;fetch("../api/serverinfo",{credentials:"include"}).then(a=>a.json()).then(a=>{n=a.vhostHTTPPort,i=a.subdomainHost,!(n==null||n==0)&&fetch("../api/proxy/http",{credentials:"include"}).then(o=>o.json()).then(o=>{t.value=[];for(let s of o.proxies)t.value.push(new pte(s,n,i))})})};return r(),(n,i)=>(G(),de(Ks,{proxies:T(t),proxyType:"http",onRefresh:r},null,8,["proxies"]))}}),Pte=ie({__name:"ProxiesHTTPS",setup(e){let t=$([]);const r=()=>{let n,i;fetch("../api/serverinfo",{credentials:"include"}).then(a=>a.json()).then(a=>{n=a.vhostHTTPSPort,i=a.subdomainHost,!(n==null||n==0)&&fetch("../api/proxy/https",{credentials:"include"}).then(o=>o.json()).then(o=>{t.value=[];for(let s of o.proxies)t.value.push(new gte(s,n,i))})})};return r(),(n,i)=>(G(),de(Ks,{proxies:T(t),proxyType:"https",onRefresh:r},null,8,["proxies"]))}}),Ete=ie({__name:"ProxiesSTCP",setup(e){let t=$([]);const r=()=>{fetch("../api/proxy/stcp",{credentials:"include"}).then(n=>n.json()).then(n=>{t.value=[];for(let i of n.proxies)t.value.push(new mte(i))})};return r(),(n,i)=>(G(),de(Ks,{proxies:T(t),proxyType:"stcp",onRefresh:r},null,8,["proxies"]))}}),Lte=ie({__name:"ProxiesSUDP",setup(e){let t=$([]);const r=()=>{fetch("../api/proxy/sudp",{credentials:"include"}).then(n=>n.json()).then(n=>{t.value=[];for(let i of n.proxies)t.value.push(new yte(i))})};return r(),(n,i)=>(G(),de(Ks,{proxies:T(t),proxyType:"sudp",onRefresh:r},null,8,["proxies"]))}}),Dte=jG({history:uG(),routes:[{path:"/",name:"ServerOverview",component:dte},{path:"/proxies/tcp",name:"ProxiesTCP",component:Tte},{path:"/proxies/udp",name:"ProxiesUDP",component:Mte},{path:"/proxies/http",name:"ProxiesHTTP",component:Ate},{path:"/proxies/https",name:"ProxiesHTTPS",component:Pte},{path:"/proxies/stcp",name:"ProxiesSTCP",component:Ete},{path:"/proxies/sudp",name:"ProxiesSUDP",component:Lte}]}),MD=oR(GW);MD.use(Dte);MD.mount("#app")});export default Ite(); +`:"
",g=c.join(m);this._showOrMove(s,function(){this._updateContentNotChangedOnAxis(r,u)?this._updatePosition(s,d,o[0],o[1],this._tooltipContent,u):this._showTooltipContent(s,g,u,Math.random()+"",o[0],o[1],d,null,h)})},t.prototype._showSeriesItemTooltip=function(r,n,i){var a=this._ecModel,o=dt(n),s=o.seriesIndex,l=a.getSeriesByIndex(s),u=o.dataModel||l,f=o.dataIndex,c=o.dataType,h=u.getData(c),d=this._renderMode,v=r.positionDefault,p=bl([h.getItemModel(f),u,l&&(l.coordinateSystem||{}).model],this._tooltipModel,v?{position:v}:null),m=p.get("trigger");if(!(m!=null&&m!=="item")){var g=u.getDataParams(f,c),y=new up;g.marker=y.makeTooltipMarker("item",ku(g.color),d);var _=FS(u.formatTooltip(f,!1,c)),b=p.get("order"),x=p.get("valueFormatter"),w=_.frag,S=w?WS(x?ue({valueFormatter:x},w):w,y,d,b,a.get("useUTC"),p.get("textStyle")):_.text,C="item_"+u.name+"_"+f;this._showOrMove(p,function(){this._showTooltipContent(p,S,g,C,r.offsetX,r.offsetY,r.position,r.target,y)}),i({type:"showTip",dataIndexInside:f,dataIndex:h.getRawIndex(f),seriesIndex:s,from:this.uid})}},t.prototype._showComponentItemTooltip=function(r,n,i){var a=dt(n),o=a.tooltipConfig,s=o.option||{};if(Ee(s)){var l=s;s={content:l,formatter:l}}var u=[s],f=this._ecModel.getComponent(a.componentMainType,a.componentIndex);f&&u.push(f),u.push({formatter:s.content});var c=r.positionDefault,h=bl(u,this._tooltipModel,c?{position:c}:null),d=h.get("content"),v=Math.random()+"",p=new up;this._showOrMove(h,function(){var m=tt(h.get("formatterParams")||{});this._showTooltipContent(h,d,m,v,r.offsetX,r.offsetY,r.position,n,p)}),i({type:"showTip",from:this.uid})},t.prototype._showTooltipContent=function(r,n,i,a,o,s,l,u,f){if(this._ticket="",!(!r.get("showContent")||!r.get("show"))){var c=this._tooltipContent;c.setEnterable(r.get("enterable"));var h=r.get("formatter");l=l||r.get("position");var d=n,v=this._getNearestPoint([o,s],i,r.get("trigger"),r.get("borderColor")),p=v.color;if(h)if(Ee(h)){var m=r.ecModel.get("useUTC"),g=ye(i)?i[0]:i,y=g&&g.axisType&&g.axisType.indexOf("time")>=0;d=h,y&&(d=Ph(g.axisValue,d,m)),d=pE(d,i,!0)}else if(Ye(h)){var _=xt(function(b,x){b===this._ticket&&(c.setContent(x,f,r,p,l),this._updatePosition(r,l,o,s,c,i,u))},this);this._ticket=a,d=h(i,a,_)}else d=h;c.setContent(d,f,r,p,l),c.show(r,p),this._updatePosition(r,l,o,s,c,i,u)}},t.prototype._getNearestPoint=function(r,n,i,a){if(i==="axis"||ye(n))return{color:a||(this._renderMode==="html"?"#fff":"none")};if(!ye(n))return{color:a||n.color||n.borderColor}},t.prototype._updatePosition=function(r,n,i,a,o,s,l){var u=this._api.getWidth(),f=this._api.getHeight();n=n||r.get("position");var c=o.getSize(),h=r.get("align"),d=r.get("verticalAlign"),v=l&&l.getBoundingRect().clone();if(l&&v.applyTransform(l.transform),Ye(n)&&(n=n([i,a],s,o.el,v,{viewSize:[u,f],contentSize:c.slice()})),ye(n))i=yt(n[0],u),a=yt(n[1],f);else if(Re(n)){var p=n;p.width=c[0],p.height=c[1];var m=Is(p,{width:u,height:f});i=m.x,a=m.y,h=null,d=null}else if(Ee(n)&&l){var g=$ee(n,v,c,r.get("borderWidth"));i=g[0],a=g[1]}else{var g=Bee(i,a,o,u,f,h?null:20,d?null:20);i=g[0],a=g[1]}if(h&&(i-=CC(h)?c[0]/2:h==="right"?c[0]:0),d&&(a-=CC(d)?c[1]/2:d==="bottom"?c[1]:0),_D(r)){var g=Fee(i,a,o,u,f);i=g[0],a=g[1]}o.moveTo(i,a)},t.prototype._updateContentNotChangedOnAxis=function(r,n){var i=this._lastDataByCoordSys,a=this._cbParamsList,o=!!i&&i.length===r.length;return o&&R(i,function(s,l){var u=s.dataByAxis||[],f=r[l]||{},c=f.dataByAxis||[];o=o&&u.length===c.length,o&&R(u,function(h,d){var v=c[d]||{},p=h.seriesDataIndices||[],m=v.seriesDataIndices||[];o=o&&h.value===v.value&&h.axisType===v.axisType&&h.axisId===v.axisId&&p.length===m.length,o&&R(p,function(g,y){var _=m[y];o=o&&g.seriesIndex===_.seriesIndex&&g.dataIndex===_.dataIndex}),a&&R(h.seriesDataIndices,function(g){var y=g.seriesIndex,_=n[y],b=a[y];_&&b&&b.data!==_.data&&(o=!1)})})}),this._lastDataByCoordSys=r,this._cbParamsList=n,!!o},t.prototype._hide=function(r){this._lastDataByCoordSys=null,r({type:"hideTip",from:this.uid})},t.prototype.dispose=function(r,n){He.node||!n.getDom()||(wm(this,"_updatePosition"),this._tooltipContent.dispose(),Fm("itemTooltip",n))},t.type="tooltip",t}(Mi);function bl(e,t,r){var n=t.ecModel,i;r?(i=new sr(r,n,n),i=new sr(t.option,i,n)):i=t;for(var a=e.length-1;a>=0;a--){var o=e[a];o&&(o instanceof sr&&(o=o.get("tooltip",!0)),Ee(o)&&(o={formatter:o}),o&&(i=new sr(o,i,n)))}return i}function xC(e,t){return e.dispatchAction||xt(t.dispatchAction,t)}function Bee(e,t,r,n,i,a,o){var s=r.getSize(),l=s[0],u=s[1];return a!=null&&(e+l+a+2>n?e-=l+a:e+=a),o!=null&&(t+u+o>i?t-=u+o:t+=o),[e,t]}function Fee(e,t,r,n,i){var a=r.getSize(),o=a[0],s=a[1];return e=Math.min(e+o,n)-o,t=Math.min(t+s,i)-s,e=Math.max(e,0),t=Math.max(t,0),[e,t]}function $ee(e,t,r,n){var i=r[0],a=r[1],o=Math.ceil(Math.SQRT2*n)+8,s=0,l=0,u=t.width,f=t.height;switch(e){case"inside":s=t.x+u/2-i/2,l=t.y+f/2-a/2;break;case"top":s=t.x+u/2-i/2,l=t.y-a-o;break;case"bottom":s=t.x+u/2-i/2,l=t.y+f+o;break;case"left":s=t.x-i-o,l=t.y+f/2-a/2;break;case"right":s=t.x+u+o,l=t.y+f/2-a/2}return[s,l]}function CC(e){return e==="center"||e==="middle"}function Hee(e,t,r){var n=v0(e).queryOptionMap,i=n.keys()[0];if(!(!i||i==="series")){var a=lf(t,i,n.get(i),{useDefault:!1,enableAll:!1,enableNone:!1}),o=a.models[0];if(o){var s=r.getViewOfComponentModel(o),l;if(s.group.traverse(function(u){var f=dt(u).tooltipConfig;if(f&&f.name===e.name)return l=u,!0}),l)return{componentMainType:i,componentIndex:o.componentIndex,el:l}}}}const zee=Nee;function Vee(e){va(yD),e.registerComponentModel(See),e.registerComponentView(zee),e.registerAction({type:"showTip",event:"showTip",update:"tooltip:manuallyShowTip"},Er),e.registerAction({type:"hideTip",event:"hideTip",update:"tooltip:manuallyHideTip"},Er)}var Wee=function(e){ge(t,e);function t(){var r=e!==null&&e.apply(this,arguments)||this;return r.type=t.type,r.layoutMode={type:"box",ignoreSize:!0},r}return t.type="title",t.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"}},t}(Mt),Gee=function(e){ge(t,e);function t(){var r=e!==null&&e.apply(this,arguments)||this;return r.type=t.type,r}return t.prototype.render=function(r,n,i){if(this.group.removeAll(),!!r.get("show")){var a=this.group,o=r.getModel("textStyle"),s=r.getModel("subtextStyle"),l=r.get("textAlign"),u=Ze(r.get("textBaseline"),r.get("textVerticalAlign")),f=new mr({style:ha(o,{text:r.get("text"),fill:o.getTextColor()},{disableBox:!0}),z2:10}),c=f.getBoundingRect(),h=r.get("subtext"),d=new mr({style:ha(s,{text:h,fill:s.getTextColor(),y:c.height+r.get("itemGap"),verticalAlign:"top"},{disableBox:!0}),z2:10}),v=r.get("link"),p=r.get("sublink"),m=r.get("triggerEvent",!0);f.silent=!v&&!m,d.silent=!p&&!m,v&&f.on("click",function(){bS(v,"_"+r.get("target"))}),p&&d.on("click",function(){bS(p,"_"+r.get("subtarget"))}),dt(f).eventData=dt(d).eventData=m?{componentType:"title",componentIndex:r.componentIndex}:null,a.add(f),h&&a.add(d);var g=a.getBoundingRect(),y=r.getBoxLayoutParams();y.width=g.width,y.height=g.height;var _=Is(y,{width:i.getWidth(),height:i.getHeight()},r.get("padding"));l||(l=r.get("left")||r.get("right"),l==="middle"&&(l="center"),l==="right"?_.x+=_.width:l==="center"&&(_.x+=_.width/2)),u||(u=r.get("top")||r.get("bottom"),u==="center"&&(u="middle"),u==="bottom"?_.y+=_.height:u==="middle"&&(_.y+=_.height/2),u=u||"top"),a.x=_.x,a.y=_.y,a.markRedraw();var b={align:l,verticalAlign:u};f.setStyle(b),d.setStyle(b),g=a.getBoundingRect();var x=_.margin,w=r.getItemStyle(["color","opacity"]);w.fill=r.get("backgroundColor");var S=new Gt({shape:{x:g.x-x[3],y:g.y-x[0],width:g.width+x[1]+x[3],height:g.height+x[0]+x[2],r:r.get("borderRadius")},style:w,subPixelOptimize:!0,silent:!0});a.add(S)}},t.type="title",t}(Mi);function Uee(e){e.registerComponentModel(Wee),e.registerComponentView(Gee)}var Yee=function(e,t){if(t==="all")return{type:"all",title:e.getLocaleModel().get(["legend","selector","all"])};if(t==="inverse")return{type:"inverse",title:e.getLocaleModel().get(["legend","selector","inverse"])}},jee=function(e){ge(t,e);function t(){var r=e!==null&&e.apply(this,arguments)||this;return r.type=t.type,r.layoutMode={type:"box",ignoreSize:!0},r}return t.prototype.init=function(r,n,i){this.mergeDefaultAndTheme(r,i),r.selected=r.selected||{},this._updateSelector(r)},t.prototype.mergeOption=function(r,n){e.prototype.mergeOption.call(this,r,n),this._updateSelector(r)},t.prototype._updateSelector=function(r){var n=r.selector,i=this.ecModel;n===!0&&(n=r.selector=["all","inverse"]),ye(n)&&R(n,function(a,o){Ee(a)&&(a={type:a}),n[o]=st(a,Yee(i,a.type))})},t.prototype.optionUpdated=function(){this._updateData(this.ecModel);var r=this._data;if(r[0]&&this.get("selectedMode")==="single"){for(var n=!1,i=0;i=0},t.prototype.getOrient=function(){return this.get("orient")==="vertical"?{index:1,name:"vertical"}:{index:0,name:"horizontal"}},t.type="legend.plain",t.dependencies=["series"],t.defaultOption={z:4,show:!0,orient:"horizontal",left:"center",top:0,align:"auto",backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderRadius:0,borderWidth:0,padding:5,itemGap:10,itemWidth:25,itemHeight:14,symbolRotate:"inherit",symbolKeepAspect:!0,inactiveColor:"#ccc",inactiveBorderColor:"#ccc",inactiveBorderWidth:"auto",itemStyle:{color:"inherit",opacity:"inherit",borderColor:"inherit",borderWidth:"auto",borderCap:"inherit",borderJoin:"inherit",borderDashOffset:"inherit",borderMiterLimit:"inherit"},lineStyle:{width:"auto",color:"inherit",inactiveColor:"#ccc",inactiveWidth:2,opacity:"inherit",type:"inherit",cap:"inherit",join:"inherit",dashOffset:"inherit",miterLimit:"inherit"},textStyle:{color:"#333"},selectedMode:!0,selector:!1,selectorLabel:{show:!0,borderRadius:10,padding:[3,5,3,5],fontSize:12,fontFamily:"sans-serif",color:"#666",borderWidth:1,borderColor:"#666"},emphasis:{selectorLabel:{show:!0,color:"#eee",backgroundColor:"#666"}},selectorPosition:"auto",selectorItemGap:7,selectorButtonGap:10,tooltip:{show:!1}},t}(Mt);const $m=jee;var Ko=Rt,Hm=R,wc=Ur,qee=function(e){ge(t,e);function t(){var r=e!==null&&e.apply(this,arguments)||this;return r.type=t.type,r.newlineDisabled=!1,r}return t.prototype.init=function(){this.group.add(this._contentGroup=new wc),this.group.add(this._selectorGroup=new wc),this._isFirstRender=!0},t.prototype.getContentGroup=function(){return this._contentGroup},t.prototype.getSelectorGroup=function(){return this._selectorGroup},t.prototype.render=function(r,n,i){var a=this._isFirstRender;if(this._isFirstRender=!1,this.resetInner(),!!r.get("show",!0)){var o=r.get("align"),s=r.get("orient");(!o||o==="auto")&&(o=r.get("left")==="right"&&s==="vertical"?"right":"left");var l=r.get("selector",!0),u=r.get("selectorPosition",!0);l&&(!u||u==="auto")&&(u=s==="horizontal"?"end":"start"),this.renderInner(o,r,n,i,l,s,u);var f=r.getBoxLayoutParams(),c={width:i.getWidth(),height:i.getHeight()},h=r.get("padding"),d=Is(f,c,h),v=this.layoutInner(r,o,d,a,l,u),p=Is(ht({width:v.width,height:v.height},f),c,h);this.group.x=p.x-v.x,this.group.y=p.y-v.y,this.group.markRedraw(),this.group.add(this._backgroundEl=bee(v,r))}},t.prototype.resetInner=function(){this.getContentGroup().removeAll(),this._backgroundEl&&this.group.remove(this._backgroundEl),this.getSelectorGroup().removeAll()},t.prototype.renderInner=function(r,n,i,a,o,s,l){var u=this.getContentGroup(),f=je(),c=n.get("selectedMode"),h=[];i.eachRawSeries(function(d){!d.get("legendHoverLink")&&h.push(d.id)}),Hm(n.getData(),function(d,v){var p=d.get("name");if(!this.newlineDisabled&&(p===""||p===` +`)){var m=new wc;m.newline=!0,u.add(m);return}var g=i.getSeriesByName(p)[0];if(!f.get(p))if(g){var y=g.getData(),_=y.getVisual("legendLineStyle")||{},b=y.getVisual("legendIcon"),x=y.getVisual("style"),w=this._createItem(g,p,v,d,n,r,_,x,b,c,a);w.on("click",Ko(TC,p,null,a,h)).on("mouseover",Ko(zm,g.name,null,a,h)).on("mouseout",Ko(Vm,g.name,null,a,h)),f.set(p,!0)}else i.eachRawSeries(function(S){if(!f.get(p)&&S.legendVisualProvider){var C=S.legendVisualProvider;if(!C.containName(p))return;var M=C.indexOfName(p),A=C.getItemVisual(M,"style"),P=C.getItemVisual(M,"legendIcon"),E=uo(A.fill);E&&E[3]===0&&(E[3]=.2,A=ue(ue({},A),{fill:s0(E,"rgba")}));var L=this._createItem(S,p,v,d,n,r,{},A,P,c,a);L.on("click",Ko(TC,null,p,a,h)).on("mouseover",Ko(zm,null,p,a,h)).on("mouseout",Ko(Vm,null,p,a,h)),f.set(p,!0)}},this)},this),o&&this._createSelector(o,n,a,s,l)},t.prototype._createSelector=function(r,n,i,a,o){var s=this.getSelectorGroup();Hm(r,function(u){var f=u.type,c=new mr({style:{x:0,y:0,align:"center",verticalAlign:"middle"},onclick:function(){i.dispatchAction({type:f==="all"?"legendAllSelect":"legendInverseSelect"})}});s.add(c);var h=n.getModel("selectorLabel"),d=n.getModel(["emphasis","selectorLabel"]);E0(c,{normal:h,emphasis:d},{defaultText:u.title}),um(c)})},t.prototype._createItem=function(r,n,i,a,o,s,l,u,f,c,h){var d=r.visualDrawType,v=o.get("itemWidth"),p=o.get("itemHeight"),m=o.isSelected(n),g=a.get("symbolRotate"),y=a.get("symbolKeepAspect"),_=a.get("icon");f=_||f||"roundRect";var b=Kee(f,a,l,u,d,m,h),x=new wc,w=a.getModel("textStyle");if(Ye(r.getLegendIcon)&&(!_||_==="inherit"))x.add(r.getLegendIcon({itemWidth:v,itemHeight:p,icon:f,iconRotate:g,itemStyle:b.itemStyle,lineStyle:b.lineStyle,symbolKeepAspect:y}));else{var S=_==="inherit"&&r.getData().getVisual("symbol")?g==="inherit"?r.getData().getVisual("symbolRotate"):g:0;x.add(Xee({itemWidth:v,itemHeight:p,icon:f,iconRotate:S,itemStyle:b.itemStyle,lineStyle:b.lineStyle,symbolKeepAspect:y}))}var C=s==="left"?v+5:-5,M=s,A=o.get("formatter"),P=n;Ee(A)&&A?P=A.replace("{name}",n??""):Ye(A)&&(P=A(n));var E=m?w.getTextColor():a.get("inactiveColor");x.add(new mr({style:ha(w,{text:P,x:C,y:p/2,fill:E,align:M,verticalAlign:"middle"},{inheritColor:E})}));var L=new Gt({shape:x.getBoundingRect(),invisible:!0}),O=a.getModel("tooltip");return O.get("show")&&A0({el:L,componentModel:o,itemName:n,itemTooltipOption:O.option}),x.add(L),x.eachChild(function(N){N.silent=!0}),L.silent=!c,this.getContentGroup().add(x),um(x),x.__legendDataIndex=i,x},t.prototype.layoutInner=function(r,n,i,a,o,s){var l=this.getContentGroup(),u=this.getSelectorGroup();ru(r.get("orient"),l,r.get("itemGap"),i.width,i.height);var f=l.getBoundingRect(),c=[-f.x,-f.y];if(u.markRedraw(),l.markRedraw(),o){ru("horizontal",u,r.get("selectorItemGap",!0));var h=u.getBoundingRect(),d=[-h.x,-h.y],v=r.get("selectorButtonGap",!0),p=r.getOrient().index,m=p===0?"width":"height",g=p===0?"height":"width",y=p===0?"y":"x";s==="end"?d[p]+=f[m]+v:c[p]+=h[m]+v,d[1-p]+=f[g]/2-h[g]/2,u.x=d[0],u.y=d[1],l.x=c[0],l.y=c[1];var _={x:0,y:0};return _[m]=f[m]+v+h[m],_[g]=Math.max(f[g],h[g]),_[y]=Math.min(0,h[y]+d[1-p]),_}else return l.x=c[0],l.y=c[1],this.group.getBoundingRect()},t.prototype.remove=function(){this.getContentGroup().removeAll(),this._isFirstRender=!0},t.type="legend.plain",t}(Mi);function Kee(e,t,r,n,i,a,o){function s(m,g){m.lineWidth==="auto"&&(m.lineWidth=g.lineWidth>0?2:0),Hm(m,function(y,_){m[_]==="inherit"&&(m[_]=g[_])})}var l=t.getModel("itemStyle"),u=l.getItemStyle(),f=e.lastIndexOf("empty",0)===0?"fill":"stroke",c=l.getShallow("decal");u.decal=!c||c==="inherit"?n.decal:Mm(c,o),u.fill==="inherit"&&(u.fill=n[i]),u.stroke==="inherit"&&(u.stroke=n[f]),u.opacity==="inherit"&&(u.opacity=(i==="fill"?n:r).opacity),s(u,n);var h=t.getModel("lineStyle"),d=h.getLineStyle();if(s(d,r),u.fill==="auto"&&(u.fill=n.fill),u.stroke==="auto"&&(u.stroke=n.fill),d.stroke==="auto"&&(d.stroke=n.fill),!a){var v=t.get("inactiveBorderWidth"),p=u[f];u.lineWidth=v==="auto"?n.lineWidth>0&&p?2:0:u.lineWidth,u.fill=t.get("inactiveColor"),u.stroke=t.get("inactiveBorderColor"),d.stroke=h.get("inactiveColor"),d.lineWidth=h.get("inactiveWidth")}return{itemStyle:u,lineStyle:d}}function Xee(e){var t=e.icon||"roundRect",r=j0(t,0,0,e.itemWidth,e.itemHeight,e.itemStyle.fill,e.symbolKeepAspect);return r.setStyle(e.itemStyle),r.rotation=(e.iconRotate||0)*Math.PI/180,r.setOrigin([e.itemWidth/2,e.itemHeight/2]),t.indexOf("empty")>-1&&(r.style.stroke=r.style.fill,r.style.fill="#fff",r.style.lineWidth=2),r}function TC(e,t,r,n){Vm(e,t,r,n),r.dispatchAction({type:"legendToggleSelect",name:e??t}),zm(e,t,r,n)}function xD(e){for(var t=e.getZr().storage.getDisplayList(),r,n=0,i=t.length;ni[o],m=[-d.x,-d.y];n||(m[a]=f[u]);var g=[0,0],y=[-v.x,-v.y],_=Ze(r.get("pageButtonGap",!0),r.get("itemGap",!0));if(p){var b=r.get("pageButtonPosition",!0);b==="end"?y[a]+=i[o]-v[o]:g[a]+=v[o]+_}y[1-a]+=d[s]/2-v[s]/2,f.setPosition(m),c.setPosition(g),h.setPosition(y);var x={x:0,y:0};if(x[o]=p?i[o]:d[o],x[s]=Math.max(d[s],v[s]),x[l]=Math.min(0,v[l]+y[1-a]),c.__rectSize=i[o],p){var w={x:0,y:0};w[o]=Math.max(i[o]-v[o]-_,0),w[s]=x[s],c.setClipPath(new Gt({shape:w})),c.__rectSize=w[o]}else h.eachChild(function(C){C.attr({invisible:!0,silent:!0})});var S=this._getPageInfo(r);return S.pageIndex!=null&&Or(f,{x:S.contentPosition[0],y:S.contentPosition[1]},p?r:null),this._updatePageInfoView(r,S),x},t.prototype._pageGo=function(r,n,i){var a=this._getPageInfo(n)[r];a!=null&&i.dispatchAction({type:"legendScroll",scrollDataIndex:a,legendId:n.id})},t.prototype._updatePageInfoView=function(r,n){var i=this._controllerGroup;R(["pagePrev","pageNext"],function(f){var c=f+"DataIndex",h=n[c]!=null,d=i.childOfName(f);d&&(d.setStyle("fill",h?r.get("pageIconColor",!0):r.get("pageIconInactiveColor",!0)),d.cursor=h?"pointer":"default")});var a=i.childOfName("pageText"),o=r.get("pageFormatter"),s=n.pageIndex,l=s!=null?s+1:0,u=n.pageCount;a&&o&&a.setStyle("text",Ee(o)?o.replace("{current}",l==null?"":l+"").replace("{total}",u==null?"":u+""):o({current:l,total:u}))},t.prototype._getPageInfo=function(r){var n=r.get("scrollDataIndex",!0),i=this.getContentGroup(),a=this._containerGroup.__rectSize,o=r.getOrient().index,s=Rp[o],l=kp[o],u=this._findTargetItemIndex(n),f=i.children(),c=f[u],h=f.length,d=h?1:0,v={contentPosition:[i.x,i.y],pageCount:d,pageIndex:d-1,pagePrevDataIndex:null,pageNextDataIndex:null};if(!c)return v;var p=b(c);v.contentPosition[o]=-p.s;for(var m=u+1,g=p,y=p,_=null;m<=h;++m)_=b(f[m]),(!_&&y.e>g.s+a||_&&!x(_,g.s))&&(y.i>g.i?g=y:g=_,g&&(v.pageNextDataIndex==null&&(v.pageNextDataIndex=g.i),++v.pageCount)),y=_;for(var m=u-1,g=p,y=p,_=null;m>=-1;--m)_=b(f[m]),(!_||!x(y,_.s))&&g.i=S&&w.s<=S+a}},t.prototype._findTargetItemIndex=function(r){if(!this._showController)return 0;var n,i=this.getContentGroup(),a;return i.eachChild(function(o,s){var l=o.__legendDataIndex;a==null&&l!=null&&(a=s),l===r&&(n=s)}),n??a},t.type="legend.scroll",t}(CD);const rte=tte;function nte(e){e.registerAction("legendScroll","legendscroll",function(t,r){var n=t.scrollDataIndex;n!=null&&r.eachComponent({mainType:"legend",subType:"scroll",query:t},function(i){i.setScrollDataIndex(n)})})}function ite(e){va(TD),e.registerComponentModel(ete),e.registerComponentView(rte),nte(e)}function ate(e){va(TD),va(ite)}va([tJ,$Q,GJ,vQ,Uee,Vee,ate,_ee]);function ote(e,t,r){const n=Z0(document.getElementById(e),"macarons");n.showLoading();const i={title:{text:"Network Traffic",subtext:"today",left:"center"},tooltip:{trigger:"item",formatter:function(a){return Mu.fileSize(a.data.value)+" ("+a.percent+"%)"}},legend:{orient:"vertical",left:"left",data:["Traffic In","Traffic Out"]},series:[{type:"pie",radius:"55%",center:["50%","60%"],data:[{value:t,name:"Traffic In"},{value:r,name:"Traffic Out"}],emphasis:{itemStyle:{shadowBlur:10,shadowOffsetX:0,shadowColor:"rgba(0, 0, 0, 0.5)"}}}]};n.setOption(i),n.hideLoading()}function ste(e,t){const r=Z0(document.getElementById(e),"macarons");r.showLoading();const n={title:{text:"Proxies",subtext:"now",left:"center"},tooltip:{trigger:"item",formatter:function(i){return String(i.data.value)}},legend:{orient:"vertical",left:"left",data:[]},series:[{type:"pie",radius:"55%",center:["50%","60%"],data:[],emphasis:{itemStyle:{shadowBlur:10,shadowOffsetX:0,shadowColor:"rgba(0, 0, 0, 0.5)"}}}]};t.proxyTypeCount.tcp!=null&&t.proxyTypeCount.tcp!=0&&(n.series[0].data.push({value:t.proxyTypeCount.tcp,name:"TCP"}),n.legend.data.push("TCP")),t.proxyTypeCount.udp!=null&&t.proxyTypeCount.udp!=0&&(n.series[0].data.push({value:t.proxyTypeCount.udp,name:"UDP"}),n.legend.data.push("UDP")),t.proxyTypeCount.http!=null&&t.proxyTypeCount.http!=0&&(n.series[0].data.push({value:t.proxyTypeCount.http,name:"HTTP"}),n.legend.data.push("HTTP")),t.proxyTypeCount.https!=null&&t.proxyTypeCount.https!=0&&(n.series[0].data.push({value:t.proxyTypeCount.https,name:"HTTPS"}),n.legend.data.push("HTTPS")),t.proxyTypeCount.stcp!=null&&t.proxyTypeCount.stcp!=0&&(n.series[0].data.push({value:t.proxyTypeCount.stcp,name:"STCP"}),n.legend.data.push("STCP")),t.proxyTypeCount.sudp!=null&&t.proxyTypeCount.sudp!=0&&(n.series[0].data.push({value:t.proxyTypeCount.sudp,name:"SUDP"}),n.legend.data.push("SUDP")),t.proxyTypeCount.xtcp!=null&&t.proxyTypeCount.xtcp!=0&&(n.series[0].data.push({value:t.proxyTypeCount.xtcp,name:"XTCP"}),n.legend.data.push("XTCP")),r.setOption(n),r.hideLoading()}function lte(e,t,r){const n={width:"600px",height:"400px"},i=Z0(document.getElementById(e),"macarons",n);i.showLoading(),t=t.reverse(),r=r.reverse();let a=new Date;a=new Date(a.getFullYear(),a.getMonth(),a.getDate()-6);const o=[];for(let l=0;l<7;l++)o.push(a.getFullYear()+"-"+(a.getMonth()+1)+"-"+a.getDate()),a=new Date(a.getFullYear(),a.getMonth(),a.getDate()+1);const s={tooltip:{trigger:"axis",axisPointer:{type:"shadow"},formatter:function(l){let u="";l.length>0&&(u+=l[0].name+"
");for(const f of l){const c='';u+=c+f.seriesName+": "+Mu.fileSize(f.value)+"
"}return u}},legend:{data:["Traffic In","Traffic Out"]},grid:{left:"3%",right:"4%",bottom:"3%",containLabel:!0},xAxis:[{type:"category",data:o}],yAxis:[{type:"value",axisLabel:{formatter:function(l){return Mu.fileSize(l)}}}],series:[{name:"Traffic In",type:"bar",data:t},{name:"Traffic Out",type:"bar",data:r}]};i.setOption(s),i.hideLoading()}const PC=ie({__name:"LongSpan",props:{content:{},length:{}},setup(e){return(t,r)=>{const n=Vs;return G(),ce(ft,null,[Z(n,{content:t.content,placement:"top"},{default:q(()=>[qt(te("span",null,xe(t.content.slice(0,t.length))+"...",513),[[Kn,t.content.length>t.length]])]),_:1},8,["content"]),qt(te("span",null,xe(t.content),513),[[Kn,t.content.length<30]])],64)}}}),ute={class:"source"},fte=te("div",{id:"traffic",style:{width:"400px",height:"250px","margin-bottom":"30px"}},null,-1),cte=te("div",{id:"proxies",style:{width:"400px",height:"250px"}},null,-1),dte=ie({__name:"ServerOverview",setup(e){let t=$({version:"",bindPort:0,kcpBindPort:0,quicBindPort:0,vhostHTTPPort:0,vhostHTTPSPort:0,tcpmuxHTTPConnectPort:0,subdomainHost:"",maxPoolCount:0,maxPortsPerClient:"",allowPortsStr:"",tlsForce:!1,heartbeatTimeout:0,clientCounts:0,curConns:0,proxyCounts:0});return(()=>{fetch("../api/serverinfo",{credentials:"include"}).then(n=>n.json()).then(n=>{t.value.version=n.version,t.value.bindPort=n.bindPort,t.value.kcpBindPort=n.kcpBindPort,t.value.quicBindPort=n.quicBindPort,t.value.vhostHTTPPort=n.vhostHTTPPort,t.value.vhostHTTPSPort=n.vhostHTTPSPort,t.value.tcpmuxHTTPConnectPort=n.tcpmuxHTTPConnectPort,t.value.subdomainHost=n.subdomainHost,t.value.maxPoolCount=n.maxPoolCount,t.value.maxPortsPerClient=n.maxPortsPerClient,t.value.maxPortsPerClient=="0"&&(t.value.maxPortsPerClient="no limit"),t.value.allowPortsStr=n.allowPortsStr,t.value.tlsForce=n.tlsForce,t.value.heartbeatTimeout=n.heartbeatTimeout,t.value.clientCounts=n.clientCounts,t.value.curConns=n.curConns,t.value.proxyCounts=0,n.proxyTypeCount!=null&&(n.proxyTypeCount.tcp!=null&&(t.value.proxyCounts+=n.proxyTypeCount.tcp),n.proxyTypeCount.udp!=null&&(t.value.proxyCounts+=n.proxyTypeCount.udp),n.proxyTypeCount.http!=null&&(t.value.proxyCounts+=n.proxyTypeCount.http),n.proxyTypeCount.https!=null&&(t.value.proxyCounts+=n.proxyTypeCount.https),n.proxyTypeCount.stcp!=null&&(t.value.proxyCounts+=n.proxyTypeCount.stcp),n.proxyTypeCount.sudp!=null&&(t.value.proxyCounts+=n.proxyTypeCount.sudp),n.proxyTypeCount.xtcp!=null&&(t.value.proxyCounts+=n.proxyTypeCount.xtcp)),ote("traffic",n.totalTrafficIn,n.totalTrafficOut),ste("proxies",n)}).catch(()=>{Wl({showClose:!0,message:"Get server info from frps failed!",type:"warning"})})})(),(n,i)=>{const a=sA,o=oA,s=$A,l=FA;return G(),ce("div",null,[Z(l,null,{default:q(()=>[Z(s,{md:12},{default:q(()=>[te("div",ute,[Z(o,{"label-position":"left","label-width":"220px",class:"server_info"},{default:q(()=>[Z(a,{label:"Version"},{default:q(()=>[te("span",null,xe(T(t).version),1)]),_:1}),Z(a,{label:"BindPort"},{default:q(()=>[te("span",null,xe(T(t).bindPort),1)]),_:1}),T(t).kcpBindPort!=0?(G(),ve(a,{key:0,label:"KCP Bind Port"},{default:q(()=>[te("span",null,xe(T(t).kcpBindPort),1)]),_:1})):Ae("",!0),T(t).quicBindPort!=0?(G(),ve(a,{key:1,label:"QUIC Bind Port"},{default:q(()=>[te("span",null,xe(T(t).quicBindPort),1)]),_:1})):Ae("",!0),T(t).vhostHTTPPort!=0?(G(),ve(a,{key:2,label:"HTTP Port"},{default:q(()=>[te("span",null,xe(T(t).vhostHTTPPort),1)]),_:1})):Ae("",!0),T(t).vhostHTTPSPort!=0?(G(),ve(a,{key:3,label:"HTTPS Port"},{default:q(()=>[te("span",null,xe(T(t).vhostHTTPSPort),1)]),_:1})):Ae("",!0),T(t).tcpmuxHTTPConnectPort!=0?(G(),ve(a,{key:4,label:"TCPMux HTTPConnect Port"},{default:q(()=>[te("span",null,xe(T(t).tcpmuxHTTPConnectPort),1)]),_:1})):Ae("",!0),T(t).subdomainHost!=""?(G(),ve(a,{key:5,label:"Subdomain Host"},{default:q(()=>[Z(PC,{content:T(t).subdomainHost,length:30},null,8,["content"])]),_:1})):Ae("",!0),Z(a,{label:"Max PoolCount"},{default:q(()=>[te("span",null,xe(T(t).maxPoolCount),1)]),_:1}),Z(a,{label:"Max Ports Per Client"},{default:q(()=>[te("span",null,xe(T(t).maxPortsPerClient),1)]),_:1}),T(t).allowPortsStr!=""?(G(),ve(a,{key:6,label:"Allow Ports"},{default:q(()=>[Z(PC,{content:T(t).allowPortsStr,length:30},null,8,["content"])]),_:1})):Ae("",!0),T(t).tlsForce===!0?(G(),ve(a,{key:7,label:"TLS Force"},{default:q(()=>[te("span",null,xe(T(t).tlsForce),1)]),_:1})):Ae("",!0),Z(a,{label:"HeartBeat Timeout"},{default:q(()=>[te("span",null,xe(T(t).heartbeatTimeout),1)]),_:1}),Z(a,{label:"Client Counts"},{default:q(()=>[te("span",null,xe(T(t).clientCounts),1)]),_:1}),Z(a,{label:"Current Connections"},{default:q(()=>[te("span",null,xe(T(t).curConns),1)]),_:1}),Z(a,{label:"Proxy Counts"},{default:q(()=>[te("span",null,xe(T(t).proxyCounts),1)]),_:1})]),_:1})])]),_:1}),Z(s,{md:12},{default:q(()=>[fte,cte]),_:1})]),_:1})])}}});class Io{constructor(t){It(this,"name");It(this,"type");It(this,"annotations");It(this,"encryption");It(this,"compression");It(this,"conns");It(this,"trafficIn");It(this,"trafficOut");It(this,"lastStartTime");It(this,"lastCloseTime");It(this,"status");It(this,"clientVersion");It(this,"addr");It(this,"port");It(this,"customDomains");It(this,"hostHeaderRewrite");It(this,"locations");It(this,"subdomain");var r,n,i,a,o;if(this.name=t.name,this.type="",this.annotations=new Map,(r=t.conf)!=null&&r.annotations)for(const s in t.conf.annotations)this.annotations.set(s,t.conf.annotations[s]);this.encryption=!1,this.compression=!1,this.encryption=((i=(n=t.conf)==null?void 0:n.transport)==null?void 0:i.useEncryption)||this.encryption,this.compression=((o=(a=t.conf)==null?void 0:a.transport)==null?void 0:o.useCompression)||this.compression,this.conns=t.curConns,this.trafficIn=t.todayTrafficIn,this.trafficOut=t.todayTrafficOut,this.lastStartTime=t.lastStartTime,this.lastCloseTime=t.lastCloseTime,this.status=t.status,this.clientVersion=t.clientVersion,this.addr="",this.port=0,this.customDomains="",this.hostHeaderRewrite="",this.locations="",this.subdomain=""}}class hte extends Io{constructor(t){super(t),this.type="tcp",t.conf!=null?(this.addr=":"+t.conf.remotePort,this.port=t.conf.remotePort):(this.addr="",this.port=0)}}class vte extends Io{constructor(t){super(t),this.type="udp",t.conf!=null?(this.addr=":"+t.conf.remotePort,this.port=t.conf.remotePort):(this.addr="",this.port=0)}}class pte extends Io{constructor(t,r,n){super(t),this.type="http",this.port=r,t.conf&&(this.customDomains=t.conf.customDomains||this.customDomains,this.hostHeaderRewrite=t.conf.hostHeaderRewrite,this.locations=t.conf.locations,t.conf.subdomain&&(this.subdomain=`${t.conf.subdomain}.${n}`))}}class gte extends Io{constructor(t,r,n){super(t),this.type="https",this.port=r,t.conf!=null&&(this.customDomains=t.conf.customDomains||this.customDomains,t.conf.subdomain&&(this.subdomain=`${t.conf.subdomain}.${n}`))}}class mte extends Io{constructor(r,n,i){super(r);It(this,"multiplexer");It(this,"routeByHTTPUser");this.type="tcpmux",this.port=n,this.multiplexer="",this.routeByHTTPUser="",r.conf&&(this.customDomains=r.conf.customDomains||this.customDomains,this.multiplexer=r.conf.multiplexer,this.routeByHTTPUser=r.conf.routeByHTTPUser,r.conf.subdomain&&(this.subdomain=`${r.conf.subdomain}.${i}`))}}class yte extends Io{constructor(t){super(t),this.type="stcp"}}class _te extends Io{constructor(t){super(t),this.type="sudp"}}const bte=["id"],wte=ie({__name:"Traffic",props:{proxyName:{}},setup(e){const t=e;return(()=>{let n="../api/traffic/"+t.proxyName;fetch(n,{credentials:"include"}).then(i=>i.json()).then(i=>{lte(t.proxyName,i.trafficIn,i.trafficOut)}).catch(i=>{Wl({showClose:!0,message:"Get traffic info failed!"+i,type:"warning"})})})(),(n,i)=>(G(),ce("div",{id:n.proxyName,style:{width:"600px",height:"400px"}},null,8,bte))}}),Ste={key:0},xte={key:1},Cte={key:2},Tte={key:0},Mte={class:"annotation-key"},Ate=ie({__name:"ProxyViewExpand",props:{row:{},proxyType:{}},setup(e){const t=e,r=()=>{const n=[];return t.row.annotations&&t.row.annotations.forEach((i,a)=>{n.push({key:a,value:i})}),n};return(n,i)=>{const a=sA,o=oA,s=VA,l=wW;return G(),ce(ft,null,[Z(o,{"label-position":"left","label-width":"auto",inline:"",class:"proxy-table-expand"},{default:q(()=>[Z(a,{label:"Name"},{default:q(()=>[te("span",null,xe(n.row.name),1)]),_:1}),Z(a,{label:"Type"},{default:q(()=>[te("span",null,xe(n.row.type),1)]),_:1}),Z(a,{label:"Encryption"},{default:q(()=>[te("span",null,xe(n.row.encryption),1)]),_:1}),Z(a,{label:"Compression"},{default:q(()=>[te("span",null,xe(n.row.compression),1)]),_:1}),Z(a,{label:"Last Start"},{default:q(()=>[te("span",null,xe(n.row.lastStartTime),1)]),_:1}),Z(a,{label:"Last Close"},{default:q(()=>[te("span",null,xe(n.row.lastCloseTime),1)]),_:1}),n.proxyType==="http"||n.proxyType==="https"?(G(),ce("div",Ste,[Z(a,{label:"Domains"},{default:q(()=>[te("span",null,xe(n.row.customDomains),1)]),_:1}),Z(a,{label:"SubDomain"},{default:q(()=>[te("span",null,xe(n.row.subdomain),1)]),_:1}),Z(a,{label:"locations"},{default:q(()=>[te("span",null,xe(n.row.locations),1)]),_:1}),Z(a,{label:"HostRewrite"},{default:q(()=>[te("span",null,xe(n.row.hostHeaderRewrite),1)]),_:1})])):n.proxyType==="tcpmux"?(G(),ce("div",xte,[Z(a,{label:"Multiplexer"},{default:q(()=>[te("span",null,xe(n.row.multiplexer),1)]),_:1}),Z(a,{label:"RouteByHTTPUser"},{default:q(()=>[te("span",null,xe(n.row.routeByHTTPUser),1)]),_:1}),Z(a,{label:"Domains"},{default:q(()=>[te("span",null,xe(n.row.customDomains),1)]),_:1}),Z(a,{label:"SubDomain"},{default:q(()=>[te("span",null,xe(n.row.subdomain),1)]),_:1})])):(G(),ce("div",Cte,[Z(a,{label:"Addr"},{default:q(()=>[te("span",null,xe(n.row.addr),1)]),_:1})]))]),_:1}),n.row.annotations&&n.row.annotations.size>0?(G(),ce("div",Tte,[Z(s),Z(l,{class:"title-text",size:"large"},{default:q(()=>[pt("Annotations")]),_:1}),te("ul",null,[(G(!0),ce(ft,null,Hp(r(),u=>(G(),ce("li",null,[te("span",Mte,xe(u.key),1),te("span",null,xe(u.value),1)]))),256))])])):Ae("",!0)],64)}}}),Pte={class:"flex items-center",style:{"margin-right":"30px"}},Oo=ie({__name:"ProxyView",props:{proxies:{},proxyType:{}},emits:["refresh"],setup(e,{emit:t}){const r=t,n=$(!1),i=$(""),a=(l,u)=>Mu.fileSize(l.trafficIn),o=(l,u)=>Mu.fileSize(l.trafficOut),s=()=>{fetch("../api/proxies?status=offline",{method:"DELETE",credentials:"include"}).then(l=>{l.ok?(Wl({message:"Successfully cleared offline proxies",type:"success"}),r("refresh")):Wl({message:"Failed to clear offline proxies: "+l.status+" "+l.statusText,type:"warning"})}).catch(l=>{Wl({message:"Failed to clear offline proxies: "+l.message,type:"warning"})})};return(l,u)=>{const f=yg,c=eV,h=q6,d=gW,v=N8,p=pW,m=wte,g=p6;return G(),ce(ft,null,[te("div",null,[Z(h,{icon:null,style:{width:"100%","margin-left":"30px","margin-bottom":"20px"}},{title:q(()=>[te("span",null,xe(l.proxyType),1)]),content:q(()=>[]),extra:q(()=>[te("div",Pte,[Z(c,{title:"Are you sure to clear all data of offline proxies?",onConfirm:s},{reference:q(()=>[Z(f,null,{default:q(()=>[pt("ClearOfflineProxies")]),_:1})]),_:1}),Z(f,{onClick:u[0]||(u[0]=y=>l.$emit("refresh"))},{default:q(()=>[pt("Refresh")]),_:1})])]),_:1}),Z(p,{data:l.proxies,"default-sort":{prop:"name",order:"ascending"},style:{width:"100%"}},{default:q(()=>[Z(d,{type:"expand"},{default:q(y=>[Z(Ate,{row:y.row,proxyType:l.proxyType},null,8,["row","proxyType"])]),_:1}),Z(d,{label:"Name",prop:"name",sortable:""}),Z(d,{label:"Port",prop:"port",sortable:""}),Z(d,{label:"Connections",prop:"conns",sortable:""}),Z(d,{label:"Traffic In",prop:"trafficIn",formatter:a,sortable:""}),Z(d,{label:"Traffic Out",prop:"trafficOut",formatter:o,sortable:""}),Z(d,{label:"ClientVersion",prop:"clientVersion",sortable:""}),Z(d,{label:"Status",prop:"status",sortable:""},{default:q(y=>[y.row.status==="online"?(G(),ve(v,{key:0,type:"success"},{default:q(()=>[pt(xe(y.row.status),1)]),_:2},1024)):(G(),ve(v,{key:1,type:"danger"},{default:q(()=>[pt(xe(y.row.status),1)]),_:2},1024))]),_:1}),Z(d,{label:"Operations"},{default:q(y=>[Z(f,{type:"primary",name:y.row.name,style:{"margin-bottom":"10px"},onClick:_=>{i.value=y.row.name,n.value=!0}},{default:q(()=>[pt("Traffic ")]),_:2},1032,["name","onClick"])]),_:1})]),_:1},8,["data"])]),Z(g,{modelValue:n.value,"onUpdate:modelValue":u[1]||(u[1]=y=>n.value=y),"destroy-on-close":"true",title:i.value,width:"700px"},{default:q(()=>[Z(m,{proxyName:i.value},null,8,["proxyName"])]),_:1},8,["modelValue","title"])],64)}}}),Ete=ie({__name:"ProxiesTCP",setup(e){let t=$([]);const r=()=>{fetch("../api/proxy/tcp",{credentials:"include"}).then(n=>n.json()).then(n=>{t.value=[];for(let i of n.proxies)t.value.push(new hte(i))})};return r(),(n,i)=>(G(),ve(Oo,{proxies:T(t),proxyType:"tcp",onRefresh:r},null,8,["proxies"]))}}),Lte=ie({__name:"ProxiesUDP",setup(e){let t=$([]);const r=()=>{fetch("../api/proxy/udp",{credentials:"include"}).then(n=>n.json()).then(n=>{t.value=[];for(let i of n.proxies)t.value.push(new vte(i))})};return r(),(n,i)=>(G(),ve(Oo,{proxies:T(t),proxyType:"udp",onRefresh:r},null,8,["proxies"]))}}),Dte=ie({__name:"ProxiesHTTP",setup(e){let t=$([]);const r=()=>{let n,i;fetch("../api/serverinfo",{credentials:"include"}).then(a=>a.json()).then(a=>{n=a.vhostHTTPPort,i=a.subdomainHost,!(n==null||n==0)&&fetch("../api/proxy/http",{credentials:"include"}).then(o=>o.json()).then(o=>{t.value=[];for(let s of o.proxies)t.value.push(new pte(s,n,i))})})};return r(),(n,i)=>(G(),ve(Oo,{proxies:T(t),proxyType:"http",onRefresh:r},null,8,["proxies"]))}}),Ite=ie({__name:"ProxiesHTTPS",setup(e){let t=$([]);const r=()=>{let n,i;fetch("../api/serverinfo",{credentials:"include"}).then(a=>a.json()).then(a=>{n=a.vhostHTTPSPort,i=a.subdomainHost,!(n==null||n==0)&&fetch("../api/proxy/https",{credentials:"include"}).then(o=>o.json()).then(o=>{t.value=[];for(let s of o.proxies)t.value.push(new gte(s,n,i))})})};return r(),(n,i)=>(G(),ve(Oo,{proxies:T(t),proxyType:"https",onRefresh:r},null,8,["proxies"]))}}),Ote=ie({__name:"ProxiesTCPMux",setup(e){let t=$([]);const r=()=>{let n,i;fetch("../api/serverinfo",{credentials:"include"}).then(a=>a.json()).then(a=>{n=a.tcpmuxHTTPConnectPort,i=a.subdomainHost,fetch("../api/proxy/tcpmux",{credentials:"include"}).then(o=>o.json()).then(o=>{t.value=[];for(let s of o.proxies)t.value.push(new mte(s,n,i))})})};return r(),(n,i)=>(G(),ve(Oo,{proxies:T(t),proxyType:"tcpmux",onRefresh:r},null,8,["proxies"]))}}),Rte=ie({__name:"ProxiesSTCP",setup(e){let t=$([]);const r=()=>{fetch("../api/proxy/stcp",{credentials:"include"}).then(n=>n.json()).then(n=>{t.value=[];for(let i of n.proxies)t.value.push(new yte(i))})};return r(),(n,i)=>(G(),ve(Oo,{proxies:T(t),proxyType:"stcp",onRefresh:r},null,8,["proxies"]))}}),kte=ie({__name:"ProxiesSUDP",setup(e){let t=$([]);const r=()=>{fetch("../api/proxy/sudp",{credentials:"include"}).then(n=>n.json()).then(n=>{t.value=[];for(let i of n.proxies)t.value.push(new _te(i))})};return r(),(n,i)=>(G(),ve(Oo,{proxies:T(t),proxyType:"sudp",onRefresh:r},null,8,["proxies"]))}}),Nte=jG({history:uG(),routes:[{path:"/",name:"ServerOverview",component:dte},{path:"/proxies/tcp",name:"ProxiesTCP",component:Ete},{path:"/proxies/udp",name:"ProxiesUDP",component:Lte},{path:"/proxies/http",name:"ProxiesHTTP",component:Dte},{path:"/proxies/https",name:"ProxiesHTTPS",component:Ite},{path:"/proxies/tcpmux",name:"ProxiesTCPMux",component:Ote},{path:"/proxies/stcp",name:"ProxiesSTCP",component:Rte},{path:"/proxies/sudp",name:"ProxiesSUDP",component:kte}]}),MD=oR(GW);MD.use(Nte);MD.mount("#app")});export default Bte(); diff --git a/assets/frps/static/index.html b/assets/frps/static/index.html index 0a1966e8306..075604a5dab 100644 --- a/assets/frps/static/index.html +++ b/assets/frps/static/index.html @@ -4,7 +4,7 @@ frps dashboard - + diff --git a/client/admin_api.go b/client/admin_api.go index ff889d52355..f161d588b4d 100644 --- a/client/admin_api.go +++ b/client/admin_api.go @@ -165,9 +165,9 @@ func (svr *Service) apiStatus(w http.ResponseWriter, _ *http.Request) { res StatusResp = make(map[string][]ProxyStatusResp) ) - log.Infof("Http request [/api/status]") + log.Infof("http request [/api/status]") defer func() { - log.Infof("Http response [/api/status]") + log.Infof("http response [/api/status]") buf, _ = json.Marshal(&res) _, _ = w.Write(buf) }() @@ -198,9 +198,9 @@ func (svr *Service) apiStatus(w http.ResponseWriter, _ *http.Request) { func (svr *Service) apiGetConfig(w http.ResponseWriter, _ *http.Request) { res := GeneralResponse{Code: 200} - log.Infof("Http get request [/api/config]") + log.Infof("http get request [/api/config]") defer func() { - log.Infof("Http get response [/api/config], code [%d]", res.Code) + log.Infof("http get response [/api/config], code [%d]", res.Code) w.WriteHeader(res.Code) if len(res.Msg) > 0 { _, _ = w.Write([]byte(res.Msg)) @@ -228,9 +228,9 @@ func (svr *Service) apiGetConfig(w http.ResponseWriter, _ *http.Request) { func (svr *Service) apiPutConfig(w http.ResponseWriter, r *http.Request) { res := GeneralResponse{Code: 200} - log.Infof("Http put request [/api/config]") + log.Infof("http put request [/api/config]") defer func() { - log.Infof("Http put response [/api/config], code [%d]", res.Code) + log.Infof("http put response [/api/config], code [%d]", res.Code) w.WriteHeader(res.Code) if len(res.Msg) > 0 { _, _ = w.Write([]byte(res.Msg)) @@ -253,7 +253,7 @@ func (svr *Service) apiPutConfig(w http.ResponseWriter, r *http.Request) { return } - if err := os.WriteFile(svr.configFilePath, body, 0o644); err != nil { + if err := os.WriteFile(svr.configFilePath, body, 0o600); err != nil { res.Code = 500 res.Msg = fmt.Sprintf("write content to frpc config file error: %v", err) log.Warnf("%s", res.Msg) diff --git a/client/connector.go b/client/connector.go index 184194a171f..03d7fc29d97 100644 --- a/client/connector.go +++ b/client/connector.go @@ -17,14 +17,13 @@ package client import ( "context" "crypto/tls" - "io" "net" "strconv" "strings" "sync" "time" - libdial "github.com/fatedier/golib/net/dial" + libnet "github.com/fatedier/golib/net" fmux "github.com/hashicorp/yamux" quic "github.com/quic-go/quic-go" "github.com/samber/lo" @@ -48,7 +47,7 @@ type defaultConnectorImpl struct { cfg *v1.ClientCommonConfig muxSession *fmux.Session - quicConn quic.Connection + quicConn *quic.Conn closeOnce sync.Once } @@ -115,7 +114,8 @@ func (c *defaultConnectorImpl) Open() error { fmuxCfg := fmux.DefaultConfig() fmuxCfg.KeepAliveInterval = time.Duration(c.cfg.Transport.TCPMuxKeepaliveInterval) * time.Second - fmuxCfg.LogOutput = io.Discard + // Use trace level for yamux logs + fmuxCfg.LogOutput = xlog.NewTraceWriter(xl) fmuxCfg.MaxStreamWindowSize = 6 * 1024 * 1024 session, err := fmux.Client(conn, fmuxCfg) if err != nil { @@ -169,44 +169,44 @@ func (c *defaultConnectorImpl) realConnect() (net.Conn, error) { } } - proxyType, addr, auth, err := libdial.ParseProxyURL(c.cfg.Transport.ProxyURL) + proxyType, addr, auth, err := libnet.ParseProxyURL(c.cfg.Transport.ProxyURL) if err != nil { xl.Errorf("fail to parse proxy url") return nil, err } - dialOptions := []libdial.DialOption{} + dialOptions := []libnet.DialOption{} protocol := c.cfg.Transport.Protocol switch protocol { case "websocket": protocol = "tcp" - dialOptions = append(dialOptions, libdial.WithAfterHook(libdial.AfterHook{Hook: netpkg.DialHookWebsocket(protocol, "")})) - dialOptions = append(dialOptions, libdial.WithAfterHook(libdial.AfterHook{ + dialOptions = append(dialOptions, libnet.WithAfterHook(libnet.AfterHook{Hook: netpkg.DialHookWebsocket(protocol, "")})) + dialOptions = append(dialOptions, libnet.WithAfterHook(libnet.AfterHook{ Hook: netpkg.DialHookCustomTLSHeadByte(tlsConfig != nil, lo.FromPtr(c.cfg.Transport.TLS.DisableCustomTLSFirstByte)), })) - dialOptions = append(dialOptions, libdial.WithTLSConfig(tlsConfig)) + dialOptions = append(dialOptions, libnet.WithTLSConfig(tlsConfig)) case "wss": protocol = "tcp" - dialOptions = append(dialOptions, libdial.WithTLSConfigAndPriority(100, tlsConfig)) + dialOptions = append(dialOptions, libnet.WithTLSConfigAndPriority(100, tlsConfig)) // Make sure that if it is wss, the websocket hook is executed after the tls hook. - dialOptions = append(dialOptions, libdial.WithAfterHook(libdial.AfterHook{Hook: netpkg.DialHookWebsocket(protocol, tlsConfig.ServerName), Priority: 110})) + dialOptions = append(dialOptions, libnet.WithAfterHook(libnet.AfterHook{Hook: netpkg.DialHookWebsocket(protocol, tlsConfig.ServerName), Priority: 110})) default: - dialOptions = append(dialOptions, libdial.WithAfterHook(libdial.AfterHook{ + dialOptions = append(dialOptions, libnet.WithAfterHook(libnet.AfterHook{ Hook: netpkg.DialHookCustomTLSHeadByte(tlsConfig != nil, lo.FromPtr(c.cfg.Transport.TLS.DisableCustomTLSFirstByte)), })) - dialOptions = append(dialOptions, libdial.WithTLSConfig(tlsConfig)) + dialOptions = append(dialOptions, libnet.WithTLSConfig(tlsConfig)) } if c.cfg.Transport.ConnectServerLocalIP != "" { - dialOptions = append(dialOptions, libdial.WithLocalAddr(c.cfg.Transport.ConnectServerLocalIP)) + dialOptions = append(dialOptions, libnet.WithLocalAddr(c.cfg.Transport.ConnectServerLocalIP)) } dialOptions = append(dialOptions, - libdial.WithProtocol(protocol), - libdial.WithTimeout(time.Duration(c.cfg.Transport.DialServerTimeout)*time.Second), - libdial.WithKeepAlive(time.Duration(c.cfg.Transport.DialServerKeepAlive)*time.Second), - libdial.WithProxy(proxyType, addr), - libdial.WithProxyAuth(auth), + libnet.WithProtocol(protocol), + libnet.WithTimeout(time.Duration(c.cfg.Transport.DialServerTimeout)*time.Second), + libnet.WithKeepAlive(time.Duration(c.cfg.Transport.DialServerKeepAlive)*time.Second), + libnet.WithProxy(proxyType, addr), + libnet.WithProxyAuth(auth), ) - conn, err := libdial.DialContext( + conn, err := libnet.DialContext( c.ctx, net.JoinHostPort(c.cfg.ServerAddr, strconv.Itoa(c.cfg.ServerPort)), dialOptions..., diff --git a/client/control.go b/client/control.go index e1916890573..4bd6a2f737a 100644 --- a/client/control.go +++ b/client/control.go @@ -20,8 +20,6 @@ import ( "sync/atomic" "time" - "github.com/samber/lo" - "github.com/fatedier/frp/client/proxy" "github.com/fatedier/frp/client/visitor" "github.com/fatedier/frp/pkg/auth" @@ -31,6 +29,7 @@ import ( netpkg "github.com/fatedier/frp/pkg/util/net" "github.com/fatedier/frp/pkg/util/wait" "github.com/fatedier/frp/pkg/util/xlog" + "github.com/fatedier/frp/pkg/vnet" ) type SessionContext struct { @@ -48,6 +47,8 @@ type SessionContext struct { AuthSetter auth.Setter // Connector is used to create new connections, which could be real TCP connections or virtual streams. Connector Connector + // Virtual net controller + VnetController *vnet.Controller } type Control struct { @@ -101,8 +102,9 @@ func NewControl(ctx context.Context, sessionCtx *SessionContext) (*Control, erro ctl.registerMsgHandlers() ctl.msgTransporter = transport.NewMessageTransporter(ctl.msgDispatcher.SendChannel()) - ctl.pm = proxy.NewManager(ctl.ctx, sessionCtx.Common, ctl.msgTransporter) - ctl.vm = visitor.NewManager(ctl.ctx, sessionCtx.RunID, sessionCtx.Common, ctl.connectServer, ctl.msgTransporter) + ctl.pm = proxy.NewManager(ctl.ctx, sessionCtx.Common, ctl.msgTransporter, sessionCtx.VnetController) + ctl.vm = visitor.NewManager(ctl.ctx, sessionCtx.RunID, sessionCtx.Common, + ctl.connectServer, ctl.msgTransporter, sessionCtx.VnetController) return ctl, nil } @@ -187,7 +189,7 @@ func (ctl *Control) handlePong(m msg.Message) { inMsg := m.(*msg.Pong) if inMsg.Error != "" { - xl.Errorf("Pong message contains error: %s", inMsg.Error) + xl.Errorf("pong message contains error: %s", inMsg.Error) ctl.closeSession() return } @@ -232,14 +234,12 @@ func (ctl *Control) registerMsgHandlers() { ctl.msgDispatcher.RegisterHandler(&msg.Pong{}, ctl.handlePong) } -// headerWorker sends heartbeat to server and check heartbeat timeout. +// heartbeatWorker sends heartbeat to server and check heartbeat timeout. func (ctl *Control) heartbeatWorker() { xl := ctl.xl - // TODO(fatedier): Change default value of HeartbeatInterval to -1 if tcpmux is enabled. - // Users can still enable heartbeat feature by setting HeartbeatInterval to a positive value. if ctl.sessionCtx.Common.Transport.HeartbeatInterval > 0 { - // send heartbeat to server + // Send heartbeat to server. sendHeartBeat := func() (bool, error) { xl.Debugf("send heartbeat to server") pingMsg := &msg.Ping{} @@ -263,10 +263,8 @@ func (ctl *Control) heartbeatWorker() { ) } - // Check heartbeat timeout only if TCPMux is not enabled and users don't disable heartbeat feature. - if ctl.sessionCtx.Common.Transport.HeartbeatInterval > 0 && ctl.sessionCtx.Common.Transport.HeartbeatTimeout > 0 && - !lo.FromPtr(ctl.sessionCtx.Common.Transport.TCPMux) { - + // Check heartbeat timeout. + if ctl.sessionCtx.Common.Transport.HeartbeatInterval > 0 && ctl.sessionCtx.Common.Transport.HeartbeatTimeout > 0 { go wait.Until(func() { if time.Since(ctl.lastPong.Load().(time.Time)) > time.Duration(ctl.sessionCtx.Common.Transport.HeartbeatTimeout)*time.Second { xl.Warnf("heartbeat timeout") @@ -278,10 +276,12 @@ func (ctl *Control) heartbeatWorker() { } func (ctl *Control) worker() { + xl := ctl.xl go ctl.heartbeatWorker() go ctl.msgDispatcher.Run() <-ctl.msgDispatcher.Done() + xl.Debugf("control message dispatcher exited") ctl.closeSession() ctl.pm.Close() diff --git a/client/event/event.go b/client/event/event.go index bf7090d9a30..acdc96ba2b9 100644 --- a/client/event/event.go +++ b/client/event/event.go @@ -8,7 +8,7 @@ import ( var ErrPayloadType = errors.New("error payload type") -type Handler func(payload interface{}) error +type Handler func(payload any) error type StartProxyPayload struct { NewProxyMsg *msg.NewProxy diff --git a/client/proxy/proxy.go b/client/proxy/proxy.go index 16295e052c7..876ca579d38 100644 --- a/client/proxy/proxy.go +++ b/client/proxy/proxy.go @@ -20,13 +20,11 @@ import ( "net" "reflect" "strconv" - "strings" "sync" "time" libio "github.com/fatedier/golib/io" - libdial "github.com/fatedier/golib/net/dial" - pp "github.com/pires/go-proxyproto" + libnet "github.com/fatedier/golib/net" "golang.org/x/time/rate" "github.com/fatedier/frp/pkg/config/types" @@ -35,7 +33,9 @@ import ( plugin "github.com/fatedier/frp/pkg/plugin/client" "github.com/fatedier/frp/pkg/transport" "github.com/fatedier/frp/pkg/util/limit" + netpkg "github.com/fatedier/frp/pkg/util/net" "github.com/fatedier/frp/pkg/util/xlog" + "github.com/fatedier/frp/pkg/vnet" ) var proxyFactoryRegistry = map[reflect.Type]func(*BaseProxy, v1.ProxyConfigurer) Proxy{} @@ -58,6 +58,7 @@ func NewProxy( pxyConf v1.ProxyConfigurer, clientCfg *v1.ClientCommonConfig, msgTransporter transport.MessageTransporter, + vnetController *vnet.Controller, ) (pxy Proxy) { var limiter *rate.Limiter limitBytes := pxyConf.GetBaseConfig().Transport.BandwidthLimit.Bytes() @@ -70,6 +71,7 @@ func NewProxy( clientCfg: clientCfg, limiter: limiter, msgTransporter: msgTransporter, + vnetController: vnetController, xl: xlog.FromContextSafe(ctx), ctx: ctx, } @@ -85,6 +87,7 @@ type BaseProxy struct { baseCfg *v1.ProxyBaseConfig clientCfg *v1.ClientCommonConfig msgTransporter transport.MessageTransporter + vnetController *vnet.Controller limiter *rate.Limiter // proxyPlugin is used to handle connections instead of dialing to local service. // It's only validate for TCP protocol now. @@ -98,7 +101,10 @@ type BaseProxy struct { func (pxy *BaseProxy) Run() error { if pxy.baseCfg.Plugin.Type != "" { - p, err := plugin.Create(pxy.baseCfg.Plugin.Type, pxy.baseCfg.Plugin.ClientPluginOptions) + p, err := plugin.Create(pxy.baseCfg.Plugin.Type, plugin.PluginContext{ + Name: pxy.baseCfg.Name, + VnetController: pxy.vnetController, + }, pxy.baseCfg.Plugin.ClientPluginOptions) if err != nil { return err } @@ -157,49 +163,36 @@ func (pxy *BaseProxy) HandleTCPWorkConnection(workConn net.Conn, m *msg.StartWor } // check if we need to send proxy protocol info - var extraInfo plugin.ExtraInfo + var connInfo plugin.ConnectionInfo if m.SrcAddr != "" && m.SrcPort != 0 { if m.DstAddr == "" { m.DstAddr = "127.0.0.1" } srcAddr, _ := net.ResolveTCPAddr("tcp", net.JoinHostPort(m.SrcAddr, strconv.Itoa(int(m.SrcPort)))) dstAddr, _ := net.ResolveTCPAddr("tcp", net.JoinHostPort(m.DstAddr, strconv.Itoa(int(m.DstPort)))) - extraInfo.SrcAddr = srcAddr - extraInfo.DstAddr = dstAddr + connInfo.SrcAddr = srcAddr + connInfo.DstAddr = dstAddr } if baseCfg.Transport.ProxyProtocolVersion != "" && m.SrcAddr != "" && m.SrcPort != 0 { - h := &pp.Header{ - Command: pp.PROXY, - SourceAddr: extraInfo.SrcAddr, - DestinationAddr: extraInfo.DstAddr, - } - - if strings.Contains(m.SrcAddr, ".") { - h.TransportProtocol = pp.TCPv4 - } else { - h.TransportProtocol = pp.TCPv6 - } - - if baseCfg.Transport.ProxyProtocolVersion == "v1" { - h.Version = 1 - } else if baseCfg.Transport.ProxyProtocolVersion == "v2" { - h.Version = 2 - } - extraInfo.ProxyProtocolHeader = h + // Use the common proxy protocol builder function + header := netpkg.BuildProxyProtocolHeaderStruct(connInfo.SrcAddr, connInfo.DstAddr, baseCfg.Transport.ProxyProtocolVersion) + connInfo.ProxyProtocolHeader = header } + connInfo.Conn = remote + connInfo.UnderlyingConn = workConn if pxy.proxyPlugin != nil { // if plugin is set, let plugin handle connection first xl.Debugf("handle by plugin: %s", pxy.proxyPlugin.Name()) - pxy.proxyPlugin.Handle(remote, workConn, &extraInfo) + pxy.proxyPlugin.Handle(pxy.ctx, &connInfo) xl.Debugf("handle by plugin finished") return } - localConn, err := libdial.Dial( + localConn, err := libnet.Dial( net.JoinHostPort(baseCfg.LocalIP, strconv.Itoa(baseCfg.LocalPort)), - libdial.WithTimeout(10*time.Second), + libnet.WithTimeout(10*time.Second), ) if err != nil { workConn.Close() @@ -210,8 +203,8 @@ func (pxy *BaseProxy) HandleTCPWorkConnection(workConn net.Conn, m *msg.StartWor xl.Debugf("join connections, localConn(l[%s] r[%s]) workConn(l[%s] r[%s])", localConn.LocalAddr().String(), localConn.RemoteAddr().String(), workConn.LocalAddr().String(), workConn.RemoteAddr().String()) - if extraInfo.ProxyProtocolHeader != nil { - if _, err := extraInfo.ProxyProtocolHeader.WriteTo(localConn); err != nil { + if connInfo.ProxyProtocolHeader != nil { + if _, err := connInfo.ProxyProtocolHeader.WriteTo(localConn); err != nil { workConn.Close() xl.Errorf("write proxy protocol header to local conn error: %v", err) return diff --git a/client/proxy/proxy_manager.go b/client/proxy/proxy_manager.go index 95778ce0213..ea5cc553112 100644 --- a/client/proxy/proxy_manager.go +++ b/client/proxy/proxy_manager.go @@ -28,12 +28,14 @@ import ( "github.com/fatedier/frp/pkg/msg" "github.com/fatedier/frp/pkg/transport" "github.com/fatedier/frp/pkg/util/xlog" + "github.com/fatedier/frp/pkg/vnet" ) type Manager struct { proxies map[string]*Wrapper msgTransporter transport.MessageTransporter inWorkConnCallback func(*v1.ProxyBaseConfig, net.Conn, *msg.StartWorkConn) bool + vnetController *vnet.Controller closed bool mu sync.RWMutex @@ -47,10 +49,12 @@ func NewManager( ctx context.Context, clientCfg *v1.ClientCommonConfig, msgTransporter transport.MessageTransporter, + vnetController *vnet.Controller, ) *Manager { return &Manager{ proxies: make(map[string]*Wrapper), msgTransporter: msgTransporter, + vnetController: vnetController, closed: false, clientCfg: clientCfg, ctx: ctx, @@ -96,7 +100,7 @@ func (pm *Manager) HandleWorkConn(name string, workConn net.Conn, m *msg.StartWo } } -func (pm *Manager) HandleEvent(payload interface{}) error { +func (pm *Manager) HandleEvent(payload any) error { var m msg.Message switch e := payload.(type) { case *event.StartProxyPayload: @@ -159,7 +163,7 @@ func (pm *Manager) UpdateAll(proxyCfgs []v1.ProxyConfigurer) { for _, cfg := range proxyCfgs { name := cfg.GetBaseConfig().Name if _, ok := pm.proxies[name]; !ok { - pxy := NewWrapper(pm.ctx, cfg, pm.clientCfg, pm.HandleEvent, pm.msgTransporter) + pxy := NewWrapper(pm.ctx, cfg, pm.clientCfg, pm.HandleEvent, pm.msgTransporter, pm.vnetController) if pm.inWorkConnCallback != nil { pxy.SetInWorkConnCallback(pm.inWorkConnCallback) } diff --git a/client/proxy/proxy_wrapper.go b/client/proxy/proxy_wrapper.go index 487e3702b9e..f3f17e2b10c 100644 --- a/client/proxy/proxy_wrapper.go +++ b/client/proxy/proxy_wrapper.go @@ -31,6 +31,7 @@ import ( "github.com/fatedier/frp/pkg/msg" "github.com/fatedier/frp/pkg/transport" "github.com/fatedier/frp/pkg/util/xlog" + "github.com/fatedier/frp/pkg/vnet" ) const ( @@ -73,6 +74,8 @@ type Wrapper struct { handler event.Handler msgTransporter transport.MessageTransporter + // vnet controller + vnetController *vnet.Controller health uint32 lastSendStartMsg time.Time @@ -91,6 +94,7 @@ func NewWrapper( clientCfg *v1.ClientCommonConfig, eventHandler event.Handler, msgTransporter transport.MessageTransporter, + vnetController *vnet.Controller, ) *Wrapper { baseInfo := cfg.GetBaseConfig() xl := xlog.FromContextSafe(ctx).Spawn().AppendPrefix(baseInfo.Name) @@ -105,6 +109,7 @@ func NewWrapper( healthNotifyCh: make(chan struct{}), handler: eventHandler, msgTransporter: msgTransporter, + vnetController: vnetController, xl: xl, ctx: xlog.NewContext(ctx, xl), } @@ -117,7 +122,7 @@ func NewWrapper( xl.Tracef("enable health check monitor") } - pw.pxy = NewProxy(pw.ctx, pw.Cfg, clientCfg, pw.msgTransporter) + pw.pxy = NewProxy(pw.ctx, pw.Cfg, clientCfg, pw.msgTransporter, pw.vnetController) return pw } @@ -137,7 +142,7 @@ func (pw *Wrapper) SetRunningStatus(remoteAddr string, respErr string) error { pw.Phase = ProxyPhaseStartErr pw.Err = respErr pw.lastStartErr = time.Now() - return fmt.Errorf(pw.Err) + return fmt.Errorf("%s", pw.Err) } if err := pw.pxy.Run(); err != nil { diff --git a/client/proxy/sudp.go b/client/proxy/sudp.go index ad9db89a940..13741d0ddc7 100644 --- a/client/proxy/sudp.go +++ b/client/proxy/sudp.go @@ -205,5 +205,5 @@ func (pxy *SUDPProxy) InWorkConn(conn net.Conn, _ *msg.StartWorkConn) { go workConnReaderFn(workConn, readCh) go heartbeatFn(sendCh) - udp.Forwarder(pxy.localAddr, readCh, sendCh, int(pxy.clientCfg.UDPPacketSize)) + udp.Forwarder(pxy.localAddr, readCh, sendCh, int(pxy.clientCfg.UDPPacketSize), pxy.cfg.Transport.ProxyProtocolVersion) } diff --git a/client/proxy/udp.go b/client/proxy/udp.go index b08fe1608ad..b70ffe4a0c8 100644 --- a/client/proxy/udp.go +++ b/client/proxy/udp.go @@ -171,5 +171,7 @@ func (pxy *UDPProxy) InWorkConn(conn net.Conn, _ *msg.StartWorkConn) { go workConnSenderFn(pxy.workConn, pxy.sendCh) go workConnReaderFn(pxy.workConn, pxy.readCh) go heartbeatFn(pxy.sendCh) - udp.Forwarder(pxy.localAddr, pxy.readCh, pxy.sendCh, int(pxy.clientCfg.UDPPacketSize)) + + // Call Forwarder with proxy protocol version (empty string means no proxy protocol) + udp.Forwarder(pxy.localAddr, pxy.readCh, pxy.sendCh, int(pxy.clientCfg.UDPPacketSize), pxy.cfg.Transport.ProxyProtocolVersion) } diff --git a/client/proxy/xtcp.go b/client/proxy/xtcp.go index 31f9ac89734..6e1deac39d3 100644 --- a/client/proxy/xtcp.go +++ b/client/proxy/xtcp.go @@ -64,11 +64,19 @@ func (pxy *XTCPProxy) InWorkConn(conn net.Conn, startWorkConnMsg *msg.StartWorkC } xl.Tracef("nathole prepare start") - prepareResult, err := nathole.Prepare([]string{pxy.clientCfg.NatHoleSTUNServer}) + + // Prepare NAT traversal options + var opts nathole.PrepareOptions + if pxy.cfg.NatTraversal != nil && pxy.cfg.NatTraversal.DisableAssistedAddrs { + opts.DisableAssistedAddrs = true + } + + prepareResult, err := nathole.Prepare([]string{pxy.clientCfg.NatHoleSTUNServer}, opts) if err != nil { xl.Warnf("nathole prepare error: %v", err) return } + xl.Infof("nathole prepare success, nat type: %s, behavior: %s, addresses: %v, assistedAddresses: %v", prepareResult.NatType, prepareResult.Behavior, prepareResult.Addrs, prepareResult.AssistedAddrs) defer prepareResult.ListenConn.Close() diff --git a/client/service.go b/client/service.go index 7a7f6dc88d2..f906e4d0a82 100644 --- a/client/service.go +++ b/client/service.go @@ -37,6 +37,7 @@ import ( "github.com/fatedier/frp/pkg/util/version" "github.com/fatedier/frp/pkg/util/wait" "github.com/fatedier/frp/pkg/util/xlog" + "github.com/fatedier/frp/pkg/vnet" ) func init() { @@ -87,13 +88,16 @@ type ServiceOptions struct { } // setServiceOptionsDefault sets the default values for ServiceOptions. -func setServiceOptionsDefault(options *ServiceOptions) { +func setServiceOptionsDefault(options *ServiceOptions) error { if options.Common != nil { - options.Common.Complete() + if err := options.Common.Complete(); err != nil { + return err + } } if options.ConnectorCreator == nil { options.ConnectorCreator = NewConnector } + return nil } // Service is the client service that connects to frps and provides proxy services. @@ -110,6 +114,8 @@ type Service struct { // web server for admin UI and apis webServer *httppkg.Server + vnetController *vnet.Controller + cfgMu sync.RWMutex common *v1.ClientCommonConfig proxyCfgs []v1.ProxyConfigurer @@ -131,7 +137,9 @@ type Service struct { } func NewService(options ServiceOptions) (*Service, error) { - setServiceOptionsDefault(&options) + if err := setServiceOptionsDefault(&options); err != nil { + return nil, err + } var webServer *httppkg.Server if options.Common.WebServer.Port > 0 { @@ -141,9 +149,15 @@ func NewService(options ServiceOptions) (*Service, error) { } webServer = ws } + + authSetter, err := auth.NewAuthSetter(options.Common.Auth) + if err != nil { + return nil, err + } + s := &Service{ ctx: context.Background(), - authSetter: auth.NewAuthSetter(options.Common.Auth), + authSetter: authSetter, webServer: webServer, common: options.Common, configFilePath: options.ConfigFilePath, @@ -156,6 +170,9 @@ func NewService(options ServiceOptions) (*Service, error) { if webServer != nil { webServer.RouteRegister(s.registerRouteHandlers) } + if options.Common.VirtualNet.Address != "" { + s.vnetController = vnet.NewController(options.Common.VirtualNet) + } return s, nil } @@ -169,16 +186,19 @@ func (svr *Service) Run(ctx context.Context) error { netpkg.SetDefaultDNSAddress(svr.common.DNSServer) } - // first login to frps - svr.loopLoginUntilSuccess(10*time.Second, lo.FromPtr(svr.common.LoginFailExit)) - if svr.ctl == nil { - cancelCause := cancelErr{} - _ = errors.As(context.Cause(svr.ctx), &cancelCause) - return fmt.Errorf("login to the server failed: %v. With loginFailExit enabled, no additional retries will be attempted", cancelCause.Err) + if svr.vnetController != nil { + if err := svr.vnetController.Init(); err != nil { + log.Errorf("init virtual network controller error: %v", err) + return err + } + go func() { + log.Infof("virtual network controller start...") + if err := svr.vnetController.Run(); err != nil { + log.Warnf("virtual network controller exit with error: %v", err) + } + }() } - go svr.keepControllerWorking() - if svr.webServer != nil { go func() { log.Infof("admin server listen on %s", svr.webServer.Address()) @@ -187,6 +207,17 @@ func (svr *Service) Run(ctx context.Context) error { } }() } + + // first login to frps + svr.loopLoginUntilSuccess(10*time.Second, lo.FromPtr(svr.common.LoginFailExit)) + if svr.ctl == nil { + cancelCause := cancelErr{} + _ = errors.As(context.Cause(svr.ctx), &cancelCause) + return fmt.Errorf("login to the server failed: %v. With loginFailExit enabled, no additional retries will be attempted", cancelCause.Err) + } + + go svr.keepControllerWorking() + <-svr.ctx.Done() svr.stop() return nil @@ -305,22 +336,22 @@ func (svr *Service) loopLoginUntilSuccess(maxInterval time.Duration, firstLoginE proxyCfgs := svr.proxyCfgs visitorCfgs := svr.visitorCfgs svr.cfgMu.RUnlock() - connEncrypted := true - if svr.clientSpec != nil && svr.clientSpec.Type == "ssh-tunnel" { - connEncrypted = false - } + + connEncrypted := svr.clientSpec == nil || svr.clientSpec.Type != "ssh-tunnel" + sessionCtx := &SessionContext{ - Common: svr.common, - RunID: svr.runID, - Conn: conn, - ConnEncrypted: connEncrypted, - AuthSetter: svr.authSetter, - Connector: connector, + Common: svr.common, + RunID: svr.runID, + Conn: conn, + ConnEncrypted: connEncrypted, + AuthSetter: svr.authSetter, + Connector: connector, + VnetController: svr.vnetController, } ctl, err := NewControl(svr.ctx, sessionCtx) if err != nil { conn.Close() - xl.Errorf("NewControl error: %v", err) + xl.Errorf("new control error: %v", err) return false, err } ctl.SetInWorkConnCallback(svr.handleWorkConnCb) @@ -378,20 +409,37 @@ func (svr *Service) stop() { svr.ctl.GracefulClose(svr.gracefulShutdownDuration) svr.ctl = nil } + if svr.webServer != nil { + svr.webServer.Close() + svr.webServer = nil + } } -// TODO(fatedier): Use StatusExporter to provide query interfaces instead of directly using methods from the Service. -func (svr *Service) GetProxyStatus(name string) (*proxy.WorkingStatus, error) { +func (svr *Service) getProxyStatus(name string) (*proxy.WorkingStatus, bool) { svr.ctlMu.RLock() ctl := svr.ctl svr.ctlMu.RUnlock() if ctl == nil { - return nil, fmt.Errorf("control is not running") + return nil, false } - ws, ok := ctl.pm.GetProxyStatus(name) - if !ok { - return nil, fmt.Errorf("proxy [%s] is not found", name) + return ctl.pm.GetProxyStatus(name) +} + +func (svr *Service) StatusExporter() StatusExporter { + return &statusExporterImpl{ + getProxyStatusFunc: svr.getProxyStatus, } - return ws, nil +} + +type StatusExporter interface { + GetProxyStatus(name string) (*proxy.WorkingStatus, bool) +} + +type statusExporterImpl struct { + getProxyStatusFunc func(name string) (*proxy.WorkingStatus, bool) +} + +func (s *statusExporterImpl) GetProxyStatus(name string) (*proxy.WorkingStatus, bool) { + return s.getProxyStatusFunc(name) } diff --git a/client/visitor/stcp.go b/client/visitor/stcp.go index b26faf5200c..124202eb8d5 100644 --- a/client/visitor/stcp.go +++ b/client/visitor/stcp.go @@ -44,6 +44,10 @@ func (sv *STCPVisitor) Run() (err error) { } go sv.internalConnWorker() + + if sv.plugin != nil { + sv.plugin.Start() + } return } diff --git a/client/visitor/visitor.go b/client/visitor/visitor.go index d520f735ddc..fb2b3e118a1 100644 --- a/client/visitor/visitor.go +++ b/client/visitor/visitor.go @@ -20,9 +20,11 @@ import ( "sync" v1 "github.com/fatedier/frp/pkg/config/v1" + plugin "github.com/fatedier/frp/pkg/plugin/visitor" "github.com/fatedier/frp/pkg/transport" netpkg "github.com/fatedier/frp/pkg/util/net" "github.com/fatedier/frp/pkg/util/xlog" + "github.com/fatedier/frp/pkg/vnet" ) // Helper wraps some functions for visitor to use. @@ -34,6 +36,8 @@ type Helper interface { // MsgTransporter returns the message transporter that is used to send and receive messages // to the frp server through the controller. MsgTransporter() transport.MessageTransporter + // VNetController returns the vnet controller that is used to manage the virtual network. + VNetController() *vnet.Controller // RunID returns the run id of current controller. RunID() string } @@ -50,14 +54,34 @@ func NewVisitor( cfg v1.VisitorConfigurer, clientCfg *v1.ClientCommonConfig, helper Helper, -) (visitor Visitor) { +) (Visitor, error) { xl := xlog.FromContextSafe(ctx).Spawn().AppendPrefix(cfg.GetBaseConfig().Name) + ctx = xlog.NewContext(ctx, xl) + var visitor Visitor baseVisitor := BaseVisitor{ clientCfg: clientCfg, helper: helper, - ctx: xlog.NewContext(ctx, xl), + ctx: ctx, internalLn: netpkg.NewInternalListener(), } + if cfg.GetBaseConfig().Plugin.Type != "" { + p, err := plugin.Create( + cfg.GetBaseConfig().Plugin.Type, + plugin.PluginContext{ + Name: cfg.GetBaseConfig().Name, + Ctx: ctx, + VnetController: helper.VNetController(), + HandleConn: func(conn net.Conn) { + _ = baseVisitor.AcceptConn(conn) + }, + }, + cfg.GetBaseConfig().Plugin.VisitorPluginOptions, + ) + if err != nil { + return nil, err + } + baseVisitor.plugin = p + } switch cfg := cfg.(type) { case *v1.STCPVisitorConfig: visitor = &STCPVisitor{ @@ -77,7 +101,7 @@ func NewVisitor( checkCloseCh: make(chan struct{}), } } - return + return visitor, nil } type BaseVisitor struct { @@ -85,6 +109,7 @@ type BaseVisitor struct { helper Helper l net.Listener internalLn *netpkg.InternalListener + plugin plugin.Plugin mu sync.RWMutex ctx context.Context @@ -101,4 +126,7 @@ func (v *BaseVisitor) Close() { if v.internalLn != nil { v.internalLn.Close() } + if v.plugin != nil { + v.plugin.Close() + } } diff --git a/client/visitor/visitor_manager.go b/client/visitor/visitor_manager.go index 6ff65dabae0..b3539c69295 100644 --- a/client/visitor/visitor_manager.go +++ b/client/visitor/visitor_manager.go @@ -27,6 +27,7 @@ import ( v1 "github.com/fatedier/frp/pkg/config/v1" "github.com/fatedier/frp/pkg/transport" "github.com/fatedier/frp/pkg/util/xlog" + "github.com/fatedier/frp/pkg/vnet" ) type Manager struct { @@ -50,6 +51,7 @@ func NewManager( clientCfg *v1.ClientCommonConfig, connectServer func() (net.Conn, error), msgTransporter transport.MessageTransporter, + vnetController *vnet.Controller, ) *Manager { m := &Manager{ clientCfg: clientCfg, @@ -62,6 +64,7 @@ func NewManager( m.helper = &visitorHelperImpl{ connectServerFn: connectServer, msgTransporter: msgTransporter, + vnetController: vnetController, transferConnFn: m.TransferConn, runID: runID, } @@ -112,7 +115,11 @@ func (vm *Manager) Close() { func (vm *Manager) startVisitor(cfg v1.VisitorConfigurer) (err error) { xl := xlog.FromContextSafe(vm.ctx) name := cfg.GetBaseConfig().Name - visitor := NewVisitor(vm.ctx, cfg, vm.clientCfg, vm.helper) + visitor, err := NewVisitor(vm.ctx, cfg, vm.clientCfg, vm.helper) + if err != nil { + xl.Warnf("new visitor error: %v", err) + return + } err = visitor.Run() if err != nil { xl.Warnf("start error: %v", err) @@ -187,6 +194,7 @@ func (vm *Manager) TransferConn(name string, conn net.Conn) error { type visitorHelperImpl struct { connectServerFn func() (net.Conn, error) msgTransporter transport.MessageTransporter + vnetController *vnet.Controller transferConnFn func(name string, conn net.Conn) error runID string } @@ -203,6 +211,10 @@ func (v *visitorHelperImpl) MsgTransporter() transport.MessageTransporter { return v.msgTransporter } +func (v *visitorHelperImpl) VNetController() *vnet.Controller { + return v.vnetController +} + func (v *visitorHelperImpl) RunID() string { return v.runID } diff --git a/client/visitor/xtcp.go b/client/visitor/xtcp.go index a1efd72b62b..353577db659 100644 --- a/client/visitor/xtcp.go +++ b/client/visitor/xtcp.go @@ -73,6 +73,10 @@ func (sv *XTCPVisitor) Run() (err error) { sv.retryLimiter = rate.NewLimiter(rate.Every(time.Hour/time.Duration(sv.cfg.MaxRetriesAnHour)), sv.cfg.MaxRetriesAnHour) go sv.keepTunnelOpenWorker() } + + if sv.plugin != nil { + sv.plugin.Start() + } return } @@ -141,7 +145,7 @@ func (sv *XTCPVisitor) keepTunnelOpenWorker() { return case <-ticker.C: xl.Debugf("keepTunnelOpenWorker try to check tunnel...") - conn, err := sv.getTunnelConn() + conn, err := sv.getTunnelConn(sv.ctx) if err != nil { xl.Warnf("keepTunnelOpenWorker get tunnel connection error: %v", err) _ = sv.retryLimiter.Wait(sv.ctx) @@ -157,9 +161,9 @@ func (sv *XTCPVisitor) keepTunnelOpenWorker() { func (sv *XTCPVisitor) handleConn(userConn net.Conn) { xl := xlog.FromContextSafe(sv.ctx) - isConnTrasfered := false + isConnTransferred := false defer func() { - if !isConnTrasfered { + if !isConnTransferred { userConn.Close() } }() @@ -168,7 +172,7 @@ func (sv *XTCPVisitor) handleConn(userConn net.Conn) { // Open a tunnel connection to the server. If there is already a successful hole-punching connection, // it will be reused. Otherwise, it will block and wait for a successful hole-punching connection until timeout. - ctx := context.Background() + ctx := sv.ctx if sv.cfg.FallbackTo != "" { timeoutCtx, cancel := context.WithTimeout(ctx, time.Duration(sv.cfg.FallbackTimeoutMs)*time.Millisecond) defer cancel() @@ -187,7 +191,7 @@ func (sv *XTCPVisitor) handleConn(userConn net.Conn) { xl.Errorf("transfer connection to visitor %s error: %v", sv.cfg.FallbackTo, err) return } - isConnTrasfered = true + isConnTransferred = true return } @@ -215,40 +219,37 @@ func (sv *XTCPVisitor) handleConn(userConn net.Conn) { // openTunnel will open a tunnel connection to the target server. func (sv *XTCPVisitor) openTunnel(ctx context.Context) (conn net.Conn, err error) { xl := xlog.FromContextSafe(sv.ctx) - ticker := time.NewTicker(500 * time.Millisecond) - defer ticker.Stop() + ctx, cancel := context.WithTimeout(ctx, 20*time.Second) + defer cancel() - timeoutC := time.After(20 * time.Second) - immediateTrigger := make(chan struct{}, 1) - defer close(immediateTrigger) - immediateTrigger <- struct{}{} + timer := time.NewTimer(0) + defer timer.Stop() for { select { case <-sv.ctx.Done(): return nil, sv.ctx.Err() case <-ctx.Done(): + if errors.Is(ctx.Err(), context.DeadlineExceeded) { + return nil, fmt.Errorf("open tunnel timeout") + } return nil, ctx.Err() - case <-immediateTrigger: - conn, err = sv.getTunnelConn() - case <-ticker.C: - conn, err = sv.getTunnelConn() - case <-timeoutC: - return nil, fmt.Errorf("open tunnel timeout") - } - - if err != nil { - if err != ErrNoTunnelSession { - xl.Warnf("get tunnel connection error: %v", err) + case <-timer.C: + conn, err = sv.getTunnelConn(ctx) + if err != nil { + if !errors.Is(err, ErrNoTunnelSession) { + xl.Warnf("get tunnel connection error: %v", err) + } + timer.Reset(500 * time.Millisecond) + continue } - continue + return conn, nil } - return conn, nil } } -func (sv *XTCPVisitor) getTunnelConn() (net.Conn, error) { - conn, err := sv.session.OpenConn(sv.ctx) +func (sv *XTCPVisitor) getTunnelConn(ctx context.Context) (net.Conn, error) { + conn, err := sv.session.OpenConn(ctx) if err == nil { return conn, nil } @@ -275,11 +276,19 @@ func (sv *XTCPVisitor) makeNatHole() { } xl.Tracef("nathole prepare start") - prepareResult, err := nathole.Prepare([]string{sv.clientCfg.NatHoleSTUNServer}) + + // Prepare NAT traversal options + var opts nathole.PrepareOptions + if sv.cfg.NatTraversal != nil && sv.cfg.NatTraversal.DisableAssistedAddrs { + opts.DisableAssistedAddrs = true + } + + prepareResult, err := nathole.Prepare([]string{sv.clientCfg.NatHoleSTUNServer}, opts) if err != nil { xl.Warnf("nathole prepare error: %v", err) return } + xl.Infof("nathole prepare success, nat type: %s, behavior: %s, addresses: %v, assistedAddresses: %v", prepareResult.NatType, prepareResult.Behavior, prepareResult.Addrs, prepareResult.AssistedAddrs) @@ -394,7 +403,7 @@ func (ks *KCPTunnelSession) Close() { } type QUICTunnelSession struct { - session quic.Connection + session *quic.Conn listenConn *net.UDPConn mu sync.RWMutex diff --git a/cmd/frpc/sub/admin.go b/cmd/frpc/sub/admin.go index 5d478d44a58..abe8063585c 100644 --- a/cmd/frpc/sub/admin.go +++ b/cmd/frpc/sub/admin.go @@ -15,9 +15,11 @@ package sub import ( + "context" "fmt" "os" "strings" + "time" "github.com/rodaine/table" "github.com/spf13/cobra" @@ -27,24 +29,24 @@ import ( clientsdk "github.com/fatedier/frp/pkg/sdk/client" ) -func init() { - rootCmd.AddCommand(NewAdminCommand( - "reload", - "Hot-Reload frpc configuration", - ReloadHandler, - )) +var adminAPITimeout = 30 * time.Second - rootCmd.AddCommand(NewAdminCommand( - "status", - "Overview of all proxies status", - StatusHandler, - )) +func init() { + commands := []struct { + name string + description string + handler func(*v1.ClientCommonConfig) error + }{ + {"reload", "Hot-Reload frpc configuration", ReloadHandler}, + {"status", "Overview of all proxies status", StatusHandler}, + {"stop", "Stop the running frpc", StopHandler}, + } - rootCmd.AddCommand(NewAdminCommand( - "stop", - "Stop the running frpc", - StopHandler, - )) + for _, cmdConfig := range commands { + cmd := NewAdminCommand(cmdConfig.name, cmdConfig.description, cmdConfig.handler) + cmd.Flags().DurationVar(&adminAPITimeout, "api-timeout", adminAPITimeout, "Timeout for admin API calls") + rootCmd.AddCommand(cmd) + } } func NewAdminCommand(name, short string, handler func(*v1.ClientCommonConfig) error) *cobra.Command { @@ -73,7 +75,9 @@ func NewAdminCommand(name, short string, handler func(*v1.ClientCommonConfig) er func ReloadHandler(clientCfg *v1.ClientCommonConfig) error { client := clientsdk.New(clientCfg.WebServer.Addr, clientCfg.WebServer.Port) client.SetAuth(clientCfg.WebServer.User, clientCfg.WebServer.Password) - if err := client.Reload(strictConfigMode); err != nil { + ctx, cancel := context.WithTimeout(context.Background(), adminAPITimeout) + defer cancel() + if err := client.Reload(ctx, strictConfigMode); err != nil { return err } fmt.Println("reload success") @@ -83,7 +87,9 @@ func ReloadHandler(clientCfg *v1.ClientCommonConfig) error { func StatusHandler(clientCfg *v1.ClientCommonConfig) error { client := clientsdk.New(clientCfg.WebServer.Addr, clientCfg.WebServer.Port) client.SetAuth(clientCfg.WebServer.User, clientCfg.WebServer.Password) - res, err := client.GetAllProxyStatus() + ctx, cancel := context.WithTimeout(context.Background(), adminAPITimeout) + defer cancel() + res, err := client.GetAllProxyStatus(ctx) if err != nil { return err } @@ -109,7 +115,9 @@ func StatusHandler(clientCfg *v1.ClientCommonConfig) error { func StopHandler(clientCfg *v1.ClientCommonConfig) error { client := clientsdk.New(clientCfg.WebServer.Addr, clientCfg.WebServer.Port) client.SetAuth(clientCfg.WebServer.User, clientCfg.WebServer.Password) - if err := client.Stop(); err != nil { + ctx, cancel := context.WithTimeout(context.Background(), adminAPITimeout) + defer cancel() + if err := client.Stop(ctx); err != nil { return err } fmt.Println("stop success") diff --git a/cmd/frpc/sub/nathole.go b/cmd/frpc/sub/nathole.go index fb5b08078c2..a07d6852305 100644 --- a/cmd/frpc/sub/nathole.go +++ b/cmd/frpc/sub/nathole.go @@ -51,7 +51,10 @@ var natholeDiscoveryCmd = &cobra.Command{ cfg, _, _, _, err := config.LoadClientConfig(cfgFile, strictConfigMode) if err != nil { cfg = &v1.ClientCommonConfig{} - cfg.Complete() + if err := cfg.Complete(); err != nil { + fmt.Printf("failed to complete config: %v\n", err) + os.Exit(1) + } } if natHoleSTUNServer != "" { cfg.NatHoleSTUNServer = natHoleSTUNServer diff --git a/cmd/frpc/sub/proxy.go b/cmd/frpc/sub/proxy.go index c5d76b1e3b3..67bd774f7a3 100644 --- a/cmd/frpc/sub/proxy.go +++ b/cmd/frpc/sub/proxy.go @@ -73,7 +73,10 @@ func NewProxyCommand(name string, c v1.ProxyConfigurer, clientCfg *v1.ClientComm Use: name, Short: fmt.Sprintf("Run frpc with a single %s proxy", name), Run: func(cmd *cobra.Command, args []string) { - clientCfg.Complete() + if err := clientCfg.Complete(); err != nil { + fmt.Println(err) + os.Exit(1) + } if _, err := validation.ValidateClientCommonConfig(clientCfg); err != nil { fmt.Println(err) os.Exit(1) @@ -99,7 +102,10 @@ func NewVisitorCommand(name string, c v1.VisitorConfigurer, clientCfg *v1.Client Use: "visitor", Short: fmt.Sprintf("Run frpc with a single %s visitor", name), Run: func(cmd *cobra.Command, args []string) { - clientCfg.Complete() + if err := clientCfg.Complete(); err != nil { + fmt.Println(err) + os.Exit(1) + } if _, err := validation.ValidateClientCommonConfig(clientCfg); err != nil { fmt.Println(err) os.Exit(1) diff --git a/cmd/frpc/sub/root.go b/cmd/frpc/sub/root.go index b844ddfd5e9..ee89c48947a 100644 --- a/cmd/frpc/sub/root.go +++ b/cmd/frpc/sub/root.go @@ -31,6 +31,7 @@ import ( "github.com/fatedier/frp/pkg/config" v1 "github.com/fatedier/frp/pkg/config/v1" "github.com/fatedier/frp/pkg/config/v1/validation" + "github.com/fatedier/frp/pkg/featuregate" "github.com/fatedier/frp/pkg/util/log" "github.com/fatedier/frp/pkg/util/version" ) @@ -120,6 +121,12 @@ func runClient(cfgFilePath string) error { "please use yaml/json/toml format instead!\n") } + if len(cfg.FeatureGates) > 0 { + if err := featuregate.SetFromMap(cfg.FeatureGates); err != nil { + return err + } + } + warning, err := validation.ValidateAllClientConfig(cfg, proxyCfgs, visitorCfgs) if warning != nil { fmt.Printf("WARNING: %v\n", warning) diff --git a/cmd/frps/root.go b/cmd/frps/root.go index fff487d1074..c1bfc880624 100644 --- a/cmd/frps/root.go +++ b/cmd/frps/root.go @@ -70,7 +70,10 @@ var rootCmd = &cobra.Command{ "please use yaml/json/toml format instead!\n") } } else { - serverCfg.Complete() + if err := serverCfg.Complete(); err != nil { + fmt.Printf("failed to complete server config: %v\n", err) + os.Exit(1) + } svrCfg = &serverCfg } diff --git a/conf/frpc_full_example.toml b/conf/frpc_full_example.toml index 0528ddeaf37..6b86907e459 100644 --- a/conf/frpc_full_example.toml +++ b/conf/frpc_full_example.toml @@ -32,6 +32,11 @@ auth.method = "token" # auth token auth.token = "12345678" +# alternatively, you can use tokenSource to load the token from a file +# this is mutually exclusive with auth.token +# auth.tokenSource.type = "file" +# auth.tokenSource.file.path = "/etc/frp/token" + # oidc.clientID specifies the client ID to use to get a token in OIDC authentication. # auth.oidc.clientID = "" # oidc.clientSecret specifies the client secret to use to get a token in OIDC authentication. @@ -50,6 +55,20 @@ auth.token = "12345678" # auth.oidc.additionalEndpointParams.audience = "https://dev.auth.com/api/v2/" # auth.oidc.additionalEndpointParams.var1 = "foobar" +# OIDC TLS and proxy configuration +# Specify a custom CA certificate file for verifying the OIDC token endpoint's TLS certificate. +# This is useful when the OIDC provider uses a self-signed certificate or a custom CA. +# auth.oidc.trustedCaFile = "/path/to/ca.crt" + +# Skip TLS certificate verification for the OIDC token endpoint. +# INSECURE: Only use this for debugging purposes, not recommended for production. +# auth.oidc.insecureSkipVerify = false + +# Specify a proxy server for OIDC token endpoint connections. +# Supports http, https, socks5, and socks5h proxy protocols. +# If not specified, no proxy is used for OIDC connections. +# auth.oidc.proxyURL = "http://proxy.example.com:8080" + # Set admin address for control frpc's action by http api such as reload webServer.addr = "127.0.0.1" webServer.port = 7400 @@ -76,7 +95,7 @@ transport.poolCount = 5 # Specify keep alive interval for tcp mux. # only valid if tcpMux is enabled. -# transport.tcpMuxKeepaliveInterval = 60 +# transport.tcpMuxKeepaliveInterval = 30 # Communication protocol used to connect to server # supports tcp, kcp, quic, websocket and wss now, default is tcp @@ -129,6 +148,15 @@ transport.tls.enable = true # It affects the udp and sudp proxy. udpPacketSize = 1500 +# Feature gates allows you to enable or disable experimental features +# Format is a map of feature names to boolean values +# You can enable specific features: +#featureGates = { VirtualNet = true } + +# VirtualNet settings for experimental virtual network capabilities +# The virtual network feature requires enabling the VirtualNet feature gate above +# virtualNet.address = "100.86.1.1/24" + # Additional metadatas for client. metadatas.var1 = "abc" metadatas.var2 = "123" @@ -209,6 +237,7 @@ locations = ["/", "/pic"] # routeByHTTPUser = abc hostHeaderRewrite = "example.com" requestHeaders.set.x-from-where = "frp" +responseHeaders.set.foo = "bar" healthCheck.type = "http" # frpc will send a GET http request '/status' to local http service # http service is alive when it return 2xx http response code @@ -314,6 +343,26 @@ localAddr = "127.0.0.1:443" hostHeaderRewrite = "127.0.0.1" requestHeaders.set.x-from-where = "frp" +[[proxies]] +name = "plugin_http2http" +type = "tcp" +remotePort = 6007 +[proxies.plugin] +type = "http2http" +localAddr = "127.0.0.1:80" +hostHeaderRewrite = "127.0.0.1" +requestHeaders.set.x-from-where = "frp" + +[[proxies]] +name = "plugin_tls2raw" +type = "tcp" +remotePort = 6008 +[proxies.plugin] +type = "tls2raw" +localAddr = "127.0.0.1:80" +crtPath = "./server.crt" +keyPath = "./server.key" + [[proxies]] name = "secret_tcp" # If the type is secret tcp, remotePort is useless @@ -337,6 +386,21 @@ localPort = 22 # Otherwise, visitors from same user can connect. '*' means allow all users. allowUsers = ["user1", "user2"] +# NAT traversal configuration (optional) +[proxies.natTraversal] +# Disable the use of local network interfaces (assisted addresses) for NAT traversal. +# When enabled, only STUN-discovered public addresses will be used. +# This can improve performance when you have slow VPN connections. +# Default: false +disableAssistedAddrs = false + +[[proxies]] +name = "vnet-server" +type = "stcp" +secretKey = "your-secret-key" +[proxies.plugin] +type = "virtual_net" + # frpc role visitor -> frps -> frpc role server [[visitors]] name = "secret_tcp_visitor" @@ -368,3 +432,20 @@ maxRetriesAnHour = 8 minRetryInterval = 90 # fallbackTo = "stcp_visitor" # fallbackTimeoutMs = 500 + +# NAT traversal configuration (optional) +[visitors.natTraversal] +# Disable the use of local network interfaces (assisted addresses) for NAT traversal. +# When enabled, only STUN-discovered public addresses will be used. +# Default: false +disableAssistedAddrs = false + +[[visitors]] +name = "vnet-visitor" +type = "stcp" +serverName = "vnet-server" +secretKey = "your-secret-key" +bindPort = -1 +[visitors.plugin] +type = "virtual_net" +destinationIP = "100.86.0.1" diff --git a/conf/frps_full_example.toml b/conf/frps_full_example.toml index 35c1a57b5bb..aba37435ffc 100644 --- a/conf/frps_full_example.toml +++ b/conf/frps_full_example.toml @@ -34,7 +34,7 @@ transport.maxPoolCount = 5 # Specify keep alive interval for tcp mux. # only valid if tcpMux is true. -# transport.tcpMuxKeepaliveInterval = 60 +# transport.tcpMuxKeepaliveInterval = 30 # tcpKeepalive specifies the interval between keep-alive probes for an active network connection between frpc and frps. # If negative, keep-alive probes are disabled. @@ -105,6 +105,11 @@ auth.method = "token" # auth token auth.token = "12345678" +# alternatively, you can use tokenSource to load the token from a file +# this is mutually exclusive with auth.token +# auth.tokenSource.type = "file" +# auth.tokenSource.file.path = "/etc/frp/token" + # oidc issuer specifies the issuer to verify OIDC tokens with. auth.oidc.issuer = "" # oidc audience specifies the audience OIDC tokens should contain when validated. diff --git a/doc/pic/donate-wechatpay.png b/doc/pic/donate-wechatpay.png deleted file mode 100644 index d8fef5872f3..00000000000 Binary files a/doc/pic/donate-wechatpay.png and /dev/null differ diff --git a/doc/pic/sponsor_daytona.png b/doc/pic/sponsor_daytona.png index b00f9327900..a5271cc9502 100644 Binary files a/doc/pic/sponsor_daytona.png and b/doc/pic/sponsor_daytona.png differ diff --git a/doc/pic/sponsor_doppler.png b/doc/pic/sponsor_doppler.png deleted file mode 100644 index 0d66038b717..00000000000 Binary files a/doc/pic/sponsor_doppler.png and /dev/null differ diff --git a/doc/pic/sponsor_jetbrains.jpg b/doc/pic/sponsor_jetbrains.jpg new file mode 100644 index 00000000000..be2113cbc49 Binary files /dev/null and b/doc/pic/sponsor_jetbrains.jpg differ diff --git a/doc/pic/sponsor_lokal.png b/doc/pic/sponsor_lokal.png new file mode 100644 index 00000000000..82386356fca Binary files /dev/null and b/doc/pic/sponsor_lokal.png differ diff --git a/doc/pic/sponsor_nango.png b/doc/pic/sponsor_nango.png deleted file mode 100644 index 4b83565698c..00000000000 Binary files a/doc/pic/sponsor_nango.png and /dev/null differ diff --git a/doc/pic/sponsor_olares.jpeg b/doc/pic/sponsor_olares.jpeg new file mode 100644 index 00000000000..375c2a7ddb8 Binary files /dev/null and b/doc/pic/sponsor_olares.jpeg differ diff --git a/doc/server_plugin.md b/doc/server_plugin.md index b8fa161907e..6ddef827470 100644 --- a/doc/server_plugin.md +++ b/doc/server_plugin.md @@ -121,7 +121,7 @@ Create new proxy // http and https only "custom_domains": [], "subdomain": , - "locations": , + "locations": [], "http_user": , "http_pwd": , "host_header_rewrite": , diff --git a/doc/virtual_net.md b/doc/virtual_net.md new file mode 100644 index 00000000000..6f135dfc2fc --- /dev/null +++ b/doc/virtual_net.md @@ -0,0 +1,73 @@ +# Virtual Network (VirtualNet) + +*Alpha feature added in v0.62.0* + +The VirtualNet feature enables frp to create and manage virtual network connections between clients and visitors through a TUN interface. This allows for IP-level routing between machines, extending frp beyond simple port forwarding to support full network connectivity. + +> **Note**: VirtualNet is an Alpha stage feature and is currently unstable. Its configuration methods and functionality may be adjusted and changed at any time in subsequent versions. Do not use this feature in production environments; it is only recommended for testing and evaluation purposes. + +## Enabling VirtualNet + +Since VirtualNet is currently an alpha feature, you need to enable it with feature gates in your configuration: + +```toml +# frpc.toml +featureGates = { VirtualNet = true } +``` + +## Basic Configuration + +To use the virtual network capabilities: + +1. First, configure your frpc with a virtual network address: + +```toml +# frpc.toml +serverAddr = "x.x.x.x" +serverPort = 7000 +featureGates = { VirtualNet = true } + +# Configure the virtual network interface +virtualNet.address = "100.86.0.1/24" +``` + +2. For client proxies, use the `virtual_net` plugin: + +```toml +# frpc.toml (server side) +[[proxies]] +name = "vnet-server" +type = "stcp" +secretKey = "your-secret-key" +[proxies.plugin] +type = "virtual_net" +``` + +3. For visitor connections, configure the `virtual_net` visitor plugin: + +```toml +# frpc.toml (client side) +serverAddr = "x.x.x.x" +serverPort = 7000 +featureGates = { VirtualNet = true } + +# Configure the virtual network interface +virtualNet.address = "100.86.0.2/24" + +[[visitors]] +name = "vnet-visitor" +type = "stcp" +serverName = "vnet-server" +secretKey = "your-secret-key" +bindPort = -1 +[visitors.plugin] +type = "virtual_net" +destinationIP = "100.86.0.1" +``` + +## Requirements and Limitations + +- **Permissions**: Creating a TUN interface requires elevated permissions (root/admin) +- **Platform Support**: Currently supported on Linux and macOS +- **Default Status**: As an alpha feature, VirtualNet is disabled by default +- **Configuration**: A valid IP/CIDR must be provided for each endpoint in the virtual network diff --git a/dockerfiles/Dockerfile-for-frpc b/dockerfiles/Dockerfile-for-frpc index 99b3120778a..7d77a26de3d 100644 --- a/dockerfiles/Dockerfile-for-frpc +++ b/dockerfiles/Dockerfile-for-frpc @@ -1,4 +1,4 @@ -FROM golang:1.22 AS building +FROM golang:1.24 AS building COPY . /building WORKDIR /building @@ -7,6 +7,8 @@ RUN make frpc FROM alpine:3 +RUN apk add --no-cache tzdata + COPY --from=building /building/bin/frpc /usr/bin/frpc ENTRYPOINT ["/usr/bin/frpc"] diff --git a/dockerfiles/Dockerfile-for-frps b/dockerfiles/Dockerfile-for-frps index 3d2c387a431..489ce0f5282 100644 --- a/dockerfiles/Dockerfile-for-frps +++ b/dockerfiles/Dockerfile-for-frps @@ -1,4 +1,4 @@ -FROM golang:1.22 AS building +FROM golang:1.24 AS building COPY . /building WORKDIR /building @@ -7,6 +7,8 @@ RUN make frps FROM alpine:3 +RUN apk add --no-cache tzdata + COPY --from=building /building/bin/frps /usr/bin/frps ENTRYPOINT ["/usr/bin/frps"] diff --git a/go.mod b/go.mod index 2a5003d71d8..af633af4135 100644 --- a/go.mod +++ b/go.mod @@ -1,55 +1,56 @@ module github.com/fatedier/frp -go 1.22 +go 1.24.0 require ( github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 - github.com/coreos/go-oidc/v3 v3.10.0 - github.com/fatedier/golib v0.4.2 + github.com/coreos/go-oidc/v3 v3.14.1 + github.com/fatedier/golib v0.5.1 github.com/google/uuid v1.6.0 github.com/gorilla/mux v1.8.1 - github.com/gorilla/websocket v1.5.1 + github.com/gorilla/websocket v1.5.0 github.com/hashicorp/yamux v0.1.1 - github.com/onsi/ginkgo/v2 v2.17.1 - github.com/onsi/gomega v1.32.0 + github.com/onsi/ginkgo/v2 v2.23.4 + github.com/onsi/gomega v1.36.3 github.com/pelletier/go-toml/v2 v2.2.0 github.com/pion/stun/v2 v2.0.0 github.com/pires/go-proxyproto v0.7.0 - github.com/prometheus/client_golang v1.19.0 - github.com/quic-go/quic-go v0.42.0 + github.com/prometheus/client_golang v1.19.1 + github.com/quic-go/quic-go v0.53.0 github.com/rodaine/table v1.2.0 - github.com/samber/lo v1.39.0 + github.com/samber/lo v1.47.0 + github.com/songgao/water v0.0.0-20200317203138-2b4b6d7c09d8 github.com/spf13/cobra v1.8.0 github.com/spf13/pflag v1.0.5 - github.com/stretchr/testify v1.9.0 + github.com/stretchr/testify v1.10.0 github.com/tidwall/gjson v1.17.1 - github.com/xtaci/kcp-go/v5 v5.6.8 - golang.org/x/crypto v0.22.0 - golang.org/x/net v0.24.0 - golang.org/x/oauth2 v0.16.0 - golang.org/x/sync v0.6.0 + github.com/vishvananda/netlink v1.3.0 + github.com/xtaci/kcp-go/v5 v5.6.13 + golang.org/x/crypto v0.37.0 + golang.org/x/net v0.39.0 + golang.org/x/oauth2 v0.28.0 + golang.org/x/sync v0.13.0 golang.org/x/time v0.5.0 + golang.zx2c4.com/wireguard v0.0.0-20231211153847-12269c276173 gopkg.in/ini.v1 v1.67.0 k8s.io/apimachinery v0.28.8 k8s.io/client-go v0.28.8 ) require ( - github.com/Azure/go-ntlmssp v0.0.0-20200615164410-66371956d46c // indirect + github.com/Azure/go-ntlmssp v0.0.0-20221128193559-754e69321358 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect - github.com/go-jose/go-jose/v4 v4.0.1 // indirect - github.com/go-logr/logr v1.4.1 // indirect - github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect - github.com/golang/protobuf v1.5.4 // indirect + github.com/go-jose/go-jose/v4 v4.0.5 // indirect + github.com/go-logr/logr v1.4.2 // indirect + github.com/go-task/slim-sprig/v3 v3.0.0 // indirect github.com/golang/snappy v0.0.4 // indirect - github.com/google/go-cmp v0.6.0 // indirect - github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1 // indirect + github.com/google/go-cmp v0.7.0 // indirect + github.com/google/pprof v0.0.0-20250403155104-27863c87afa6 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/klauspost/cpuid/v2 v2.2.6 // indirect github.com/klauspost/reedsolomon v1.12.0 // indirect - github.com/kr/text v0.2.0 // indirect github.com/pion/dtls/v2 v2.2.7 // indirect github.com/pion/logging v0.2.2 // indirect github.com/pion/transport/v2 v2.2.1 // indirect @@ -59,20 +60,20 @@ require ( github.com/prometheus/client_model v0.5.0 // indirect github.com/prometheus/common v0.48.0 // indirect github.com/prometheus/procfs v0.12.0 // indirect - github.com/rogpeppe/go-internal v1.11.0 // indirect - github.com/templexxx/cpu v0.1.0 // indirect - github.com/templexxx/xorsimd v0.4.2 // indirect + github.com/templexxx/cpu v0.1.1 // indirect + github.com/templexxx/xorsimd v0.4.3 // indirect github.com/tidwall/match v1.1.1 // indirect github.com/tidwall/pretty v1.2.0 // indirect github.com/tjfoc/gmsm v1.4.1 // indirect - go.uber.org/mock v0.4.0 // indirect - golang.org/x/exp v0.0.0-20221205204356-47842c84f3db // indirect - golang.org/x/mod v0.14.0 // indirect - golang.org/x/sys v0.19.0 // indirect - golang.org/x/text v0.14.0 // indirect - golang.org/x/tools v0.17.0 // indirect - google.golang.org/appengine v1.6.8 // indirect - google.golang.org/protobuf v1.33.0 // indirect + github.com/vishvananda/netns v0.0.4 // indirect + go.uber.org/automaxprocs v1.6.0 // indirect + go.uber.org/mock v0.5.0 // indirect + golang.org/x/mod v0.24.0 // indirect + golang.org/x/sys v0.32.0 // indirect + golang.org/x/text v0.24.0 // indirect + golang.org/x/tools v0.31.0 // indirect + golang.zx2c4.com/wintun v0.0.0-20230126152724-0fa3db229ce2 // indirect + google.golang.org/protobuf v1.36.5 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect k8s.io/utils v0.0.0-20230406110748-d93618cff8a2 // indirect @@ -81,4 +82,4 @@ require ( ) // TODO(fatedier): Temporary use the modified version, update to the official version after merging into the official repository. -replace github.com/hashicorp/yamux => github.com/fatedier/yamux v0.0.0-20230628132301-7aca4898904d +replace github.com/hashicorp/yamux => github.com/fatedier/yamux v0.0.0-20250825093530-d0154be01cd6 diff --git a/go.sum b/go.sum index 8f1610f357c..a411ff30581 100644 --- a/go.sum +++ b/go.sum @@ -1,6 +1,6 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -github.com/Azure/go-ntlmssp v0.0.0-20200615164410-66371956d46c h1:/IBSNwUN8+eKzUzbJPqhK839ygXJ82sde8x3ogr6R28= -github.com/Azure/go-ntlmssp v0.0.0-20200615164410-66371956d46c/go.mod h1:chxPXzSsl7ZWRAuOIE23GDNzjWuZquvFlgA8xmpunjU= +github.com/Azure/go-ntlmssp v0.0.0-20221128193559-754e69321358 h1:mFRzDkZVAjdal+s7s0MwaRv9igoPqLRdzOLzw/8Xvq8= +github.com/Azure/go-ntlmssp v0.0.0-20221128193559-754e69321358/go.mod h1:chxPXzSsl7ZWRAuOIE23GDNzjWuZquvFlgA8xmpunjU= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= @@ -9,31 +9,27 @@ github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6r github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= -github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= -github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/coreos/go-oidc/v3 v3.10.0 h1:tDnXHnLyiTVyT/2zLDGj09pFPkhND8Gl8lnTRhoEaJU= -github.com/coreos/go-oidc/v3 v3.10.0/go.mod h1:5j11xcw0D3+SGxn6Z/WFADsgcWVMyNAlSQupk0KK3ac= +github.com/coreos/go-oidc/v3 v3.14.1 h1:9ePWwfdwC4QKRlCXsJGou56adA/owXczOzwKdOumLqk= +github.com/coreos/go-oidc/v3 v3.14.1/go.mod h1:HaZ3szPaZ0e4r6ebqvsLWlk2Tn+aejfmrfah6hnSYEU= github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/fatedier/golib v0.4.2 h1:k+ZBdUFTTipnP1RHfEhGbzyShRdz/rZtFGnjpXG9D9c= -github.com/fatedier/golib v0.4.2/go.mod h1:gpu+1vXxtJ072NYaNsn/YWgojDL8Ap2kFZQtbzT2qkg= -github.com/fatedier/yamux v0.0.0-20230628132301-7aca4898904d h1:ynk1ra0RUqDWQfvFi5KtMiSobkVQ3cNc0ODb8CfIETo= -github.com/fatedier/yamux v0.0.0-20230628132301-7aca4898904d/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ= -github.com/go-jose/go-jose/v4 v4.0.1 h1:QVEPDE3OluqXBQZDcnNvQrInro2h0e4eqNbnZSWqS6U= -github.com/go-jose/go-jose/v4 v4.0.1/go.mod h1:WVf9LFMHh/QVrmqrOfqun0C45tMe3RoiKJMPvgWwLfY= -github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= -github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= -github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= -github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= +github.com/fatedier/golib v0.5.1 h1:hcKAnaw5mdI/1KWRGejxR+i1Hn/NvbY5UsMKDr7o13M= +github.com/fatedier/golib v0.5.1/go.mod h1:W6kIYkIFxHsTzbgqg5piCxIiDo4LzwgTY6R5W8l9NFQ= +github.com/fatedier/yamux v0.0.0-20250825093530-d0154be01cd6 h1:u92UUy6FURPmNsMBUuongRWC0rBqN6gd01Dzu+D21NE= +github.com/fatedier/yamux v0.0.0-20250825093530-d0154be01cd6/go.mod h1:c5/tk6G0dSpXGzJN7Wk1OEie8grdSJAmeawId9Zvd34= +github.com/go-jose/go-jose/v4 v4.0.5 h1:M6T8+mKZl/+fNNuFHvGIzDz7BTLQPIounk/b9dw3AaE= +github.com/go-jose/go-jose/v4 v4.0.5/go.mod h1:s3P1lRrkT8igV8D9OjyL4WRyHvjB6a4JSllnOrmmBOA= +github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= +github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= +github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -45,28 +41,25 @@ github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrU github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= -github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/google/btree v1.0.1 h1:gK4Kx5IaGY9CD5sPJ36FHiBJ6ZXl0kilRiiCj+jdYp4= +github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1 h1:K6RDEckDVWvDI9JAJYCmNdQXq6neHJOYx3V6jnqNEec= -github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= +github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= +github.com/google/pprof v0.0.0-20250403155104-27863c87afa6 h1:BHT72Gu3keYf3ZEu2J0b1vyeLSOYI8bm5wbJM/8yDe8= +github.com/google/pprof v0.0.0-20250403155104-27863c87afa6/go.mod h1:boTsfXsheKC2y+lKOCMpSfarhxDeIzfZG1jqGcPl3cA= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= -github.com/gorilla/websocket v1.5.1 h1:gmztn0JnHVt9JZquRuzLw3g4wouNVzKL15iLr/zn/QY= -github.com/gorilla/websocket v1.5.1/go.mod h1:x3kM2JMyaluk02fnUJpQuwD2dCS5NDG2ZHL0uE0tcaY= -github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= +github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/klauspost/cpuid/v2 v2.2.6 h1:ndNyv040zDGIDh8thGkXYjnFtiN02M1PVVF+JE/48xc= @@ -79,10 +72,10 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U= github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= -github.com/onsi/ginkgo/v2 v2.17.1 h1:V++EzdbhI4ZV4ev0UTIj0PzhzOcReJFyJaLjtSF55M8= -github.com/onsi/ginkgo/v2 v2.17.1/go.mod h1:llBI3WDLL9Z6taip6f33H76YcWtJv+7R3HigUjbIBOs= -github.com/onsi/gomega v1.32.0 h1:JRYU78fJ1LPxlckP6Txi/EYqJvjtMrDC04/MM5XRHPk= -github.com/onsi/gomega v1.32.0/go.mod h1:a4x4gW6Pz2yK1MAmvluYme5lvYTn61afQ2ETw/8n4Lg= +github.com/onsi/ginkgo/v2 v2.23.4 h1:ktYTpKJAVZnDT4VjxSbiBenUjmlL/5QkBEocaWXiQus= +github.com/onsi/ginkgo/v2 v2.23.4/go.mod h1:Bt66ApGPBFzHyR+JO10Zbt0Gsp4uWxu5mIOTusL46e8= +github.com/onsi/gomega v1.36.3 h1:hID7cr8t3Wp26+cYnfcjR6HpJ00fdogN6dqZ1t6IylU= +github.com/onsi/gomega v1.36.3/go.mod h1:8D9+Txp43QWKhM24yyOBEdpkzN8FvJyAwecBgsU4KU0= github.com/pelletier/go-toml/v2 v2.2.0 h1:QLgLl2yMN7N+ruc31VynXs1vhMZa7CeHHejIeBAsoHo= github.com/pelletier/go-toml/v2 v2.2.0/go.mod h1:1t835xjRzz80PqgE6HHgN2JOsmgYu/h4qDAS4n929Rs= github.com/pion/dtls/v2 v2.2.7 h1:cSUBsETxepsCSFSxC3mc/aDo14qQLMSL+O6IjG28yV8= @@ -101,8 +94,10 @@ github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/prometheus/client_golang v1.19.0 h1:ygXvpU1AoN1MhdzckN+PyD9QJOSD4x7kmXYlnfbA6JU= -github.com/prometheus/client_golang v1.19.0/go.mod h1:ZRM9uEAypZakd+q/x7+gmsvXdURP+DABIEIjnmDdp+k= +github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g= +github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U= +github.com/prometheus/client_golang v1.19.1 h1:wZWJDwK+NameRJuPGDhlnFgx8e8HN3XHQeLaYJFJBOE= +github.com/prometheus/client_golang v1.19.1/go.mod h1:mP78NwGzrVks5S2H6ab8+ZZGJLZUq1hoULYBAYBw1Ho= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw= github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI= @@ -110,17 +105,19 @@ github.com/prometheus/common v0.48.0 h1:QO8U2CdOzSn1BBsmXJXduaaW+dY/5QLjfB8svtSz github.com/prometheus/common v0.48.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc= github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= -github.com/quic-go/quic-go v0.42.0 h1:uSfdap0eveIl8KXnipv9K7nlwZ5IqLlYOpJ58u5utpM= -github.com/quic-go/quic-go v0.42.0/go.mod h1:132kz4kL3F9vxhW3CtQJLDVwcFe5wdWeJXXijhsO57M= +github.com/quic-go/quic-go v0.53.0 h1:QHX46sISpG2S03dPeZBgVIZp8dGagIaiu2FiVYvpCZI= +github.com/quic-go/quic-go v0.53.0/go.mod h1:e68ZEaCdyviluZmy44P6Iey98v/Wfz6HCjQEm+l8zTY= github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rodaine/table v1.2.0 h1:38HEnwK4mKSHQJIkavVj+bst1TEY7j9zhLMWu4QJrMA= github.com/rodaine/table v1.2.0/go.mod h1:wejb/q/Yd4T/SVmBSRMr7GCq3KlcZp3gyNYdLSBhkaE= -github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= -github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= +github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= +github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/samber/lo v1.39.0 h1:4gTz1wUhNYLhFSKl6O+8peW0v2F4BCY034GRpU9WnuA= -github.com/samber/lo v1.39.0/go.mod h1:+m/ZKRl6ClXCE2Lgf3MsQlWfh4bn1bz6CXEOxnEXnEA= +github.com/samber/lo v1.47.0 h1:z7RynLwP5nbyRscyvcD043DWYoOcYRv3mV8lBeqOCLc= +github.com/samber/lo v1.47.0/go.mod h1:RmDH9Ct32Qy3gduHQuKJ3gW1fMHAnE/fAzQuf6He5cU= +github.com/songgao/water v0.0.0-20200317203138-2b4b6d7c09d8 h1:TG/diQgUe0pntT/2D9tmUCz4VNwm9MfrtPr0SU2qSX8= +github.com/songgao/water v0.0.0-20200317203138-2b4b6d7c09d8/go.mod h1:P5HUIBuIWKbyjl083/loAegFkfbFNx5i2qEP4CNbm7E= github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= @@ -129,17 +126,17 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= -github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -github.com/templexxx/cpu v0.1.0 h1:wVM+WIJP2nYaxVxqgHPD4wGA2aJ9rvrQRV8CvFzNb40= -github.com/templexxx/cpu v0.1.0/go.mod h1:w7Tb+7qgcAlIyX4NhLuDKt78AHA5SzPmq0Wj6HiEnnk= -github.com/templexxx/xorsimd v0.4.2 h1:ocZZ+Nvu65LGHmCLZ7OoCtg8Fx8jnHKK37SjvngUoVI= -github.com/templexxx/xorsimd v0.4.2/go.mod h1:HgwaPoDREdi6OnULpSfxhzaiiSUY4Fi3JPn1wpt28NI= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/templexxx/cpu v0.1.1 h1:isxHaxBXpYFWnk2DReuKkigaZyrjs2+9ypIdGP4h+HI= +github.com/templexxx/cpu v0.1.1/go.mod h1:w7Tb+7qgcAlIyX4NhLuDKt78AHA5SzPmq0Wj6HiEnnk= +github.com/templexxx/xorsimd v0.4.3 h1:9AQTFHd7Bhk3dIT7Al2XeBX5DWOvsUPZCuhyAtNbHjU= +github.com/templexxx/xorsimd v0.4.3/go.mod h1:oZQcD6RFDisW2Am58dSAGwwL6rHjbzrlu25VDqfWkQg= github.com/tidwall/gjson v1.17.1 h1:wlYEnwqAHgzmhNUFfw7Xalt2JzQvsMx2Se4PcoFCT/U= github.com/tidwall/gjson v1.17.1/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= @@ -148,31 +145,35 @@ github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tjfoc/gmsm v1.4.1 h1:aMe1GlZb+0bLjn+cKTPEvvn9oUEBlJitaZiiBwsbgho= github.com/tjfoc/gmsm v1.4.1/go.mod h1:j4INPkHWMrhJb38G+J6W4Tw0AbuN8Thu3PbdVYhVcTE= -github.com/xtaci/kcp-go/v5 v5.6.8 h1:jlI/0jAyjoOjT/SaGB58s4bQMJiNS41A2RKzR6TMWeI= -github.com/xtaci/kcp-go/v5 v5.6.8/go.mod h1:oE9j2NVqAkuKO5o8ByKGch3vgVX3BNf8zqP8JiGq0bM= +github.com/vishvananda/netlink v1.3.0 h1:X7l42GfcV4S6E4vHTsw48qbrV+9PVojNfIhZcwQdrZk= +github.com/vishvananda/netlink v1.3.0/go.mod h1:i6NetklAujEcC6fK0JPjT8qSwWyO0HLn4UKG+hGqeJs= +github.com/vishvananda/netns v0.0.4 h1:Oeaw1EM2JMxD51g9uhtC0D7erkIjgmj8+JZc26m1YX8= +github.com/vishvananda/netns v0.0.4/go.mod h1:SpkAiCQRtJ6TvvxPnOSyH3BMl6unz3xZlaprSwhNNJM= +github.com/xtaci/kcp-go/v5 v5.6.13 h1:FEjtz9+D4p8t2x4WjciGt/jsIuhlWjjgPCCWjrVR4Hk= +github.com/xtaci/kcp-go/v5 v5.6.13/go.mod h1:75S1AKYYzNUSXIv30h+jPKJYZUwqpfvLshu63nCNSOM= github.com/xtaci/lossyconn v0.0.0-20200209145036-adba10fffc37 h1:EWU6Pktpas0n8lLQwDsRyZfmkPeRbdgPtW609es+/9E= github.com/xtaci/lossyconn v0.0.0-20200209145036-adba10fffc37/go.mod h1:HpMP7DB2CyokmAh4lp0EQnnWhmycP/TvwBGzvuie+H0= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -go.uber.org/mock v0.4.0 h1:VcM4ZOtdbR4f6VXfiOpwpVJDL6lCReaZ6mw31wqh7KU= -go.uber.org/mock v0.4.0/go.mod h1:a6FSlNadKUHUa9IP5Vyt1zh4fC7uAwxMutEAscFbkZc= +go.uber.org/automaxprocs v1.6.0 h1:O3y2/QNTOdbF+e/dpXNNW7Rx2hZ4sTIPyybbxyNqTUs= +go.uber.org/automaxprocs v1.6.0/go.mod h1:ifeIMSnPZuznNm6jmdzmU3/bfk01Fe2fotchwEFJ8r8= +go.uber.org/mock v0.5.0 h1:KAMbZvZPyBPWgD14IrIQ38QCyjwpvVVV6K/bHl1IwQU= +go.uber.org/mock v0.5.0/go.mod h1:ge71pBPLYDk7QIi1LupWxdAykm7KIEFchiOqd6z7qMM= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201012173705-84dcc777aaee/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.8.0/go.mod h1:mRqEX+O9/h5TFCrQhkgjo2yKi0yYA+9ecGkdQoHrywE= golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= -golang.org/x/crypto v0.22.0 h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30= -golang.org/x/crypto v0.22.0/go.mod h1:vr6Su+7cTlO45qkww3VDJlzDn0ctJvRgYbC2NvXHt+M= +golang.org/x/crypto v0.37.0 h1:kJNSjF/Xp7kU0iB2Z+9viTPMW4EqqsrywMXLJOOsXSE= +golang.org/x/crypto v0.37.0/go.mod h1:vg+k43peMZ0pUMhYmVAWysMK35e6ioLh3wB8ZCAfbVc= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20221205204356-47842c84f3db h1:D/cFflL63o2KSLJIwjlcIt8PR064j/xsmdEJL/YvY/o= -golang.org/x/exp v0.0.0-20221205204356-47842c84f3db/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0= -golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.24.0 h1:ZfthKaKaT4NrhGVZHO1/WDTwGES4De8KtWO0SIbNJMU= +golang.org/x/mod v0.24.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -186,50 +187,50 @@ golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= -golang.org/x/net v0.24.0 h1:1PcaxkF854Fu3+lvBIx5SYn9wRlBzzcnHZSiaFFAb0w= -golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8= +golang.org/x/net v0.39.0 h1:ZCu7HMWDxpXpaiKdhzIfaltL9Lp31x/3fCP11bc6/fY= +golang.org/x/net v0.39.0/go.mod h1:X7NRbYVEA+ewNkCNyJ513WmMdQ3BineSwVtN2zD/d+E= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.16.0 h1:aDkGMBSYxElaoP81NpoUoz2oo2R2wHdZpGToUxfyQrQ= -golang.org/x/oauth2 v0.16.0/go.mod h1:hqZ+0LWXsiVoZpeld6jVt06P3adbS2Uu911W1SsJv2o= +golang.org/x/oauth2 v0.28.0 h1:CrgCKl8PPAVtLnU3c+EDw6x11699EWlsDeWNWKdIOkc= +golang.org/x/oauth2 v0.28.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ= -golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.13.0 h1:AauUjRAJ9OSnvULf/ARrrVywoJDy0YS2AwQ98I37610= +golang.org/x/sync v0.13.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o= -golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20= +golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU= -golang.org/x/term v0.19.0 h1:+ThwsDv+tYfnJFhF4L8jITxu1tdTWRTZpdsWgEgjL6Q= -golang.org/x/term v0.19.0/go.mod h1:2CuTdWZ7KHSQwUzKva0cbMg6q2DMI3Mmxp+gKJbskEk= +golang.org/x/term v0.31.0 h1:erwDkOK1Msy6offm1mOgvspSkslFnIGsFnxOKoufg3o= +golang.org/x/term v0.31.0/go.mod h1:R4BeIy7D95HzImkxGkTW1UQTtP54tio2RyHz7PwK0aw= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= -golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0= +golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU= golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -240,14 +241,16 @@ golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBn golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.17.0 h1:FvmRgNOcs3kOa+T20R1uhfP9F6HgG2mfxDv1vrx1Htc= -golang.org/x/tools v0.17.0/go.mod h1:xsh6VxdV005rRVaS6SSAf9oiAqljS7UZUacMZ8Bnsps= +golang.org/x/tools v0.31.0 h1:0EedkvKDbh+qistFTd0Bcwe/YLh4vHwWEkiI0toFIBU= +golang.org/x/tools v0.31.0/go.mod h1:naFTU+Cev749tSJRXJlna0T3WxKvb1kWEx15xA4SdmQ= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.zx2c4.com/wintun v0.0.0-20230126152724-0fa3db229ce2 h1:B82qJJgjvYKsXS9jeunTOisW56dUokqW/FOteYJJ/yg= +golang.zx2c4.com/wintun v0.0.0-20230126152724-0fa3db229ce2/go.mod h1:deeaetjYA+DHMHg+sMSMI58GrEteJUUzzw7en6TJQcI= +golang.zx2c4.com/wireguard v0.0.0-20231211153847-12269c276173 h1:/jFs0duh4rdb8uIfPMv78iAJGcPKDeqAFnaLBropIC4= +golang.zx2c4.com/wireguard v0.0.0-20231211153847-12269c276173/go.mod h1:tkCQ4FQXmpAgYVh++1cq16/dH4QJtmvpRv19DWGAHSA= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= -google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= @@ -260,10 +263,8 @@ google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQ google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= -google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= +google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= @@ -274,6 +275,8 @@ gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gvisor.dev/gvisor v0.0.0-20230927004350-cbd86285d259 h1:TbRPT0HtzFP3Cno1zZo7yPzEEnfu8EjLfl6IU9VfqkQ= +gvisor.dev/gvisor v0.0.0-20230927004350-cbd86285d259/go.mod h1:AVgIgHMwK63XvmAzWG9vLQ41YnVHN0du0tEC46fI7yY= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= k8s.io/apimachinery v0.28.8 h1:hi/nrxHwk4QLV+W/SHve1bypTE59HCDorLY1stBIxKQ= diff --git a/hack/run-e2e.sh b/hack/run-e2e.sh index 8009359c14a..d1b20b527f3 100755 --- a/hack/run-e2e.sh +++ b/hack/run-e2e.sh @@ -3,10 +3,10 @@ SCRIPT=$(readlink -f "$0") ROOT=$(unset CDPATH && cd "$(dirname "$SCRIPT")/.." && pwd) -ginkgo_command=$(which ginkgo 2>/dev/null) -if [ -z "$ginkgo_command" ]; then +# Check if ginkgo is available +if ! command -v ginkgo >/dev/null 2>&1; then echo "ginkgo not found, try to install..." - go install github.com/onsi/ginkgo/v2/ginkgo@v2.17.1 + go install github.com/onsi/ginkgo/v2/ginkgo@v2.23.4 fi debug=false diff --git a/package.sh b/package.sh index 8d16f72a6fe..16dfcee03ea 100755 --- a/package.sh +++ b/package.sh @@ -17,50 +17,57 @@ make -f ./Makefile.cross-compiles rm -rf ./release/packages mkdir -p ./release/packages -os_all='linux windows darwin freebsd android' -arch_all='386 amd64 arm arm64 mips64 mips64le mips mipsle riscv64' +os_all='linux windows darwin freebsd openbsd android' +arch_all='386 amd64 arm arm64 mips64 mips64le mips mipsle riscv64 loong64' +extra_all='_ hf' cd ./release for os in $os_all; do for arch in $arch_all; do - frp_dir_name="frp_${frp_version}_${os}_${arch}" - frp_path="./packages/frp_${frp_version}_${os}_${arch}" - - if [ "x${os}" = x"windows" ]; then - if [ ! -f "./frpc_${os}_${arch}.exe" ]; then - continue - fi - if [ ! -f "./frps_${os}_${arch}.exe" ]; then - continue - fi - mkdir ${frp_path} - mv ./frpc_${os}_${arch}.exe ${frp_path}/frpc.exe - mv ./frps_${os}_${arch}.exe ${frp_path}/frps.exe - else - if [ ! -f "./frpc_${os}_${arch}" ]; then - continue + for extra in $extra_all; do + suffix="${os}_${arch}" + if [ "x${extra}" != x"_" ]; then + suffix="${os}_${arch}_${extra}" fi - if [ ! -f "./frps_${os}_${arch}" ]; then - continue - fi - mkdir ${frp_path} - mv ./frpc_${os}_${arch} ${frp_path}/frpc - mv ./frps_${os}_${arch} ${frp_path}/frps - fi - cp ../LICENSE ${frp_path} - cp -f ../conf/frpc.toml ${frp_path} - cp -f ../conf/frps.toml ${frp_path} + frp_dir_name="frp_${frp_version}_${suffix}" + frp_path="./packages/frp_${frp_version}_${suffix}" + + if [ "x${os}" = x"windows" ]; then + if [ ! -f "./frpc_${os}_${arch}.exe" ]; then + continue + fi + if [ ! -f "./frps_${os}_${arch}.exe" ]; then + continue + fi + mkdir ${frp_path} + mv ./frpc_${os}_${arch}.exe ${frp_path}/frpc.exe + mv ./frps_${os}_${arch}.exe ${frp_path}/frps.exe + else + if [ ! -f "./frpc_${suffix}" ]; then + continue + fi + if [ ! -f "./frps_${suffix}" ]; then + continue + fi + mkdir ${frp_path} + mv ./frpc_${suffix} ${frp_path}/frpc + mv ./frps_${suffix} ${frp_path}/frps + fi + cp ../LICENSE ${frp_path} + cp -f ../conf/frpc.toml ${frp_path} + cp -f ../conf/frps.toml ${frp_path} - # packages - cd ./packages - if [ "x${os}" = x"windows" ]; then - zip -rq ${frp_dir_name}.zip ${frp_dir_name} - else - tar -zcf ${frp_dir_name}.tar.gz ${frp_dir_name} - fi - cd .. - rm -rf ${frp_path} + # packages + cd ./packages + if [ "x${os}" = x"windows" ]; then + zip -rq ${frp_dir_name}.zip ${frp_dir_name} + else + tar -zcf ${frp_dir_name}.tar.gz ${frp_dir_name} + fi + cd .. + rm -rf ${frp_path} + done done done diff --git a/pkg/auth/auth.go b/pkg/auth/auth.go index 9d8db7b686b..b954fc80eaa 100644 --- a/pkg/auth/auth.go +++ b/pkg/auth/auth.go @@ -27,16 +27,19 @@ type Setter interface { SetNewWorkConn(*msg.NewWorkConn) error } -func NewAuthSetter(cfg v1.AuthClientConfig) (authProvider Setter) { +func NewAuthSetter(cfg v1.AuthClientConfig) (authProvider Setter, err error) { switch cfg.Method { case v1.AuthMethodToken: authProvider = NewTokenAuth(cfg.AdditionalScopes, cfg.Token) case v1.AuthMethodOIDC: - authProvider = NewOidcAuthSetter(cfg.AdditionalScopes, cfg.OIDC) + authProvider, err = NewOidcAuthSetter(cfg.AdditionalScopes, cfg.OIDC) + if err != nil { + return nil, err + } default: - panic(fmt.Sprintf("wrong method: '%s'", cfg.Method)) + return nil, fmt.Errorf("unsupported auth method: %s", cfg.Method) } - return authProvider + return authProvider, nil } type Verifier interface { @@ -50,7 +53,8 @@ func NewAuthVerifier(cfg v1.AuthServerConfig) (authVerifier Verifier) { case v1.AuthMethodToken: authVerifier = NewTokenAuth(cfg.AdditionalScopes, cfg.Token) case v1.AuthMethodOIDC: - authVerifier = NewOidcAuthVerifier(cfg.AdditionalScopes, cfg.OIDC) + tokenVerifier := NewTokenVerifier(cfg.OIDC) + authVerifier = NewOidcAuthVerifier(cfg.AdditionalScopes, tokenVerifier) } return authVerifier } diff --git a/pkg/auth/oidc.go b/pkg/auth/oidc.go index d87420ff764..c5f636402c8 100644 --- a/pkg/auth/oidc.go +++ b/pkg/auth/oidc.go @@ -16,23 +16,72 @@ package auth import ( "context" + "crypto/tls" + "crypto/x509" "fmt" + "net/http" + "net/url" + "os" "slices" "github.com/coreos/go-oidc/v3/oidc" + "golang.org/x/oauth2" "golang.org/x/oauth2/clientcredentials" v1 "github.com/fatedier/frp/pkg/config/v1" "github.com/fatedier/frp/pkg/msg" ) +// createOIDCHTTPClient creates an HTTP client with custom TLS and proxy configuration for OIDC token requests +func createOIDCHTTPClient(trustedCAFile string, insecureSkipVerify bool, proxyURL string) (*http.Client, error) { + // Clone the default transport to get all reasonable defaults + transport := http.DefaultTransport.(*http.Transport).Clone() + + // Configure TLS settings + if trustedCAFile != "" || insecureSkipVerify { + tlsConfig := &tls.Config{ + InsecureSkipVerify: insecureSkipVerify, + } + + if trustedCAFile != "" && !insecureSkipVerify { + caCert, err := os.ReadFile(trustedCAFile) + if err != nil { + return nil, fmt.Errorf("failed to read OIDC CA certificate file %q: %w", trustedCAFile, err) + } + + caCertPool := x509.NewCertPool() + if !caCertPool.AppendCertsFromPEM(caCert) { + return nil, fmt.Errorf("failed to parse OIDC CA certificate from file %q", trustedCAFile) + } + + tlsConfig.RootCAs = caCertPool + } + transport.TLSClientConfig = tlsConfig + } + + // Configure proxy settings + if proxyURL != "" { + parsedURL, err := url.Parse(proxyURL) + if err != nil { + return nil, fmt.Errorf("failed to parse OIDC proxy URL %q: %w", proxyURL, err) + } + transport.Proxy = http.ProxyURL(parsedURL) + } else { + // Explicitly disable proxy to override DefaultTransport's ProxyFromEnvironment + transport.Proxy = nil + } + + return &http.Client{Transport: transport}, nil +} + type OidcAuthProvider struct { additionalAuthScopes []v1.AuthScope tokenGenerator *clientcredentials.Config + httpClient *http.Client } -func NewOidcAuthSetter(additionalAuthScopes []v1.AuthScope, cfg v1.AuthOIDCClientConfig) *OidcAuthProvider { +func NewOidcAuthSetter(additionalAuthScopes []v1.AuthScope, cfg v1.AuthOIDCClientConfig) (*OidcAuthProvider, error) { eps := make(map[string][]string) for k, v := range cfg.AdditionalEndpointParams { eps[k] = []string{v} @@ -50,14 +99,30 @@ func NewOidcAuthSetter(additionalAuthScopes []v1.AuthScope, cfg v1.AuthOIDCClien EndpointParams: eps, } + // Create custom HTTP client if needed + var httpClient *http.Client + if cfg.TrustedCaFile != "" || cfg.InsecureSkipVerify || cfg.ProxyURL != "" { + var err error + httpClient, err = createOIDCHTTPClient(cfg.TrustedCaFile, cfg.InsecureSkipVerify, cfg.ProxyURL) + if err != nil { + return nil, fmt.Errorf("failed to create OIDC HTTP client: %w", err) + } + } + return &OidcAuthProvider{ additionalAuthScopes: additionalAuthScopes, tokenGenerator: tokenGenerator, - } + httpClient: httpClient, + }, nil } func (auth *OidcAuthProvider) generateAccessToken() (accessToken string, err error) { - tokenObj, err := auth.tokenGenerator.Token(context.Background()) + ctx := context.Background() + if auth.httpClient != nil { + ctx = context.WithValue(ctx, oauth2.HTTPClient, auth.httpClient) + } + + tokenObj, err := auth.tokenGenerator.Token(ctx) if err != nil { return "", fmt.Errorf("couldn't generate OIDC token for login: %v", err) } @@ -87,14 +152,18 @@ func (auth *OidcAuthProvider) SetNewWorkConn(newWorkConnMsg *msg.NewWorkConn) (e return err } +type TokenVerifier interface { + Verify(context.Context, string) (*oidc.IDToken, error) +} + type OidcAuthConsumer struct { additionalAuthScopes []v1.AuthScope - verifier *oidc.IDTokenVerifier - subjectFromLogin string + verifier TokenVerifier + subjectsFromLogin []string } -func NewOidcAuthVerifier(additionalAuthScopes []v1.AuthScope, cfg v1.AuthOIDCServerConfig) *OidcAuthConsumer { +func NewTokenVerifier(cfg v1.AuthOIDCServerConfig) TokenVerifier { provider, err := oidc.NewProvider(context.Background(), cfg.Issuer) if err != nil { panic(err) @@ -105,9 +174,14 @@ func NewOidcAuthVerifier(additionalAuthScopes []v1.AuthScope, cfg v1.AuthOIDCSer SkipExpiryCheck: cfg.SkipExpiryCheck, SkipIssuerCheck: cfg.SkipIssuerCheck, } + return provider.Verifier(&verifierConf) +} + +func NewOidcAuthVerifier(additionalAuthScopes []v1.AuthScope, verifier TokenVerifier) *OidcAuthConsumer { return &OidcAuthConsumer{ additionalAuthScopes: additionalAuthScopes, - verifier: provider.Verifier(&verifierConf), + verifier: verifier, + subjectsFromLogin: []string{}, } } @@ -116,7 +190,9 @@ func (auth *OidcAuthConsumer) VerifyLogin(loginMsg *msg.Login) (err error) { if err != nil { return fmt.Errorf("invalid OIDC token in login: %v", err) } - auth.subjectFromLogin = token.Subject + if !slices.Contains(auth.subjectsFromLogin, token.Subject) { + auth.subjectsFromLogin = append(auth.subjectsFromLogin, token.Subject) + } return nil } @@ -125,11 +201,11 @@ func (auth *OidcAuthConsumer) verifyPostLoginToken(privilegeKey string) (err err if err != nil { return fmt.Errorf("invalid OIDC token in ping: %v", err) } - if token.Subject != auth.subjectFromLogin { + if !slices.Contains(auth.subjectsFromLogin, token.Subject) { return fmt.Errorf("received different OIDC subject in login and ping. "+ - "original subject: %s, "+ + "original subjects: %s, "+ "new subject: %s", - auth.subjectFromLogin, token.Subject) + auth.subjectsFromLogin, token.Subject) } return nil } diff --git a/pkg/auth/oidc_test.go b/pkg/auth/oidc_test.go new file mode 100644 index 00000000000..58054186e11 --- /dev/null +++ b/pkg/auth/oidc_test.go @@ -0,0 +1,64 @@ +package auth_test + +import ( + "context" + "testing" + "time" + + "github.com/coreos/go-oidc/v3/oidc" + "github.com/stretchr/testify/require" + + "github.com/fatedier/frp/pkg/auth" + v1 "github.com/fatedier/frp/pkg/config/v1" + "github.com/fatedier/frp/pkg/msg" +) + +type mockTokenVerifier struct{} + +func (m *mockTokenVerifier) Verify(ctx context.Context, subject string) (*oidc.IDToken, error) { + return &oidc.IDToken{ + Subject: subject, + }, nil +} + +func TestPingWithEmptySubjectFromLoginFails(t *testing.T) { + r := require.New(t) + consumer := auth.NewOidcAuthVerifier([]v1.AuthScope{v1.AuthScopeHeartBeats}, &mockTokenVerifier{}) + err := consumer.VerifyPing(&msg.Ping{ + PrivilegeKey: "ping-without-login", + Timestamp: time.Now().UnixMilli(), + }) + r.Error(err) + r.Contains(err.Error(), "received different OIDC subject in login and ping") +} + +func TestPingAfterLoginWithNewSubjectSucceeds(t *testing.T) { + r := require.New(t) + consumer := auth.NewOidcAuthVerifier([]v1.AuthScope{v1.AuthScopeHeartBeats}, &mockTokenVerifier{}) + err := consumer.VerifyLogin(&msg.Login{ + PrivilegeKey: "ping-after-login", + }) + r.NoError(err) + + err = consumer.VerifyPing(&msg.Ping{ + PrivilegeKey: "ping-after-login", + Timestamp: time.Now().UnixMilli(), + }) + r.NoError(err) +} + +func TestPingAfterLoginWithDifferentSubjectFails(t *testing.T) { + r := require.New(t) + consumer := auth.NewOidcAuthVerifier([]v1.AuthScope{v1.AuthScopeHeartBeats}, &mockTokenVerifier{}) + err := consumer.VerifyLogin(&msg.Login{ + PrivilegeKey: "login-with-first-subject", + }) + r.NoError(err) + + err = consumer.VerifyPing(&msg.Ping{ + PrivilegeKey: "ping-with-different-subject", + Timestamp: time.Now().UnixMilli(), + }) + r.Error(err) + r.Contains(err.Error(), "received different OIDC subject in login and ping") +} diff --git a/pkg/config/flags.go b/pkg/config/flags.go index 98f617be481..6027b622411 100644 --- a/pkg/config/flags.go +++ b/pkg/config/flags.go @@ -106,6 +106,8 @@ func registerProxyBaseConfigFlags(cmd *cobra.Command, c *v1.ProxyBaseConfig, opt } cmd.Flags().StringVarP(&c.Name, "proxy_name", "n", "", "proxy name") + cmd.Flags().StringToStringVarP(&c.Metadatas, "metadatas", "", nil, "metadata key-value pairs (e.g., key1=value1,key2=value2)") + cmd.Flags().StringToStringVarP(&c.Annotations, "annotations", "", nil, "annotation key-value pairs (e.g., key1=value1,key2=value2)") if !options.sshMode { cmd.Flags().StringVarP(&c.LocalIP, "local_ip", "i", "127.0.0.1", "local ip") @@ -140,6 +142,7 @@ func registerVisitorBaseConfigFlags(cmd *cobra.Command, c *v1.VisitorBaseConfig, cmd.Flags().BoolVarP(&c.Transport.UseCompression, "uc", "", false, "use compression") cmd.Flags().StringVarP(&c.SecretKey, "sk", "", "", "secret key") cmd.Flags().StringVarP(&c.ServerName, "server_name", "", "", "server name") + cmd.Flags().StringVarP(&c.ServerUser, "server-user", "", "", "server user") cmd.Flags().StringVarP(&c.BindAddr, "bind_addr", "", "", "bind addr") cmd.Flags().IntVarP(&c.BindPort, "bind_port", "", 0, "bind port") } @@ -226,6 +229,7 @@ func RegisterServerConfigFlags(cmd *cobra.Command, c *v1.ServerConfig, opts ...R cmd.PersistentFlags().StringVarP(&c.BindAddr, "bind_addr", "", "0.0.0.0", "bind address") cmd.PersistentFlags().IntVarP(&c.BindPort, "bind_port", "p", 7000, "bind port") cmd.PersistentFlags().IntVarP(&c.KCPBindPort, "kcp_bind_port", "", 0, "kcp bind udp port") + cmd.PersistentFlags().IntVarP(&c.QUICBindPort, "quic_bind_port", "", 0, "quic bind udp port") cmd.PersistentFlags().StringVarP(&c.ProxyBindAddr, "proxy_bind_addr", "", "0.0.0.0", "proxy bind address") cmd.PersistentFlags().IntVarP(&c.VhostHTTPPort, "vhost_http_port", "", 0, "vhost http port") cmd.PersistentFlags().IntVarP(&c.VhostHTTPSPort, "vhost_https_port", "", 0, "vhost https port") diff --git a/pkg/config/legacy/client.go b/pkg/config/legacy/client.go index b45ed069d00..8cc02614798 100644 --- a/pkg/config/legacy/client.go +++ b/pkg/config/legacy/client.go @@ -170,7 +170,7 @@ type ClientCommonConf struct { } // Supported sources including: string(file path), []byte, Reader interface. -func UnmarshalClientConfFromIni(source interface{}) (ClientCommonConf, error) { +func UnmarshalClientConfFromIni(source any) (ClientCommonConf, error) { f, err := ini.LoadSources(ini.LoadOptions{ Insensitive: false, InsensitiveSections: false, @@ -194,7 +194,7 @@ func UnmarshalClientConfFromIni(source interface{}) (ClientCommonConf, error) { } common.Metas = GetMapWithoutPrefix(s.KeysHash(), "meta_") - common.ClientConfig.OidcAdditionalEndpointParams = GetMapWithoutPrefix(s.KeysHash(), "oidc_additional_") + common.OidcAdditionalEndpointParams = GetMapWithoutPrefix(s.KeysHash(), "oidc_additional_") return common, nil } @@ -203,7 +203,7 @@ func UnmarshalClientConfFromIni(source interface{}) (ClientCommonConf, error) { // otherwise just start proxies in startProxy map func LoadAllProxyConfsFromIni( prefix string, - source interface{}, + source any, start []string, ) (map[string]ProxyConf, map[string]VisitorConf, error) { f, err := ini.LoadSources(ini.LoadOptions{ @@ -229,10 +229,7 @@ func LoadAllProxyConfsFromIni( startProxy[s] = struct{}{} } - startAll := true - if len(startProxy) > 0 { - startAll = false - } + startAll := len(startProxy) == 0 // Build template sections from range section And append to ini.File. rangeSections := make([]*ini.Section, 0) @@ -345,35 +342,19 @@ func copySection(source, target *ini.Section) { } // GetDefaultClientConf returns a client configuration with default values. +// Note: Some default values here will be set to empty and will be converted to them +// new configuration through the 'Complete' function to set them as the default +// values of the new configuration. func GetDefaultClientConf() ClientCommonConf { return ClientCommonConf{ ClientConfig: legacyauth.GetDefaultClientConf(), - ServerAddr: "0.0.0.0", - ServerPort: 7000, - NatHoleSTUNServer: "stun.easyvoip.com:3478", - DialServerTimeout: 10, - DialServerKeepAlive: 7200, - HTTPProxy: os.Getenv("http_proxy"), - LogFile: "console", - LogWay: "console", - LogLevel: "info", - LogMaxDays: 3, - AdminAddr: "127.0.0.1", - PoolCount: 1, TCPMux: true, - TCPMuxKeepaliveInterval: 60, LoginFailExit: true, - Start: make([]string, 0), Protocol: "tcp", - QUICKeepalivePeriod: 10, - QUICMaxIdleTimeout: 30, - QUICMaxIncomingStreams: 100000, + Start: make([]string, 0), TLSEnable: true, DisableCustomTLSFirstByte: true, - HeartbeatInterval: 30, - HeartbeatTimeout: 90, Metas: make(map[string]string), - UDPPacketSize: 1500, IncludeConfigFiles: make([]string, 0), } } diff --git a/pkg/config/legacy/conversion.go b/pkg/config/legacy/conversion.go index dd8c4a11d91..4ae54f88ecb 100644 --- a/pkg/config/legacy/conversion.go +++ b/pkg/config/legacy/conversion.go @@ -26,20 +26,20 @@ import ( func Convert_ClientCommonConf_To_v1(conf *ClientCommonConf) *v1.ClientCommonConfig { out := &v1.ClientCommonConfig{} out.User = conf.User - out.Auth.Method = v1.AuthMethod(conf.ClientConfig.AuthenticationMethod) - out.Auth.Token = conf.ClientConfig.Token - if conf.ClientConfig.AuthenticateHeartBeats { + out.Auth.Method = v1.AuthMethod(conf.AuthenticationMethod) + out.Auth.Token = conf.Token + if conf.AuthenticateHeartBeats { out.Auth.AdditionalScopes = append(out.Auth.AdditionalScopes, v1.AuthScopeHeartBeats) } - if conf.ClientConfig.AuthenticateNewWorkConns { + if conf.AuthenticateNewWorkConns { out.Auth.AdditionalScopes = append(out.Auth.AdditionalScopes, v1.AuthScopeNewWorkConns) } - out.Auth.OIDC.ClientID = conf.ClientConfig.OidcClientID - out.Auth.OIDC.ClientSecret = conf.ClientConfig.OidcClientSecret - out.Auth.OIDC.Audience = conf.ClientConfig.OidcAudience - out.Auth.OIDC.Scope = conf.ClientConfig.OidcScope - out.Auth.OIDC.TokenEndpointURL = conf.ClientConfig.OidcTokenEndpointURL - out.Auth.OIDC.AdditionalEndpointParams = conf.ClientConfig.OidcAdditionalEndpointParams + out.Auth.OIDC.ClientID = conf.OidcClientID + out.Auth.OIDC.ClientSecret = conf.OidcClientSecret + out.Auth.OIDC.Audience = conf.OidcAudience + out.Auth.OIDC.Scope = conf.OidcScope + out.Auth.OIDC.TokenEndpointURL = conf.OidcTokenEndpointURL + out.Auth.OIDC.AdditionalEndpointParams = conf.OidcAdditionalEndpointParams out.ServerAddr = conf.ServerAddr out.ServerPort = conf.ServerPort @@ -59,10 +59,10 @@ func Convert_ClientCommonConf_To_v1(conf *ClientCommonConf) *v1.ClientCommonConf out.Transport.QUIC.MaxIncomingStreams = conf.QUICMaxIncomingStreams out.Transport.TLS.Enable = lo.ToPtr(conf.TLSEnable) out.Transport.TLS.DisableCustomTLSFirstByte = lo.ToPtr(conf.DisableCustomTLSFirstByte) - out.Transport.TLS.TLSConfig.CertFile = conf.TLSCertFile - out.Transport.TLS.TLSConfig.KeyFile = conf.TLSKeyFile - out.Transport.TLS.TLSConfig.TrustedCaFile = conf.TLSTrustedCaFile - out.Transport.TLS.TLSConfig.ServerName = conf.TLSServerName + out.Transport.TLS.CertFile = conf.TLSCertFile + out.Transport.TLS.KeyFile = conf.TLSKeyFile + out.Transport.TLS.TrustedCaFile = conf.TLSTrustedCaFile + out.Transport.TLS.ServerName = conf.TLSServerName out.Log.To = conf.LogFile out.Log.Level = conf.LogLevel @@ -87,18 +87,18 @@ func Convert_ClientCommonConf_To_v1(conf *ClientCommonConf) *v1.ClientCommonConf func Convert_ServerCommonConf_To_v1(conf *ServerCommonConf) *v1.ServerConfig { out := &v1.ServerConfig{} - out.Auth.Method = v1.AuthMethod(conf.ServerConfig.AuthenticationMethod) - out.Auth.Token = conf.ServerConfig.Token - if conf.ServerConfig.AuthenticateHeartBeats { + out.Auth.Method = v1.AuthMethod(conf.AuthenticationMethod) + out.Auth.Token = conf.Token + if conf.AuthenticateHeartBeats { out.Auth.AdditionalScopes = append(out.Auth.AdditionalScopes, v1.AuthScopeHeartBeats) } - if conf.ServerConfig.AuthenticateNewWorkConns { + if conf.AuthenticateNewWorkConns { out.Auth.AdditionalScopes = append(out.Auth.AdditionalScopes, v1.AuthScopeNewWorkConns) } - out.Auth.OIDC.Audience = conf.ServerConfig.OidcAudience - out.Auth.OIDC.Issuer = conf.ServerConfig.OidcIssuer - out.Auth.OIDC.SkipExpiryCheck = conf.ServerConfig.OidcSkipExpiryCheck - out.Auth.OIDC.SkipIssuerCheck = conf.ServerConfig.OidcSkipIssuerCheck + out.Auth.OIDC.Audience = conf.OidcAudience + out.Auth.OIDC.Issuer = conf.OidcIssuer + out.Auth.OIDC.SkipExpiryCheck = conf.OidcSkipExpiryCheck + out.Auth.OIDC.SkipIssuerCheck = conf.OidcSkipIssuerCheck out.BindAddr = conf.BindAddr out.BindPort = conf.BindPort diff --git a/pkg/config/legacy/proxy.go b/pkg/config/legacy/proxy.go index e6653ee9787..0c461a1a63f 100644 --- a/pkg/config/legacy/proxy.go +++ b/pkg/config/legacy/proxy.go @@ -206,7 +206,7 @@ func (cfg *BaseProxyConf) decorate(_ string, name string, section *ini.Section) } // plugin_xxx - cfg.LocalSvrConf.PluginParams = GetMapByPrefix(section.KeysHash(), "plugin_") + cfg.PluginParams = GetMapByPrefix(section.KeysHash(), "plugin_") return nil } diff --git a/pkg/config/legacy/server.go b/pkg/config/legacy/server.go index 1279a499057..1cfa1bdca7f 100644 --- a/pkg/config/legacy/server.go +++ b/pkg/config/legacy/server.go @@ -200,38 +200,24 @@ type ServerCommonConf struct { NatHoleAnalysisDataReserveHours int64 `ini:"nat_hole_analysis_data_reserve_hours" json:"nat_hole_analysis_data_reserve_hours"` } -// GetDefaultServerConf returns a server configuration with reasonable -// defaults. +// GetDefaultServerConf returns a server configuration with reasonable defaults. +// Note: Some default values here will be set to empty and will be converted to them +// new configuration through the 'Complete' function to set them as the default +// values of the new configuration. func GetDefaultServerConf() ServerCommonConf { return ServerCommonConf{ - ServerConfig: legacyauth.GetDefaultServerConf(), - BindAddr: "0.0.0.0", - BindPort: 7000, - QUICKeepalivePeriod: 10, - QUICMaxIdleTimeout: 30, - QUICMaxIncomingStreams: 100000, - VhostHTTPTimeout: 60, - DashboardAddr: "0.0.0.0", - LogFile: "console", - LogWay: "console", - LogLevel: "info", - LogMaxDays: 3, - DetailedErrorsToClient: true, - TCPMux: true, - TCPMuxKeepaliveInterval: 60, - TCPKeepAlive: 7200, - AllowPorts: make(map[int]struct{}), - MaxPoolCount: 5, - MaxPortsPerClient: 0, - HeartbeatTimeout: 90, - UserConnTimeout: 10, - HTTPPlugins: make(map[string]HTTPPluginOptions), - UDPPacketSize: 1500, - NatHoleAnalysisDataReserveHours: 7 * 24, + ServerConfig: legacyauth.GetDefaultServerConf(), + DashboardAddr: "0.0.0.0", + LogFile: "console", + LogWay: "console", + DetailedErrorsToClient: true, + TCPMux: true, + AllowPorts: make(map[int]struct{}), + HTTPPlugins: make(map[string]HTTPPluginOptions), } } -func UnmarshalServerConfFromIni(source interface{}) (ServerCommonConf, error) { +func UnmarshalServerConfFromIni(source any) (ServerCommonConf, error) { f, err := ini.LoadSources(ini.LoadOptions{ Insensitive: false, InsensitiveSections: false, diff --git a/pkg/config/load.go b/pkg/config/load.go index f9a705eb213..3852af9a886 100644 --- a/pkg/config/load.go +++ b/pkg/config/load.go @@ -18,10 +18,10 @@ import ( "bytes" "encoding/json" "fmt" - "html/template" "os" "path/filepath" "strings" + "text/template" toml "github.com/pelletier/go-toml/v2" "github.com/samber/lo" @@ -111,6 +111,33 @@ func LoadConfigureFromFile(path string, c any, strict bool) error { return LoadConfigure(content, c, strict) } +// parseYAMLWithDotFieldsHandling parses YAML with dot-prefixed fields handling +// This function handles both cases efficiently: with or without dot fields +func parseYAMLWithDotFieldsHandling(content []byte, target any) error { + var temp any + if err := yaml.Unmarshal(content, &temp); err != nil { + return err + } + + // Remove dot fields if it's a map + if tempMap, ok := temp.(map[string]any); ok { + for key := range tempMap { + if strings.HasPrefix(key, ".") { + delete(tempMap, key) + } + } + } + + // Convert to JSON and decode with strict validation + jsonBytes, err := json.Marshal(temp) + if err != nil { + return err + } + decoder := json.NewDecoder(bytes.NewReader(jsonBytes)) + decoder.DisallowUnknownFields() + return decoder.Decode(target) +} + // LoadConfigure loads configuration from bytes and unmarshal into c. // Now it supports json, yaml and toml format. func LoadConfigure(b []byte, c any, strict bool) error { @@ -118,7 +145,7 @@ func LoadConfigure(b []byte, c any, strict bool) error { defer v1.DisallowUnknownFieldsMu.Unlock() v1.DisallowUnknownFields = strict - var tomlObj interface{} + var tomlObj any // Try to unmarshal as TOML first; swallow errors from that (assume it's not valid TOML). if err := toml.Unmarshal(b, &tomlObj); err == nil { b, err = json.Marshal(&tomlObj) @@ -134,10 +161,13 @@ func LoadConfigure(b []byte, c any, strict bool) error { } return decoder.Decode(c) } - // It wasn't JSON. Unmarshal as YAML. + + // Handle YAML content if strict { - return yaml.UnmarshalStrict(b, c) + // In strict mode, always use our custom handler to support YAML merge + return parseYAMLWithDotFieldsHandling(b, c) } + // Non-strict mode, parse normally return yaml.Unmarshal(b, c) } @@ -182,7 +212,9 @@ func LoadServerConfig(path string, strict bool) (*v1.ServerConfig, bool, error) } } if svrCfg != nil { - svrCfg.Complete() + if err := svrCfg.Complete(); err != nil { + return nil, isLegacyFormat, err + } } return svrCfg, isLegacyFormat, nil } @@ -250,7 +282,9 @@ func LoadClientConfig(path string, strict bool) ( } if cliCfg != nil { - cliCfg.Complete() + if err := cliCfg.Complete(); err != nil { + return nil, nil, nil, isLegacyFormat, err + } } for _, c := range proxyCfgs { c.Complete(cliCfg.User) diff --git a/pkg/config/load_test.go b/pkg/config/load_test.go index b3f77800449..95d6101e0ba 100644 --- a/pkg/config/load_test.go +++ b/pkg/config/load_test.go @@ -112,6 +112,29 @@ func TestLoadServerConfigStrictMode(t *testing.T) { } } +func TestRenderWithTemplate(t *testing.T) { + tests := []struct { + name string + content string + want string + }{ + {"toml", tomlServerContent, tomlServerContent}, + {"yaml", yamlServerContent, yamlServerContent}, + {"json", jsonServerContent, jsonServerContent}, + {"template numeric", `key = {{ 123 }}`, "key = 123"}, + {"template string", `key = {{ "xyz" }}`, "key = xyz"}, + {"template quote", `key = {{ printf "%q" "with space" }}`, `key = "with space"`}, + } + for _, test := range tests { + t.Run(test.name, func(t *testing.T) { + require := require.New(t) + got, err := RenderWithTemplate([]byte(test.content), nil) + require.NoError(err) + require.EqualValues(test.want, string(got)) + }) + } +} + func TestCustomStructStrictMode(t *testing.T) { require := require.New(t) @@ -164,3 +187,122 @@ unixPath = "/tmp/uds.sock" err = LoadConfigure([]byte(pluginStr), &clientCfg, true) require.Error(err) } + +// TestYAMLMergeInStrictMode tests that YAML merge functionality works +// even in strict mode by properly handling dot-prefixed fields +func TestYAMLMergeInStrictMode(t *testing.T) { + require := require.New(t) + + yamlContent := ` +serverAddr: "127.0.0.1" +serverPort: 7000 + +.common: &common + type: stcp + secretKey: "test-secret" + localIP: 127.0.0.1 + transport: + useEncryption: true + useCompression: true + +proxies: +- name: ssh + localPort: 22 + <<: *common +- name: web + localPort: 80 + <<: *common +` + + clientCfg := v1.ClientConfig{} + // This should work in strict mode + err := LoadConfigure([]byte(yamlContent), &clientCfg, true) + require.NoError(err) + + // Verify the merge worked correctly + require.Equal("127.0.0.1", clientCfg.ServerAddr) + require.Equal(7000, clientCfg.ServerPort) + require.Len(clientCfg.Proxies, 2) + + // Check first proxy + sshProxy := clientCfg.Proxies[0].ProxyConfigurer + require.Equal("ssh", sshProxy.GetBaseConfig().Name) + require.Equal("stcp", sshProxy.GetBaseConfig().Type) + + // Check second proxy + webProxy := clientCfg.Proxies[1].ProxyConfigurer + require.Equal("web", webProxy.GetBaseConfig().Name) + require.Equal("stcp", webProxy.GetBaseConfig().Type) +} + +// TestOptimizedYAMLProcessing tests the optimization logic for YAML processing +func TestOptimizedYAMLProcessing(t *testing.T) { + require := require.New(t) + + yamlWithDotFields := []byte(` +serverAddr: "127.0.0.1" +.common: &common + type: stcp +proxies: +- name: test + <<: *common +`) + + yamlWithoutDotFields := []byte(` +serverAddr: "127.0.0.1" +proxies: +- name: test + type: tcp + localPort: 22 +`) + + // Test that YAML without dot fields works in strict mode + clientCfg := v1.ClientConfig{} + err := LoadConfigure(yamlWithoutDotFields, &clientCfg, true) + require.NoError(err) + require.Equal("127.0.0.1", clientCfg.ServerAddr) + require.Len(clientCfg.Proxies, 1) + require.Equal("test", clientCfg.Proxies[0].ProxyConfigurer.GetBaseConfig().Name) + + // Test that YAML with dot fields still works in strict mode + err = LoadConfigure(yamlWithDotFields, &clientCfg, true) + require.NoError(err) + require.Equal("127.0.0.1", clientCfg.ServerAddr) + require.Len(clientCfg.Proxies, 1) + require.Equal("test", clientCfg.Proxies[0].ProxyConfigurer.GetBaseConfig().Name) + require.Equal("stcp", clientCfg.Proxies[0].ProxyConfigurer.GetBaseConfig().Type) +} + +// TestYAMLEdgeCases tests edge cases for YAML parsing, including non-map types +func TestYAMLEdgeCases(t *testing.T) { + require := require.New(t) + + // Test array at root (should fail for frp config) + arrayYAML := []byte(` +- item1 +- item2 +`) + clientCfg := v1.ClientConfig{} + err := LoadConfigure(arrayYAML, &clientCfg, true) + require.Error(err) // Should fail because ClientConfig expects an object + + // Test scalar at root (should fail for frp config) + scalarYAML := []byte(`"just a string"`) + err = LoadConfigure(scalarYAML, &clientCfg, true) + require.Error(err) // Should fail because ClientConfig expects an object + + // Test empty object (should work) + emptyYAML := []byte(`{}`) + err = LoadConfigure(emptyYAML, &clientCfg, true) + require.NoError(err) + + // Test nested structure without dots (should work) + nestedYAML := []byte(` +serverAddr: "127.0.0.1" +serverPort: 7000 +`) + err = LoadConfigure(nestedYAML, &clientCfg, true) + require.NoError(err) + require.Equal("127.0.0.1", clientCfg.ServerAddr) + require.Equal(7000, clientCfg.ServerPort) +} diff --git a/pkg/config/types/types.go b/pkg/config/types/types.go index a6cd2e71b0e..8fa3105a5f3 100644 --- a/pkg/config/types/types.go +++ b/pkg/config/types/types.go @@ -159,18 +159,18 @@ func NewPortsRangeSliceFromString(str string) ([]PortsRange, error) { out = append(out, PortsRange{Single: int(singleNum)}) case 2: // range numbers - min, err := strconv.ParseInt(strings.TrimSpace(numArray[0]), 10, 64) + minNum, err := strconv.ParseInt(strings.TrimSpace(numArray[0]), 10, 64) if err != nil { return nil, fmt.Errorf("range number is invalid, %v", err) } - max, err := strconv.ParseInt(strings.TrimSpace(numArray[1]), 10, 64) + maxNum, err := strconv.ParseInt(strings.TrimSpace(numArray[1]), 10, 64) if err != nil { return nil, fmt.Errorf("range number is invalid, %v", err) } - if max < min { + if maxNum < minNum { return nil, fmt.Errorf("range number is invalid") } - out = append(out, PortsRange{Start: int(min), End: int(max)}) + out = append(out, PortsRange{Start: int(minNum), End: int(maxNum)}) default: return nil, fmt.Errorf("range number is invalid") } diff --git a/pkg/config/v1/client.go b/pkg/config/v1/client.go index 52b876905d9..c6cf97a69be 100644 --- a/pkg/config/v1/client.go +++ b/pkg/config/v1/client.go @@ -15,6 +15,8 @@ package v1 import ( + "context" + "fmt" "os" "github.com/samber/lo" @@ -58,9 +60,14 @@ type ClientCommonConfig struct { // set. Start []string `json:"start,omitempty"` - Log LogConfig `json:"log,omitempty"` - WebServer WebServerConfig `json:"webServer,omitempty"` - Transport ClientTransportConfig `json:"transport,omitempty"` + Log LogConfig `json:"log,omitempty"` + WebServer WebServerConfig `json:"webServer,omitempty"` + Transport ClientTransportConfig `json:"transport,omitempty"` + VirtualNet VirtualNetConfig `json:"virtualNet,omitempty"` + + // FeatureGates specifies a set of feature gates to enable or disable. + // This can be used to enable alpha/beta features or disable default features. + FeatureGates map[string]bool `json:"featureGates,omitempty"` // UDPPacketSize specifies the udp packet size // By default, this value is 1500 @@ -72,18 +79,21 @@ type ClientCommonConfig struct { IncludeConfigFiles []string `json:"includes,omitempty"` } -func (c *ClientCommonConfig) Complete() { +func (c *ClientCommonConfig) Complete() error { c.ServerAddr = util.EmptyOr(c.ServerAddr, "0.0.0.0") c.ServerPort = util.EmptyOr(c.ServerPort, 7000) c.LoginFailExit = util.EmptyOr(c.LoginFailExit, lo.ToPtr(true)) c.NatHoleSTUNServer = util.EmptyOr(c.NatHoleSTUNServer, "stun.easyvoip.com:3478") - c.Auth.Complete() + if err := c.Auth.Complete(); err != nil { + return err + } c.Log.Complete() c.Transport.Complete() c.WebServer.Complete() c.UDPPacketSize = util.EmptyOr(c.UDPPacketSize, 1500) + return nil } type ClientTransportConfig struct { @@ -135,9 +145,15 @@ func (c *ClientTransportConfig) Complete() { c.ProxyURL = util.EmptyOr(c.ProxyURL, os.Getenv("http_proxy")) c.PoolCount = util.EmptyOr(c.PoolCount, 1) c.TCPMux = util.EmptyOr(c.TCPMux, lo.ToPtr(true)) - c.TCPMuxKeepaliveInterval = util.EmptyOr(c.TCPMuxKeepaliveInterval, 60) - c.HeartbeatInterval = util.EmptyOr(c.HeartbeatInterval, 30) - c.HeartbeatTimeout = util.EmptyOr(c.HeartbeatTimeout, 90) + c.TCPMuxKeepaliveInterval = util.EmptyOr(c.TCPMuxKeepaliveInterval, 30) + if lo.FromPtr(c.TCPMux) { + // If TCPMux is enabled, heartbeat of application layer is unnecessary because we can rely on heartbeat in tcpmux. + c.HeartbeatInterval = util.EmptyOr(c.HeartbeatInterval, -1) + c.HeartbeatTimeout = util.EmptyOr(c.HeartbeatTimeout, -1) + } else { + c.HeartbeatInterval = util.EmptyOr(c.HeartbeatInterval, 30) + c.HeartbeatTimeout = util.EmptyOr(c.HeartbeatTimeout, 90) + } c.QUIC.Complete() c.TLS.Complete() } @@ -173,12 +189,27 @@ type AuthClientConfig struct { // Token specifies the authorization token used to create keys to be sent // to the server. The server must have a matching token for authorization // to succeed. By default, this value is "". - Token string `json:"token,omitempty"` - OIDC AuthOIDCClientConfig `json:"oidc,omitempty"` + Token string `json:"token,omitempty"` + // TokenSource specifies a dynamic source for the authorization token. + // This is mutually exclusive with Token field. + TokenSource *ValueSource `json:"tokenSource,omitempty"` + OIDC AuthOIDCClientConfig `json:"oidc,omitempty"` } -func (c *AuthClientConfig) Complete() { +func (c *AuthClientConfig) Complete() error { c.Method = util.EmptyOr(c.Method, "token") + + // Resolve tokenSource during configuration loading + if c.Method == AuthMethodToken && c.TokenSource != nil { + token, err := c.TokenSource.Resolve(context.Background()) + if err != nil { + return fmt.Errorf("failed to resolve auth.tokenSource: %w", err) + } + // Move the resolved token to the Token field and clear TokenSource + c.Token = token + c.TokenSource = nil + } + return nil } type AuthOIDCClientConfig struct { @@ -197,4 +228,19 @@ type AuthOIDCClientConfig struct { // AdditionalEndpointParams specifies additional parameters to be sent // this field will be transfer to map[string][]string in OIDC token generator. AdditionalEndpointParams map[string]string `json:"additionalEndpointParams,omitempty"` + + // TrustedCaFile specifies the path to a custom CA certificate file + // for verifying the OIDC token endpoint's TLS certificate. + TrustedCaFile string `json:"trustedCaFile,omitempty"` + // InsecureSkipVerify disables TLS certificate verification for the + // OIDC token endpoint. Only use this for debugging, not recommended for production. + InsecureSkipVerify bool `json:"insecureSkipVerify,omitempty"` + // ProxyURL specifies a proxy to use when connecting to the OIDC token endpoint. + // Supports http, https, socks5, and socks5h proxy protocols. + // If empty, no proxy is used for OIDC connections. + ProxyURL string `json:"proxyURL,omitempty"` +} + +type VirtualNetConfig struct { + Address string `json:"address,omitempty"` } diff --git a/pkg/config/v1/client_test.go b/pkg/config/v1/client_test.go index 9ff7c287164..120c4fd42a3 100644 --- a/pkg/config/v1/client_test.go +++ b/pkg/config/v1/client_test.go @@ -15,6 +15,8 @@ package v1 import ( + "os" + "path/filepath" "testing" "github.com/samber/lo" @@ -24,7 +26,8 @@ import ( func TestClientConfigComplete(t *testing.T) { require := require.New(t) c := &ClientConfig{} - c.Complete() + err := c.Complete() + require.NoError(err) require.EqualValues("token", c.Auth.Method) require.Equal(true, lo.FromPtr(c.Transport.TCPMux)) @@ -33,3 +36,70 @@ func TestClientConfigComplete(t *testing.T) { require.Equal(true, lo.FromPtr(c.Transport.TLS.DisableCustomTLSFirstByte)) require.NotEmpty(c.NatHoleSTUNServer) } + +func TestAuthClientConfig_Complete(t *testing.T) { + // Create a temporary file for testing + tmpDir := t.TempDir() + testFile := filepath.Join(tmpDir, "test_token") + testContent := "client-token-value" + err := os.WriteFile(testFile, []byte(testContent), 0o600) + require.NoError(t, err) + + tests := []struct { + name string + config AuthClientConfig + expectToken string + expectPanic bool + }{ + { + name: "tokenSource resolved to token", + config: AuthClientConfig{ + Method: AuthMethodToken, + TokenSource: &ValueSource{ + Type: "file", + File: &FileSource{ + Path: testFile, + }, + }, + }, + expectToken: testContent, + expectPanic: false, + }, + { + name: "direct token unchanged", + config: AuthClientConfig{ + Method: AuthMethodToken, + Token: "direct-token", + }, + expectToken: "direct-token", + expectPanic: false, + }, + { + name: "invalid tokenSource should panic", + config: AuthClientConfig{ + Method: AuthMethodToken, + TokenSource: &ValueSource{ + Type: "file", + File: &FileSource{ + Path: "/non/existent/file", + }, + }, + }, + expectPanic: true, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if tt.expectPanic { + err := tt.config.Complete() + require.Error(t, err) + } else { + err := tt.config.Complete() + require.NoError(t, err) + require.Equal(t, tt.expectToken, tt.config.Token) + require.Nil(t, tt.config.TokenSource, "TokenSource should be cleared after resolution") + } + }) + } +} diff --git a/pkg/config/v1/common.go b/pkg/config/v1/common.go index ddb23356823..8989855485b 100644 --- a/pkg/config/v1/common.go +++ b/pkg/config/v1/common.go @@ -85,9 +85,9 @@ func (c *WebServerConfig) Complete() { } type TLSConfig struct { - // CertPath specifies the path of the cert file that client will load. + // CertFile specifies the path of the cert file that client will load. CertFile string `json:"certFile,omitempty"` - // KeyPath specifies the path of the secret key file that client will load. + // KeyFile specifies the path of the secret key file that client will load. KeyFile string `json:"keyFile,omitempty"` // TrustedCaFile specifies the path of the trusted ca file that will load. TrustedCaFile string `json:"trustedCaFile,omitempty"` @@ -96,6 +96,14 @@ type TLSConfig struct { ServerName string `json:"serverName,omitempty"` } +// NatTraversalConfig defines configuration options for NAT traversal +type NatTraversalConfig struct { + // DisableAssistedAddrs disables the use of local network interfaces + // for assisted connections during NAT traversal. When enabled, + // only STUN-discovered public addresses will be used. + DisableAssistedAddrs bool `json:"disableAssistedAddrs,omitempty"` +} + type LogConfig struct { // This is destination where frp should write the logs. // If "console" is used, logs will be printed to stdout, otherwise, diff --git a/pkg/config/v1/proxy.go b/pkg/config/v1/proxy.go index 1949cfd34d1..37701b6d785 100644 --- a/pkg/config/v1/proxy.go +++ b/pkg/config/v1/proxy.go @@ -127,6 +127,10 @@ func (c *ProxyBaseConfig) Complete(namePrefix string) { c.Name = lo.Ternary(namePrefix == "", "", namePrefix+".") + c.Name c.LocalIP = util.EmptyOr(c.LocalIP, "127.0.0.1") c.Transport.BandwidthLimitMode = util.EmptyOr(c.Transport.BandwidthLimitMode, types.BandwidthLimitModeClient) + + if c.Plugin.ClientPluginOptions != nil { + c.Plugin.Complete() + } } func (c *ProxyBaseConfig) MarshalToMsg(m *msg.NewProxy) { @@ -195,6 +199,10 @@ func (c *TypedProxyConfig) UnmarshalJSON(b []byte) error { return nil } +func (c *TypedProxyConfig) MarshalJSON() ([]byte, error) { + return json.Marshal(c.ProxyConfigurer) +} + type ProxyConfigurer interface { Complete(namePrefix string) GetBaseConfig() *ProxyBaseConfig @@ -291,6 +299,7 @@ type HTTPProxyConfig struct { HTTPPassword string `json:"httpPassword,omitempty"` HostHeaderRewrite string `json:"hostHeaderRewrite,omitempty"` RequestHeaders HeaderOperations `json:"requestHeaders,omitempty"` + ResponseHeaders HeaderOperations `json:"responseHeaders,omitempty"` RouteByHTTPUser string `json:"routeByHTTPUser,omitempty"` } @@ -304,6 +313,7 @@ func (c *HTTPProxyConfig) MarshalToMsg(m *msg.NewProxy) { m.HTTPUser = c.HTTPUser m.HTTPPwd = c.HTTPPassword m.Headers = c.RequestHeaders.Set + m.ResponseHeaders = c.ResponseHeaders.Set m.RouteByHTTPUser = c.RouteByHTTPUser } @@ -317,6 +327,7 @@ func (c *HTTPProxyConfig) UnmarshalFromMsg(m *msg.NewProxy) { c.HTTPUser = m.HTTPUser c.HTTPPassword = m.HTTPPwd c.RequestHeaders.Set = m.Headers + c.ResponseHeaders.Set = m.ResponseHeaders c.RouteByHTTPUser = m.RouteByHTTPUser } @@ -411,6 +422,9 @@ type XTCPProxyConfig struct { Secretkey string `json:"secretKey,omitempty"` AllowUsers []string `json:"allowUsers,omitempty"` + + // NatTraversal configuration for NAT traversal + NatTraversal *NatTraversalConfig `json:"natTraversal,omitempty"` } func (c *XTCPProxyConfig) MarshalToMsg(m *msg.NewProxy) { diff --git a/pkg/config/v1/plugin.go b/pkg/config/v1/proxy_plugin.go similarity index 68% rename from pkg/config/v1/plugin.go rename to pkg/config/v1/proxy_plugin.go index 5602a813c3c..128ccae629c 100644 --- a/pkg/config/v1/plugin.go +++ b/pkg/config/v1/proxy_plugin.go @@ -17,11 +17,44 @@ package v1 import ( "bytes" "encoding/json" + "errors" "fmt" "reflect" + + "github.com/samber/lo" + + "github.com/fatedier/frp/pkg/util/util" +) + +const ( + PluginHTTP2HTTPS = "http2https" + PluginHTTPProxy = "http_proxy" + PluginHTTPS2HTTP = "https2http" + PluginHTTPS2HTTPS = "https2https" + PluginHTTP2HTTP = "http2http" + PluginSocks5 = "socks5" + PluginStaticFile = "static_file" + PluginUnixDomainSocket = "unix_domain_socket" + PluginTLS2Raw = "tls2raw" + PluginVirtualNet = "virtual_net" ) -type ClientPluginOptions interface{} +var clientPluginOptionsTypeMap = map[string]reflect.Type{ + PluginHTTP2HTTPS: reflect.TypeOf(HTTP2HTTPSPluginOptions{}), + PluginHTTPProxy: reflect.TypeOf(HTTPProxyPluginOptions{}), + PluginHTTPS2HTTP: reflect.TypeOf(HTTPS2HTTPPluginOptions{}), + PluginHTTPS2HTTPS: reflect.TypeOf(HTTPS2HTTPSPluginOptions{}), + PluginHTTP2HTTP: reflect.TypeOf(HTTP2HTTPPluginOptions{}), + PluginSocks5: reflect.TypeOf(Socks5PluginOptions{}), + PluginStaticFile: reflect.TypeOf(StaticFilePluginOptions{}), + PluginUnixDomainSocket: reflect.TypeOf(UnixDomainSocketPluginOptions{}), + PluginTLS2Raw: reflect.TypeOf(TLS2RawPluginOptions{}), + PluginVirtualNet: reflect.TypeOf(VirtualNetPluginOptions{}), +} + +type ClientPluginOptions interface { + Complete() +} type TypedClientPluginOptions struct { Type string `json:"type"` @@ -42,7 +75,7 @@ func (c *TypedClientPluginOptions) UnmarshalJSON(b []byte) error { c.Type = typeStruct.Type if c.Type == "" { - return nil + return errors.New("plugin type is empty") } v, ok := clientPluginOptionsTypeMap[typeStruct.Type] @@ -63,24 +96,8 @@ func (c *TypedClientPluginOptions) UnmarshalJSON(b []byte) error { return nil } -const ( - PluginHTTP2HTTPS = "http2https" - PluginHTTPProxy = "http_proxy" - PluginHTTPS2HTTP = "https2http" - PluginHTTPS2HTTPS = "https2https" - PluginSocks5 = "socks5" - PluginStaticFile = "static_file" - PluginUnixDomainSocket = "unix_domain_socket" -) - -var clientPluginOptionsTypeMap = map[string]reflect.Type{ - PluginHTTP2HTTPS: reflect.TypeOf(HTTP2HTTPSPluginOptions{}), - PluginHTTPProxy: reflect.TypeOf(HTTPProxyPluginOptions{}), - PluginHTTPS2HTTP: reflect.TypeOf(HTTPS2HTTPPluginOptions{}), - PluginHTTPS2HTTPS: reflect.TypeOf(HTTPS2HTTPSPluginOptions{}), - PluginSocks5: reflect.TypeOf(Socks5PluginOptions{}), - PluginStaticFile: reflect.TypeOf(StaticFilePluginOptions{}), - PluginUnixDomainSocket: reflect.TypeOf(UnixDomainSocketPluginOptions{}), +func (c *TypedClientPluginOptions) MarshalJSON() ([]byte, error) { + return json.Marshal(c.ClientPluginOptions) } type HTTP2HTTPSPluginOptions struct { @@ -90,36 +107,61 @@ type HTTP2HTTPSPluginOptions struct { RequestHeaders HeaderOperations `json:"requestHeaders,omitempty"` } +func (o *HTTP2HTTPSPluginOptions) Complete() {} + type HTTPProxyPluginOptions struct { Type string `json:"type,omitempty"` HTTPUser string `json:"httpUser,omitempty"` HTTPPassword string `json:"httpPassword,omitempty"` } +func (o *HTTPProxyPluginOptions) Complete() {} + type HTTPS2HTTPPluginOptions struct { Type string `json:"type,omitempty"` LocalAddr string `json:"localAddr,omitempty"` HostHeaderRewrite string `json:"hostHeaderRewrite,omitempty"` RequestHeaders HeaderOperations `json:"requestHeaders,omitempty"` + EnableHTTP2 *bool `json:"enableHTTP2,omitempty"` CrtPath string `json:"crtPath,omitempty"` KeyPath string `json:"keyPath,omitempty"` } +func (o *HTTPS2HTTPPluginOptions) Complete() { + o.EnableHTTP2 = util.EmptyOr(o.EnableHTTP2, lo.ToPtr(true)) +} + type HTTPS2HTTPSPluginOptions struct { Type string `json:"type,omitempty"` LocalAddr string `json:"localAddr,omitempty"` HostHeaderRewrite string `json:"hostHeaderRewrite,omitempty"` RequestHeaders HeaderOperations `json:"requestHeaders,omitempty"` + EnableHTTP2 *bool `json:"enableHTTP2,omitempty"` CrtPath string `json:"crtPath,omitempty"` KeyPath string `json:"keyPath,omitempty"` } +func (o *HTTPS2HTTPSPluginOptions) Complete() { + o.EnableHTTP2 = util.EmptyOr(o.EnableHTTP2, lo.ToPtr(true)) +} + +type HTTP2HTTPPluginOptions struct { + Type string `json:"type,omitempty"` + LocalAddr string `json:"localAddr,omitempty"` + HostHeaderRewrite string `json:"hostHeaderRewrite,omitempty"` + RequestHeaders HeaderOperations `json:"requestHeaders,omitempty"` +} + +func (o *HTTP2HTTPPluginOptions) Complete() {} + type Socks5PluginOptions struct { Type string `json:"type,omitempty"` Username string `json:"username,omitempty"` Password string `json:"password,omitempty"` } +func (o *Socks5PluginOptions) Complete() {} + type StaticFilePluginOptions struct { Type string `json:"type,omitempty"` LocalPath string `json:"localPath,omitempty"` @@ -128,7 +170,26 @@ type StaticFilePluginOptions struct { HTTPPassword string `json:"httpPassword,omitempty"` } +func (o *StaticFilePluginOptions) Complete() {} + type UnixDomainSocketPluginOptions struct { Type string `json:"type,omitempty"` UnixPath string `json:"unixPath,omitempty"` } + +func (o *UnixDomainSocketPluginOptions) Complete() {} + +type TLS2RawPluginOptions struct { + Type string `json:"type,omitempty"` + LocalAddr string `json:"localAddr,omitempty"` + CrtPath string `json:"crtPath,omitempty"` + KeyPath string `json:"keyPath,omitempty"` +} + +func (o *TLS2RawPluginOptions) Complete() {} + +type VirtualNetPluginOptions struct { + Type string `json:"type,omitempty"` +} + +func (o *VirtualNetPluginOptions) Complete() {} diff --git a/pkg/config/v1/server.go b/pkg/config/v1/server.go index 03b05d9d043..54aac080bd0 100644 --- a/pkg/config/v1/server.go +++ b/pkg/config/v1/server.go @@ -15,6 +15,9 @@ package v1 import ( + "context" + "fmt" + "github.com/samber/lo" "github.com/fatedier/frp/pkg/config/types" @@ -98,8 +101,10 @@ type ServerConfig struct { HTTPPlugins []HTTPPluginOptions `json:"httpPlugins,omitempty"` } -func (c *ServerConfig) Complete() { - c.Auth.Complete() +func (c *ServerConfig) Complete() error { + if err := c.Auth.Complete(); err != nil { + return err + } c.Log.Complete() c.Transport.Complete() c.WebServer.Complete() @@ -120,17 +125,31 @@ func (c *ServerConfig) Complete() { c.UserConnTimeout = util.EmptyOr(c.UserConnTimeout, 10) c.UDPPacketSize = util.EmptyOr(c.UDPPacketSize, 1500) c.NatHoleAnalysisDataReserveHours = util.EmptyOr(c.NatHoleAnalysisDataReserveHours, 7*24) + return nil } type AuthServerConfig struct { Method AuthMethod `json:"method,omitempty"` AdditionalScopes []AuthScope `json:"additionalScopes,omitempty"` Token string `json:"token,omitempty"` + TokenSource *ValueSource `json:"tokenSource,omitempty"` OIDC AuthOIDCServerConfig `json:"oidc,omitempty"` } -func (c *AuthServerConfig) Complete() { +func (c *AuthServerConfig) Complete() error { c.Method = util.EmptyOr(c.Method, "token") + + // Resolve tokenSource during configuration loading + if c.Method == AuthMethodToken && c.TokenSource != nil { + token, err := c.TokenSource.Resolve(context.Background()) + if err != nil { + return fmt.Errorf("failed to resolve auth.tokenSource: %w", err) + } + // Move the resolved token to the Token field and clear TokenSource + c.Token = token + c.TokenSource = nil + } + return nil } type AuthOIDCServerConfig struct { @@ -176,10 +195,15 @@ type ServerTransportConfig struct { func (c *ServerTransportConfig) Complete() { c.TCPMux = util.EmptyOr(c.TCPMux, lo.ToPtr(true)) - c.TCPMuxKeepaliveInterval = util.EmptyOr(c.TCPMuxKeepaliveInterval, 60) + c.TCPMuxKeepaliveInterval = util.EmptyOr(c.TCPMuxKeepaliveInterval, 30) c.TCPKeepAlive = util.EmptyOr(c.TCPKeepAlive, 7200) c.MaxPoolCount = util.EmptyOr(c.MaxPoolCount, 5) - c.HeartbeatTimeout = util.EmptyOr(c.HeartbeatTimeout, 90) + if lo.FromPtr(c.TCPMux) { + // If TCPMux is enabled, heartbeat of application layer is unnecessary because we can rely on heartbeat in tcpmux. + c.HeartbeatTimeout = util.EmptyOr(c.HeartbeatTimeout, -1) + } else { + c.HeartbeatTimeout = util.EmptyOr(c.HeartbeatTimeout, 90) + } c.QUIC.Complete() if c.TLS.TrustedCaFile != "" { c.TLS.Force = true diff --git a/pkg/config/v1/server_test.go b/pkg/config/v1/server_test.go index 3100fc4b12f..21d18fb7653 100644 --- a/pkg/config/v1/server_test.go +++ b/pkg/config/v1/server_test.go @@ -15,6 +15,8 @@ package v1 import ( + "os" + "path/filepath" "testing" "github.com/samber/lo" @@ -24,9 +26,77 @@ import ( func TestServerConfigComplete(t *testing.T) { require := require.New(t) c := &ServerConfig{} - c.Complete() + err := c.Complete() + require.NoError(err) require.EqualValues("token", c.Auth.Method) require.Equal(true, lo.FromPtr(c.Transport.TCPMux)) require.Equal(true, lo.FromPtr(c.DetailedErrorsToClient)) } + +func TestAuthServerConfig_Complete(t *testing.T) { + // Create a temporary file for testing + tmpDir := t.TempDir() + testFile := filepath.Join(tmpDir, "test_token") + testContent := "file-token-value" + err := os.WriteFile(testFile, []byte(testContent), 0o600) + require.NoError(t, err) + + tests := []struct { + name string + config AuthServerConfig + expectToken string + expectPanic bool + }{ + { + name: "tokenSource resolved to token", + config: AuthServerConfig{ + Method: AuthMethodToken, + TokenSource: &ValueSource{ + Type: "file", + File: &FileSource{ + Path: testFile, + }, + }, + }, + expectToken: testContent, + expectPanic: false, + }, + { + name: "direct token unchanged", + config: AuthServerConfig{ + Method: AuthMethodToken, + Token: "direct-token", + }, + expectToken: "direct-token", + expectPanic: false, + }, + { + name: "invalid tokenSource should panic", + config: AuthServerConfig{ + Method: AuthMethodToken, + TokenSource: &ValueSource{ + Type: "file", + File: &FileSource{ + Path: "/non/existent/file", + }, + }, + }, + expectPanic: true, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if tt.expectPanic { + err := tt.config.Complete() + require.Error(t, err) + } else { + err := tt.config.Complete() + require.NoError(t, err) + require.Equal(t, tt.expectToken, tt.config.Token) + require.Nil(t, tt.config.TokenSource, "TokenSource should be cleared after resolution") + } + }) + } +} diff --git a/pkg/config/v1/validation/client.go b/pkg/config/v1/validation/client.go index cc46607cb9c..0c8575c990c 100644 --- a/pkg/config/v1/validation/client.go +++ b/pkg/config/v1/validation/client.go @@ -23,6 +23,7 @@ import ( "github.com/samber/lo" v1 "github.com/fatedier/frp/pkg/config/v1" + "github.com/fatedier/frp/pkg/featuregate" ) func ValidateClientCommonConfig(c *v1.ClientCommonConfig) (Warning, error) { @@ -30,6 +31,13 @@ func ValidateClientCommonConfig(c *v1.ClientCommonConfig) (Warning, error) { warnings Warning errs error ) + // validate feature gates + if c.VirtualNet.Address != "" { + if !featuregate.Enabled(featuregate.VirtualNet) { + return warnings, fmt.Errorf("VirtualNet feature is not enabled; enable it by setting the appropriate feature gate flag") + } + } + if !slices.Contains(SupportedAuthMethods, c.Auth.Method) { errs = AppendError(errs, fmt.Errorf("invalid auth method, optional values are %v", SupportedAuthMethods)) } @@ -37,6 +45,18 @@ func ValidateClientCommonConfig(c *v1.ClientCommonConfig) (Warning, error) { errs = AppendError(errs, fmt.Errorf("invalid auth additional scopes, optional values are %v", SupportedAuthAdditionalScopes)) } + // Validate token/tokenSource mutual exclusivity + if c.Auth.Token != "" && c.Auth.TokenSource != nil { + errs = AppendError(errs, fmt.Errorf("cannot specify both auth.token and auth.tokenSource")) + } + + // Validate tokenSource if specified + if c.Auth.TokenSource != nil { + if err := c.Auth.TokenSource.Validate(); err != nil { + errs = AppendError(errs, fmt.Errorf("invalid auth.tokenSource: %v", err)) + } + } + if err := validateLogConfig(&c.Log); err != nil { errs = AppendError(errs, err) } diff --git a/pkg/config/v1/validation/plugin.go b/pkg/config/v1/validation/plugin.go index 9c88d142cb2..30a66d83728 100644 --- a/pkg/config/v1/validation/plugin.go +++ b/pkg/config/v1/validation/plugin.go @@ -32,6 +32,8 @@ func ValidateClientPluginOptions(c v1.ClientPluginOptions) error { return validateStaticFilePluginOptions(v) case *v1.UnixDomainSocketPluginOptions: return validateUnixDomainSocketPluginOptions(v) + case *v1.TLS2RawPluginOptions: + return validateTLS2RawPluginOptions(v) } return nil } @@ -70,3 +72,10 @@ func validateUnixDomainSocketPluginOptions(c *v1.UnixDomainSocketPluginOptions) } return nil } + +func validateTLS2RawPluginOptions(c *v1.TLS2RawPluginOptions) error { + if c.LocalAddr == "" { + return errors.New("localAddr is required") + } + return nil +} diff --git a/pkg/config/v1/validation/server.go b/pkg/config/v1/validation/server.go index cdb80ea3851..5694227299f 100644 --- a/pkg/config/v1/validation/server.go +++ b/pkg/config/v1/validation/server.go @@ -35,6 +35,18 @@ func ValidateServerConfig(c *v1.ServerConfig) (Warning, error) { errs = AppendError(errs, fmt.Errorf("invalid auth additional scopes, optional values are %v", SupportedAuthAdditionalScopes)) } + // Validate token/tokenSource mutual exclusivity + if c.Auth.Token != "" && c.Auth.TokenSource != nil { + errs = AppendError(errs, fmt.Errorf("cannot specify both auth.token and auth.tokenSource")) + } + + // Validate tokenSource if specified + if c.Auth.TokenSource != nil { + if err := c.Auth.TokenSource.Validate(); err != nil { + errs = AppendError(errs, fmt.Errorf("invalid auth.tokenSource: %v", err)) + } + } + if err := validateLogConfig(&c.Log); err != nil { errs = AppendError(errs, err) } diff --git a/pkg/config/v1/value_source.go b/pkg/config/v1/value_source.go new file mode 100644 index 00000000000..624a2658965 --- /dev/null +++ b/pkg/config/v1/value_source.go @@ -0,0 +1,93 @@ +// Copyright 2025 The frp Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package v1 + +import ( + "context" + "errors" + "fmt" + "os" + "strings" +) + +// ValueSource provides a way to dynamically resolve configuration values +// from various sources like files, environment variables, or external services. +type ValueSource struct { + Type string `json:"type"` + File *FileSource `json:"file,omitempty"` +} + +// FileSource specifies how to load a value from a file. +type FileSource struct { + Path string `json:"path"` +} + +// Validate validates the ValueSource configuration. +func (v *ValueSource) Validate() error { + if v == nil { + return errors.New("valueSource cannot be nil") + } + + switch v.Type { + case "file": + if v.File == nil { + return errors.New("file configuration is required when type is 'file'") + } + return v.File.Validate() + default: + return fmt.Errorf("unsupported value source type: %s (only 'file' is supported)", v.Type) + } +} + +// Resolve resolves the value from the configured source. +func (v *ValueSource) Resolve(ctx context.Context) (string, error) { + if err := v.Validate(); err != nil { + return "", err + } + + switch v.Type { + case "file": + return v.File.Resolve(ctx) + default: + return "", fmt.Errorf("unsupported value source type: %s", v.Type) + } +} + +// Validate validates the FileSource configuration. +func (f *FileSource) Validate() error { + if f == nil { + return errors.New("fileSource cannot be nil") + } + + if f.Path == "" { + return errors.New("file path cannot be empty") + } + return nil +} + +// Resolve reads and returns the content from the specified file. +func (f *FileSource) Resolve(_ context.Context) (string, error) { + if err := f.Validate(); err != nil { + return "", err + } + + content, err := os.ReadFile(f.Path) + if err != nil { + return "", fmt.Errorf("failed to read file %s: %v", f.Path, err) + } + + // Trim whitespace, which is important for file-based tokens + return strings.TrimSpace(string(content)), nil +} diff --git a/pkg/config/v1/value_source_test.go b/pkg/config/v1/value_source_test.go new file mode 100644 index 00000000000..685151f44ad --- /dev/null +++ b/pkg/config/v1/value_source_test.go @@ -0,0 +1,246 @@ +// Copyright 2025 The frp Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package v1 + +import ( + "context" + "os" + "path/filepath" + "testing" +) + +func TestValueSource_Validate(t *testing.T) { + tests := []struct { + name string + vs *ValueSource + wantErr bool + }{ + { + name: "nil valueSource", + vs: nil, + wantErr: true, + }, + { + name: "unsupported type", + vs: &ValueSource{ + Type: "unsupported", + }, + wantErr: true, + }, + { + name: "file type without file config", + vs: &ValueSource{ + Type: "file", + File: nil, + }, + wantErr: true, + }, + { + name: "valid file type with absolute path", + vs: &ValueSource{ + Type: "file", + File: &FileSource{ + Path: "/tmp/test", + }, + }, + wantErr: false, + }, + { + name: "valid file type with relative path", + vs: &ValueSource{ + Type: "file", + File: &FileSource{ + Path: "configs/token", + }, + }, + wantErr: false, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + err := tt.vs.Validate() + if (err != nil) != tt.wantErr { + t.Errorf("ValueSource.Validate() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} + +func TestFileSource_Validate(t *testing.T) { + tests := []struct { + name string + fs *FileSource + wantErr bool + }{ + { + name: "nil fileSource", + fs: nil, + wantErr: true, + }, + { + name: "empty path", + fs: &FileSource{ + Path: "", + }, + wantErr: true, + }, + { + name: "relative path (allowed)", + fs: &FileSource{ + Path: "relative/path", + }, + wantErr: false, + }, + { + name: "absolute path", + fs: &FileSource{ + Path: "/absolute/path", + }, + wantErr: false, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + err := tt.fs.Validate() + if (err != nil) != tt.wantErr { + t.Errorf("FileSource.Validate() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} + +func TestFileSource_Resolve(t *testing.T) { + // Create a temporary file for testing + tmpDir := t.TempDir() + testFile := filepath.Join(tmpDir, "test_token") + testContent := "test-token-value\n\t " + expectedContent := "test-token-value" + + err := os.WriteFile(testFile, []byte(testContent), 0o600) + if err != nil { + t.Fatalf("failed to create test file: %v", err) + } + + tests := []struct { + name string + fs *FileSource + want string + wantErr bool + }{ + { + name: "valid file path", + fs: &FileSource{ + Path: testFile, + }, + want: expectedContent, + wantErr: false, + }, + { + name: "non-existent file", + fs: &FileSource{ + Path: "/non/existent/file", + }, + want: "", + wantErr: true, + }, + { + name: "path traversal attempt (should fail validation)", + fs: &FileSource{ + Path: "../../../etc/passwd", + }, + want: "", + wantErr: true, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got, err := tt.fs.Resolve(context.Background()) + if (err != nil) != tt.wantErr { + t.Errorf("FileSource.Resolve() error = %v, wantErr %v", err, tt.wantErr) + return + } + if got != tt.want { + t.Errorf("FileSource.Resolve() = %v, want %v", got, tt.want) + } + }) + } +} + +func TestValueSource_Resolve(t *testing.T) { + // Create a temporary file for testing + tmpDir := t.TempDir() + testFile := filepath.Join(tmpDir, "test_token") + testContent := "test-token-value" + + err := os.WriteFile(testFile, []byte(testContent), 0o600) + if err != nil { + t.Fatalf("failed to create test file: %v", err) + } + + tests := []struct { + name string + vs *ValueSource + want string + wantErr bool + }{ + { + name: "valid file type", + vs: &ValueSource{ + Type: "file", + File: &FileSource{ + Path: testFile, + }, + }, + want: testContent, + wantErr: false, + }, + { + name: "unsupported type", + vs: &ValueSource{ + Type: "unsupported", + }, + want: "", + wantErr: true, + }, + { + name: "file type with path traversal", + vs: &ValueSource{ + Type: "file", + File: &FileSource{ + Path: "../../../etc/passwd", + }, + }, + want: "", + wantErr: true, + }, + } + + ctx := context.Background() + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + got, err := tt.vs.Resolve(ctx) + if (err != nil) != tt.wantErr { + t.Errorf("ValueSource.Resolve() error = %v, wantErr %v", err, tt.wantErr) + return + } + if got != tt.want { + t.Errorf("ValueSource.Resolve() = %v, want %v", got, tt.want) + } + }) + } +} diff --git a/pkg/config/v1/visitor.go b/pkg/config/v1/visitor.go index e9fa166ea57..7629875a6f2 100644 --- a/pkg/config/v1/visitor.go +++ b/pkg/config/v1/visitor.go @@ -44,6 +44,9 @@ type VisitorBaseConfig struct { // It can be less than 0, it means don't bind to the port and only receive connections redirected from // other visitors. (This is not supported for SUDP now) BindPort int `json:"bindPort,omitempty"` + + // Plugin specifies what plugin should be used. + Plugin TypedVisitorPluginOptions `json:"plugin,omitempty"` } func (c *VisitorBaseConfig) GetBaseConfig() *VisitorBaseConfig { @@ -120,6 +123,10 @@ func (c *TypedVisitorConfig) UnmarshalJSON(b []byte) error { return nil } +func (c *TypedVisitorConfig) MarshalJSON() ([]byte, error) { + return json.Marshal(c.VisitorConfigurer) +} + func NewVisitorConfigurerByType(t VisitorType) VisitorConfigurer { v, ok := visitorConfigTypeMap[t] if !ok { @@ -153,6 +160,9 @@ type XTCPVisitorConfig struct { MinRetryInterval int `json:"minRetryInterval,omitempty"` FallbackTo string `json:"fallbackTo,omitempty"` FallbackTimeoutMs int `json:"fallbackTimeoutMs,omitempty"` + + // NatTraversal configuration for NAT traversal + NatTraversal *NatTraversalConfig `json:"natTraversal,omitempty"` } func (c *XTCPVisitorConfig) Complete(g *ClientCommonConfig) { diff --git a/pkg/config/v1/visitor_plugin.go b/pkg/config/v1/visitor_plugin.go new file mode 100644 index 00000000000..5a4909bdb84 --- /dev/null +++ b/pkg/config/v1/visitor_plugin.go @@ -0,0 +1,86 @@ +// Copyright 2025 The frp Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package v1 + +import ( + "bytes" + "encoding/json" + "errors" + "fmt" + "reflect" +) + +const ( + VisitorPluginVirtualNet = "virtual_net" +) + +var visitorPluginOptionsTypeMap = map[string]reflect.Type{ + VisitorPluginVirtualNet: reflect.TypeOf(VirtualNetVisitorPluginOptions{}), +} + +type VisitorPluginOptions interface { + Complete() +} + +type TypedVisitorPluginOptions struct { + Type string `json:"type"` + VisitorPluginOptions +} + +func (c *TypedVisitorPluginOptions) UnmarshalJSON(b []byte) error { + if len(b) == 4 && string(b) == "null" { + return nil + } + + typeStruct := struct { + Type string `json:"type"` + }{} + if err := json.Unmarshal(b, &typeStruct); err != nil { + return err + } + + c.Type = typeStruct.Type + if c.Type == "" { + return errors.New("visitor plugin type is empty") + } + + v, ok := visitorPluginOptionsTypeMap[typeStruct.Type] + if !ok { + return fmt.Errorf("unknown visitor plugin type: %s", typeStruct.Type) + } + options := reflect.New(v).Interface().(VisitorPluginOptions) + + decoder := json.NewDecoder(bytes.NewBuffer(b)) + if DisallowUnknownFields { + decoder.DisallowUnknownFields() + } + + if err := decoder.Decode(options); err != nil { + return fmt.Errorf("unmarshal VisitorPluginOptions error: %v", err) + } + c.VisitorPluginOptions = options + return nil +} + +func (c *TypedVisitorPluginOptions) MarshalJSON() ([]byte, error) { + return json.Marshal(c.VisitorPluginOptions) +} + +type VirtualNetVisitorPluginOptions struct { + Type string `json:"type"` + DestinationIP string `json:"destinationIP"` +} + +func (o *VirtualNetVisitorPluginOptions) Complete() {} diff --git a/pkg/featuregate/feature_gate.go b/pkg/featuregate/feature_gate.go new file mode 100644 index 00000000000..c5fd684bbd2 --- /dev/null +++ b/pkg/featuregate/feature_gate.go @@ -0,0 +1,219 @@ +// Copyright 2025 The frp Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package featuregate + +import ( + "fmt" + "sort" + "strings" + "sync" + "sync/atomic" +) + +// Feature represents a feature gate name +type Feature string + +// FeatureStage represents the maturity level of a feature +type FeatureStage string + +const ( + // Alpha means the feature is experimental and disabled by default + Alpha FeatureStage = "ALPHA" + // Beta means the feature is more stable but still might change and is disabled by default + Beta FeatureStage = "BETA" + // GA means the feature is generally available and enabled by default + GA FeatureStage = "" +) + +// FeatureSpec describes a feature and its properties +type FeatureSpec struct { + // Default is the default enablement state for the feature + Default bool + // LockToDefault indicates the feature cannot be changed from its default + LockToDefault bool + // Stage indicates the maturity level of the feature + Stage FeatureStage +} + +// Define all available features here +var ( + VirtualNet = Feature("VirtualNet") +) + +// defaultFeatures defines default features with their specifications +var defaultFeatures = map[Feature]FeatureSpec{ + // Actual features + VirtualNet: {Default: false, Stage: Alpha}, +} + +// FeatureGate indicates whether a given feature is enabled or not +type FeatureGate interface { + // Enabled returns true if the key is enabled + Enabled(key Feature) bool + // KnownFeatures returns a slice of strings describing the known features + KnownFeatures() []string +} + +// MutableFeatureGate allows for dynamic feature gate configuration +type MutableFeatureGate interface { + FeatureGate + + // SetFromMap sets feature gate values from a map[string]bool + SetFromMap(m map[string]bool) error + // Add adds features to the feature gate + Add(features map[Feature]FeatureSpec) error + // String returns a string representing the feature gate configuration + String() string +} + +// featureGate implements the FeatureGate and MutableFeatureGate interfaces +type featureGate struct { + // lock guards writes to known, enabled, and reads/writes of closed + lock sync.Mutex + // known holds a map[Feature]FeatureSpec + known atomic.Value + // enabled holds a map[Feature]bool + enabled atomic.Value + // closed is set to true once the feature gates are considered immutable + closed bool +} + +// NewFeatureGate creates a new feature gate with the default features +func NewFeatureGate() MutableFeatureGate { + known := map[Feature]FeatureSpec{} + for k, v := range defaultFeatures { + known[k] = v + } + + f := &featureGate{} + f.known.Store(known) + f.enabled.Store(map[Feature]bool{}) + return f +} + +// SetFromMap sets feature gate values from a map[string]bool +func (f *featureGate) SetFromMap(m map[string]bool) error { + f.lock.Lock() + defer f.lock.Unlock() + + // Copy existing state + known := map[Feature]FeatureSpec{} + for k, v := range f.known.Load().(map[Feature]FeatureSpec) { + known[k] = v + } + enabled := map[Feature]bool{} + for k, v := range f.enabled.Load().(map[Feature]bool) { + enabled[k] = v + } + + // Apply the new settings + for k, v := range m { + k := Feature(k) + featureSpec, ok := known[k] + if !ok { + return fmt.Errorf("unrecognized feature gate: %s", k) + } + if featureSpec.LockToDefault && featureSpec.Default != v { + return fmt.Errorf("cannot set feature gate %v to %v, feature is locked to %v", k, v, featureSpec.Default) + } + enabled[k] = v + } + + // Persist the changes + f.known.Store(known) + f.enabled.Store(enabled) + return nil +} + +// Add adds features to the feature gate +func (f *featureGate) Add(features map[Feature]FeatureSpec) error { + f.lock.Lock() + defer f.lock.Unlock() + + if f.closed { + return fmt.Errorf("cannot add feature gates after the feature gate is closed") + } + + // Copy existing state + known := map[Feature]FeatureSpec{} + for k, v := range f.known.Load().(map[Feature]FeatureSpec) { + known[k] = v + } + + // Add new features + for name, spec := range features { + if existingSpec, found := known[name]; found { + if existingSpec == spec { + continue + } + return fmt.Errorf("feature gate %q with different spec already exists: %v", name, existingSpec) + } + known[name] = spec + } + + // Persist changes + f.known.Store(known) + + return nil +} + +// String returns a string containing all enabled feature gates, formatted as "key1=value1,key2=value2,..." +func (f *featureGate) String() string { + pairs := []string{} + for k, v := range f.enabled.Load().(map[Feature]bool) { + pairs = append(pairs, fmt.Sprintf("%s=%t", k, v)) + } + sort.Strings(pairs) + return strings.Join(pairs, ",") +} + +// Enabled returns true if the key is enabled +func (f *featureGate) Enabled(key Feature) bool { + if v, ok := f.enabled.Load().(map[Feature]bool)[key]; ok { + return v + } + if v, ok := f.known.Load().(map[Feature]FeatureSpec)[key]; ok { + return v.Default + } + return false +} + +// KnownFeatures returns a slice of strings describing the FeatureGate's known features +// GA features are hidden from the list +func (f *featureGate) KnownFeatures() []string { + knownFeatures := f.known.Load().(map[Feature]FeatureSpec) + known := make([]string, 0, len(knownFeatures)) + for k, v := range knownFeatures { + if v.Stage == GA { + continue + } + known = append(known, fmt.Sprintf("%s=true|false (%s - default=%t)", k, v.Stage, v.Default)) + } + sort.Strings(known) + return known +} + +// Default feature gates instance +var DefaultFeatureGates = NewFeatureGate() + +// Enabled checks if a feature is enabled in the default feature gates +func Enabled(name Feature) bool { + return DefaultFeatureGates.Enabled(name) +} + +// SetFromMap sets feature gate values from a map in the default feature gates +func SetFromMap(featureMap map[string]bool) error { + return DefaultFeatureGates.SetFromMap(featureMap) +} diff --git a/pkg/metrics/mem/server.go b/pkg/metrics/mem/server.go index d92546c4c58..70cfc1c1486 100644 --- a/pkg/metrics/mem/server.go +++ b/pkg/metrics/mem/server.go @@ -109,7 +109,7 @@ func (m *serverMetrics) NewProxy(name string, proxyType string) { m.info.ProxyTypeCounts[proxyType] = counter proxyStats, ok := m.info.ProxyStatistics[name] - if !(ok && proxyStats.ProxyType == proxyType) { + if !ok || proxyStats.ProxyType != proxyType { proxyStats = &ProxyStatistics{ Name: name, ProxyType: proxyType, diff --git a/pkg/metrics/prometheus/server.go b/pkg/metrics/prometheus/server.go index 56dea6e82fe..a99bb1d5efe 100644 --- a/pkg/metrics/prometheus/server.go +++ b/pkg/metrics/prometheus/server.go @@ -14,11 +14,12 @@ const ( var ServerMetrics metrics.ServerMetrics = newServerMetrics() type serverMetrics struct { - clientCount prometheus.Gauge - proxyCount *prometheus.GaugeVec - connectionCount *prometheus.GaugeVec - trafficIn *prometheus.CounterVec - trafficOut *prometheus.CounterVec + clientCount prometheus.Gauge + proxyCount *prometheus.GaugeVec + proxyCountDetailed *prometheus.GaugeVec + connectionCount *prometheus.GaugeVec + trafficIn *prometheus.CounterVec + trafficOut *prometheus.CounterVec } func (m *serverMetrics) NewClient() { @@ -29,12 +30,14 @@ func (m *serverMetrics) CloseClient() { m.clientCount.Dec() } -func (m *serverMetrics) NewProxy(_ string, proxyType string) { +func (m *serverMetrics) NewProxy(name string, proxyType string) { m.proxyCount.WithLabelValues(proxyType).Inc() + m.proxyCountDetailed.WithLabelValues(proxyType, name).Inc() } -func (m *serverMetrics) CloseProxy(_ string, proxyType string) { +func (m *serverMetrics) CloseProxy(name string, proxyType string) { m.proxyCount.WithLabelValues(proxyType).Dec() + m.proxyCountDetailed.WithLabelValues(proxyType, name).Dec() } func (m *serverMetrics) OpenConnection(name string, proxyType string) { @@ -67,6 +70,12 @@ func newServerMetrics() *serverMetrics { Name: "proxy_counts", Help: "The current proxy counts", }, []string{"type"}), + proxyCountDetailed: prometheus.NewGaugeVec(prometheus.GaugeOpts{ + Namespace: namespace, + Subsystem: serverSubsystem, + Name: "proxy_counts_detailed", + Help: "The current number of proxies grouped by type and name", + }, []string{"type", "name"}), connectionCount: prometheus.NewGaugeVec(prometheus.GaugeOpts{ Namespace: namespace, Subsystem: serverSubsystem, @@ -88,6 +97,7 @@ func newServerMetrics() *serverMetrics { } prometheus.MustRegister(m.clientCount) prometheus.MustRegister(m.proxyCount) + prometheus.MustRegister(m.proxyCountDetailed) prometheus.MustRegister(m.connectionCount) prometheus.MustRegister(m.trafficIn) prometheus.MustRegister(m.trafficOut) diff --git a/pkg/msg/ctl.go b/pkg/msg/ctl.go index bf0c71a779b..57681b12fd1 100644 --- a/pkg/msg/ctl.go +++ b/pkg/msg/ctl.go @@ -39,6 +39,6 @@ func ReadMsgInto(c io.Reader, msg Message) (err error) { return msgCtl.ReadMsgInto(c, msg) } -func WriteMsg(c io.Writer, msg interface{}) (err error) { +func WriteMsg(c io.Writer, msg any) (err error) { return msgCtl.WriteMsg(c, msg) } diff --git a/pkg/msg/msg.go b/pkg/msg/msg.go index ab6d7d2852a..d466f231404 100644 --- a/pkg/msg/msg.go +++ b/pkg/msg/msg.go @@ -40,7 +40,7 @@ const ( TypeNatHoleReport = '6' ) -var msgTypeMap = map[byte]interface{}{ +var msgTypeMap = map[byte]any{ TypeLogin: Login{}, TypeLoginResp: LoginResp{}, TypeNewProxy: NewProxy{}, @@ -121,6 +121,7 @@ type NewProxy struct { HTTPPwd string `json:"http_pwd,omitempty"` HostHeaderRewrite string `json:"host_header_rewrite,omitempty"` Headers map[string]string `json:"headers,omitempty"` + ResponseHeaders map[string]string `json:"response_headers,omitempty"` RouteByHTTPUser string `json:"route_by_http_user,omitempty"` // stcp, sudp, xtcp diff --git a/pkg/nathole/controller.go b/pkg/nathole/controller.go index 2eca5929455..c08c81c98bd 100644 --- a/pkg/nathole/controller.go +++ b/pkg/nathole/controller.go @@ -371,8 +371,8 @@ func getRangePorts(addrs []string, difference, maxNumber int) []msg.PortsRange { return nil } - addr, err := lo.Last(addrs) - if err != nil { + addr, isLast := lo.Last(addrs) + if !isLast { return nil } var ports []msg.PortsRange diff --git a/pkg/nathole/nathole.go b/pkg/nathole/nathole.go index bdd0ee83cb2..72522fac0ed 100644 --- a/pkg/nathole/nathole.go +++ b/pkg/nathole/nathole.go @@ -68,6 +68,13 @@ var ( DetectRoleReceiver = "receiver" ) +// PrepareOptions defines options for NAT traversal preparation +type PrepareOptions struct { + // DisableAssistedAddrs disables the use of local network interfaces + // for assisted connections during NAT traversal + DisableAssistedAddrs bool +} + type PrepareResult struct { Addrs []string AssistedAddrs []string @@ -108,7 +115,7 @@ func PreCheck( } // Prepare is used to do some preparation work before penetration. -func Prepare(stunServers []string) (*PrepareResult, error) { +func Prepare(stunServers []string, opts PrepareOptions) (*PrepareResult, error) { // discover for Nat type addrs, localAddr, err := Discover(stunServers, "") if err != nil { @@ -133,9 +140,13 @@ func Prepare(stunServers []string) (*PrepareResult, error) { return nil, fmt.Errorf("listen local udp addr error: %v", err) } - assistedAddrs := make([]string, 0, len(localIPs)) - for _, ip := range localIPs { - assistedAddrs = append(assistedAddrs, net.JoinHostPort(ip, strconv.Itoa(laddr.Port))) + // Apply NAT traversal options + var assistedAddrs []string + if !opts.DisableAssistedAddrs { + assistedAddrs = make([]string, 0, len(localIPs)) + for _, ip := range localIPs { + assistedAddrs = append(assistedAddrs, net.JoinHostPort(ip, strconv.Itoa(laddr.Port))) + } } return &PrepareResult{ Addrs: addrs, diff --git a/pkg/nathole/utils.go b/pkg/nathole/utils.go index 3896a2153f0..5f32142ec1b 100644 --- a/pkg/nathole/utils.go +++ b/pkg/nathole/utils.go @@ -78,9 +78,9 @@ func ListAllLocalIPs() ([]net.IP, error) { return ips, nil } -func ListLocalIPsForNatHole(max int) ([]string, error) { - if max <= 0 { - return nil, fmt.Errorf("max must be greater than 0") +func ListLocalIPsForNatHole(maxItems int) ([]string, error) { + if maxItems <= 0 { + return nil, fmt.Errorf("maxItems must be greater than 0") } ips, err := ListAllLocalIPs() @@ -88,9 +88,9 @@ func ListLocalIPsForNatHole(max int) ([]string, error) { return nil, err } - filtered := make([]string, 0, max) + filtered := make([]string, 0, maxItems) for _, ip := range ips { - if len(filtered) >= max { + if len(filtered) >= maxItems { break } diff --git a/pkg/plugin/client/http2http.go b/pkg/plugin/client/http2http.go new file mode 100644 index 00000000000..889a10f6643 --- /dev/null +++ b/pkg/plugin/client/http2http.go @@ -0,0 +1,92 @@ +// Copyright 2024 The frp Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build !frps + +package client + +import ( + "context" + stdlog "log" + "net/http" + "net/http/httputil" + + "github.com/fatedier/golib/pool" + + v1 "github.com/fatedier/frp/pkg/config/v1" + "github.com/fatedier/frp/pkg/util/log" + netpkg "github.com/fatedier/frp/pkg/util/net" +) + +func init() { + Register(v1.PluginHTTP2HTTP, NewHTTP2HTTPPlugin) +} + +type HTTP2HTTPPlugin struct { + opts *v1.HTTP2HTTPPluginOptions + + l *Listener + s *http.Server +} + +func NewHTTP2HTTPPlugin(_ PluginContext, options v1.ClientPluginOptions) (Plugin, error) { + opts := options.(*v1.HTTP2HTTPPluginOptions) + + listener := NewProxyListener() + + p := &HTTP2HTTPPlugin{ + opts: opts, + l: listener, + } + + rp := &httputil.ReverseProxy{ + Rewrite: func(r *httputil.ProxyRequest) { + req := r.Out + req.URL.Scheme = "http" + req.URL.Host = p.opts.LocalAddr + if p.opts.HostHeaderRewrite != "" { + req.Host = p.opts.HostHeaderRewrite + } + for k, v := range p.opts.RequestHeaders.Set { + req.Header.Set(k, v) + } + }, + BufferPool: pool.NewBuffer(32 * 1024), + ErrorLog: stdlog.New(log.NewWriteLogger(log.WarnLevel, 2), "", 0), + } + + p.s = &http.Server{ + Handler: rp, + ReadHeaderTimeout: 0, + } + + go func() { + _ = p.s.Serve(listener) + }() + + return p, nil +} + +func (p *HTTP2HTTPPlugin) Handle(_ context.Context, connInfo *ConnectionInfo) { + wrapConn := netpkg.WrapReadWriteCloserToConn(connInfo.Conn, connInfo.UnderlyingConn) + _ = p.l.PutConn(wrapConn) +} + +func (p *HTTP2HTTPPlugin) Name() string { + return v1.PluginHTTP2HTTP +} + +func (p *HTTP2HTTPPlugin) Close() error { + return p.s.Close() +} diff --git a/pkg/plugin/client/http2https.go b/pkg/plugin/client/http2https.go index 65bc2140b64..538f2850f1f 100644 --- a/pkg/plugin/client/http2https.go +++ b/pkg/plugin/client/http2https.go @@ -14,16 +14,19 @@ //go:build !frps -package plugin +package client import ( + "context" "crypto/tls" - "io" - "net" + stdlog "log" "net/http" "net/http/httputil" + "github.com/fatedier/golib/pool" + v1 "github.com/fatedier/frp/pkg/config/v1" + "github.com/fatedier/frp/pkg/util/log" netpkg "github.com/fatedier/frp/pkg/util/net" ) @@ -38,7 +41,7 @@ type HTTP2HTTPSPlugin struct { s *http.Server } -func NewHTTP2HTTPSPlugin(options v1.ClientPluginOptions) (Plugin, error) { +func NewHTTP2HTTPSPlugin(_ PluginContext, options v1.ClientPluginOptions) (Plugin, error) { opts := options.(*v1.HTTP2HTTPSPluginOptions) listener := NewProxyListener() @@ -67,7 +70,9 @@ func NewHTTP2HTTPSPlugin(options v1.ClientPluginOptions) (Plugin, error) { req.Header.Set(k, v) } }, - Transport: tr, + Transport: tr, + BufferPool: pool.NewBuffer(32 * 1024), + ErrorLog: stdlog.New(log.NewWriteLogger(log.WarnLevel, 2), "", 0), } p.s = &http.Server{ @@ -82,8 +87,8 @@ func NewHTTP2HTTPSPlugin(options v1.ClientPluginOptions) (Plugin, error) { return p, nil } -func (p *HTTP2HTTPSPlugin) Handle(conn io.ReadWriteCloser, realConn net.Conn, _ *ExtraInfo) { - wrapConn := netpkg.WrapReadWriteCloserToConn(conn, realConn) +func (p *HTTP2HTTPSPlugin) Handle(_ context.Context, connInfo *ConnectionInfo) { + wrapConn := netpkg.WrapReadWriteCloserToConn(connInfo.Conn, connInfo.UnderlyingConn) _ = p.l.PutConn(wrapConn) } diff --git a/pkg/plugin/client/http_proxy.go b/pkg/plugin/client/http_proxy.go index 90a99b09434..0f6b55f4438 100644 --- a/pkg/plugin/client/http_proxy.go +++ b/pkg/plugin/client/http_proxy.go @@ -14,10 +14,11 @@ //go:build !frps -package plugin +package client import ( "bufio" + "context" "encoding/base64" "io" "net" @@ -44,7 +45,7 @@ type HTTPProxy struct { s *http.Server } -func NewHTTPProxyPlugin(options v1.ClientPluginOptions) (Plugin, error) { +func NewHTTPProxyPlugin(_ PluginContext, options v1.ClientPluginOptions) (Plugin, error) { opts := options.(*v1.HTTPProxyPluginOptions) listener := NewProxyListener() @@ -54,7 +55,8 @@ func NewHTTPProxyPlugin(options v1.ClientPluginOptions) (Plugin, error) { } hp.s = &http.Server{ - Handler: hp, + Handler: hp, + ReadHeaderTimeout: 60 * time.Second, } go func() { @@ -67,8 +69,8 @@ func (hp *HTTPProxy) Name() string { return v1.PluginHTTPProxy } -func (hp *HTTPProxy) Handle(conn io.ReadWriteCloser, realConn net.Conn, _ *ExtraInfo) { - wrapConn := netpkg.WrapReadWriteCloserToConn(conn, realConn) +func (hp *HTTPProxy) Handle(_ context.Context, connInfo *ConnectionInfo) { + wrapConn := netpkg.WrapReadWriteCloserToConn(connInfo.Conn, connInfo.UnderlyingConn) sc, rd := libnet.NewSharedConn(wrapConn) firstBytes := make([]byte, 7) diff --git a/pkg/plugin/client/https2http.go b/pkg/plugin/client/https2http.go index 1dc3840180d..963b9d2e037 100644 --- a/pkg/plugin/client/https2http.go +++ b/pkg/plugin/client/https2http.go @@ -14,18 +14,24 @@ //go:build !frps -package plugin +package client import ( + "context" "crypto/tls" "fmt" - "io" - "net" + stdlog "log" "net/http" "net/http/httputil" + "time" + + "github.com/fatedier/golib/pool" + "github.com/samber/lo" v1 "github.com/fatedier/frp/pkg/config/v1" "github.com/fatedier/frp/pkg/transport" + httppkg "github.com/fatedier/frp/pkg/util/http" + "github.com/fatedier/frp/pkg/util/log" netpkg "github.com/fatedier/frp/pkg/util/net" ) @@ -40,7 +46,7 @@ type HTTPS2HTTPPlugin struct { s *http.Server } -func NewHTTPS2HTTPPlugin(options v1.ClientPluginOptions) (Plugin, error) { +func NewHTTPS2HTTPPlugin(_ PluginContext, options v1.ClientPluginOptions) (Plugin, error) { opts := options.(*v1.HTTPS2HTTPPluginOptions) listener := NewProxyListener() @@ -63,47 +69,45 @@ func NewHTTPS2HTTPPlugin(options v1.ClientPluginOptions) (Plugin, error) { req.Header.Set(k, v) } }, + BufferPool: pool.NewBuffer(32 * 1024), + ErrorLog: stdlog.New(log.NewWriteLogger(log.WarnLevel, 2), "", 0), } + handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + if r.TLS != nil { + tlsServerName, _ := httppkg.CanonicalHost(r.TLS.ServerName) + host, _ := httppkg.CanonicalHost(r.Host) + if tlsServerName != "" && tlsServerName != host { + w.WriteHeader(http.StatusMisdirectedRequest) + return + } + } + rp.ServeHTTP(w, r) + }) - p.s = &http.Server{ - Handler: rp, + tlsConfig, err := transport.NewServerTLSConfig(p.opts.CrtPath, p.opts.KeyPath, "") + if err != nil { + return nil, fmt.Errorf("gen TLS config error: %v", err) } - var ( - tlsConfig *tls.Config - err error - ) - if opts.CrtPath != "" || opts.KeyPath != "" { - tlsConfig, err = p.genTLSConfig() - } else { - tlsConfig, err = transport.NewServerTLSConfig("", "", "") - tlsConfig.InsecureSkipVerify = true + p.s = &http.Server{ + Handler: handler, + ReadHeaderTimeout: 60 * time.Second, + TLSConfig: tlsConfig, } - if err != nil { - return nil, fmt.Errorf("gen TLS config error: %v", err) + if !lo.FromPtr(opts.EnableHTTP2) { + p.s.TLSNextProto = make(map[string]func(*http.Server, *tls.Conn, http.Handler)) } - ln := tls.NewListener(listener, tlsConfig) go func() { - _ = p.s.Serve(ln) + _ = p.s.ServeTLS(listener, "", "") }() return p, nil } -func (p *HTTPS2HTTPPlugin) genTLSConfig() (*tls.Config, error) { - cert, err := tls.LoadX509KeyPair(p.opts.CrtPath, p.opts.KeyPath) - if err != nil { - return nil, err - } - - config := &tls.Config{Certificates: []tls.Certificate{cert}} - return config, nil -} - -func (p *HTTPS2HTTPPlugin) Handle(conn io.ReadWriteCloser, realConn net.Conn, extra *ExtraInfo) { - wrapConn := netpkg.WrapReadWriteCloserToConn(conn, realConn) - if extra.SrcAddr != nil { - wrapConn.SetRemoteAddr(extra.SrcAddr) +func (p *HTTPS2HTTPPlugin) Handle(_ context.Context, connInfo *ConnectionInfo) { + wrapConn := netpkg.WrapReadWriteCloserToConn(connInfo.Conn, connInfo.UnderlyingConn) + if connInfo.SrcAddr != nil { + wrapConn.SetRemoteAddr(connInfo.SrcAddr) } _ = p.l.PutConn(wrapConn) } diff --git a/pkg/plugin/client/https2https.go b/pkg/plugin/client/https2https.go index dd3245f83be..5c669d367da 100644 --- a/pkg/plugin/client/https2https.go +++ b/pkg/plugin/client/https2https.go @@ -14,18 +14,24 @@ //go:build !frps -package plugin +package client import ( + "context" "crypto/tls" "fmt" - "io" - "net" + stdlog "log" "net/http" "net/http/httputil" + "time" + + "github.com/fatedier/golib/pool" + "github.com/samber/lo" v1 "github.com/fatedier/frp/pkg/config/v1" "github.com/fatedier/frp/pkg/transport" + httppkg "github.com/fatedier/frp/pkg/util/http" + "github.com/fatedier/frp/pkg/util/log" netpkg "github.com/fatedier/frp/pkg/util/net" ) @@ -40,7 +46,7 @@ type HTTPS2HTTPSPlugin struct { s *http.Server } -func NewHTTPS2HTTPSPlugin(options v1.ClientPluginOptions) (Plugin, error) { +func NewHTTPS2HTTPSPlugin(_ PluginContext, options v1.ClientPluginOptions) (Plugin, error) { opts := options.(*v1.HTTPS2HTTPSPluginOptions) listener := NewProxyListener() @@ -68,48 +74,46 @@ func NewHTTPS2HTTPSPlugin(options v1.ClientPluginOptions) (Plugin, error) { req.Header.Set(k, v) } }, - Transport: tr, + Transport: tr, + BufferPool: pool.NewBuffer(32 * 1024), + ErrorLog: stdlog.New(log.NewWriteLogger(log.WarnLevel, 2), "", 0), } + handler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + if r.TLS != nil { + tlsServerName, _ := httppkg.CanonicalHost(r.TLS.ServerName) + host, _ := httppkg.CanonicalHost(r.Host) + if tlsServerName != "" && tlsServerName != host { + w.WriteHeader(http.StatusMisdirectedRequest) + return + } + } + rp.ServeHTTP(w, r) + }) - p.s = &http.Server{ - Handler: rp, + tlsConfig, err := transport.NewServerTLSConfig(p.opts.CrtPath, p.opts.KeyPath, "") + if err != nil { + return nil, fmt.Errorf("gen TLS config error: %v", err) } - var ( - tlsConfig *tls.Config - err error - ) - if opts.CrtPath != "" || opts.KeyPath != "" { - tlsConfig, err = p.genTLSConfig() - } else { - tlsConfig, err = transport.NewServerTLSConfig("", "", "") - tlsConfig.InsecureSkipVerify = true + p.s = &http.Server{ + Handler: handler, + ReadHeaderTimeout: 60 * time.Second, + TLSConfig: tlsConfig, } - if err != nil { - return nil, fmt.Errorf("gen TLS config error: %v", err) + if !lo.FromPtr(opts.EnableHTTP2) { + p.s.TLSNextProto = make(map[string]func(*http.Server, *tls.Conn, http.Handler)) } - ln := tls.NewListener(listener, tlsConfig) go func() { - _ = p.s.Serve(ln) + _ = p.s.ServeTLS(listener, "", "") }() return p, nil } -func (p *HTTPS2HTTPSPlugin) genTLSConfig() (*tls.Config, error) { - cert, err := tls.LoadX509KeyPair(p.opts.CrtPath, p.opts.KeyPath) - if err != nil { - return nil, err - } - - config := &tls.Config{Certificates: []tls.Certificate{cert}} - return config, nil -} - -func (p *HTTPS2HTTPSPlugin) Handle(conn io.ReadWriteCloser, realConn net.Conn, extra *ExtraInfo) { - wrapConn := netpkg.WrapReadWriteCloserToConn(conn, realConn) - if extra.SrcAddr != nil { - wrapConn.SetRemoteAddr(extra.SrcAddr) +func (p *HTTPS2HTTPSPlugin) Handle(_ context.Context, connInfo *ConnectionInfo) { + wrapConn := netpkg.WrapReadWriteCloserToConn(connInfo.Conn, connInfo.UnderlyingConn) + if connInfo.SrcAddr != nil { + wrapConn.SetRemoteAddr(connInfo.SrcAddr) } _ = p.l.PutConn(wrapConn) } diff --git a/pkg/plugin/client/plugin.go b/pkg/plugin/client/plugin.go index 0e5548e9f4e..7bcd04893f5 100644 --- a/pkg/plugin/client/plugin.go +++ b/pkg/plugin/client/plugin.go @@ -12,9 +12,10 @@ // See the License for the specific language governing permissions and // limitations under the License. -package plugin +package client import ( + "context" "fmt" "io" "net" @@ -24,13 +25,18 @@ import ( pp "github.com/pires/go-proxyproto" v1 "github.com/fatedier/frp/pkg/config/v1" + "github.com/fatedier/frp/pkg/vnet" ) +type PluginContext struct { + Name string + VnetController *vnet.Controller +} + // Creators is used for create plugins to handle connections. var creators = make(map[string]CreatorFn) -// params has prefix "plugin_" -type CreatorFn func(options v1.ClientPluginOptions) (Plugin, error) +type CreatorFn func(pluginCtx PluginContext, options v1.ClientPluginOptions) (Plugin, error) func Register(name string, fn CreatorFn) { if _, exist := creators[name]; exist { @@ -39,16 +45,19 @@ func Register(name string, fn CreatorFn) { creators[name] = fn } -func Create(name string, options v1.ClientPluginOptions) (p Plugin, err error) { - if fn, ok := creators[name]; ok { - p, err = fn(options) +func Create(pluginName string, pluginCtx PluginContext, options v1.ClientPluginOptions) (p Plugin, err error) { + if fn, ok := creators[pluginName]; ok { + p, err = fn(pluginCtx, options) } else { - err = fmt.Errorf("plugin [%s] is not registered", name) + err = fmt.Errorf("plugin [%s] is not registered", pluginName) } return } -type ExtraInfo struct { +type ConnectionInfo struct { + Conn io.ReadWriteCloser + UnderlyingConn net.Conn + ProxyProtocolHeader *pp.Header SrcAddr net.Addr DstAddr net.Addr @@ -57,7 +66,7 @@ type ExtraInfo struct { type Plugin interface { Name() string - Handle(conn io.ReadWriteCloser, realConn net.Conn, extra *ExtraInfo) + Handle(ctx context.Context, connInfo *ConnectionInfo) Close() error } diff --git a/pkg/plugin/client/socks5.go b/pkg/plugin/client/socks5.go index a230bf55bdb..752dd1e198e 100644 --- a/pkg/plugin/client/socks5.go +++ b/pkg/plugin/client/socks5.go @@ -14,12 +14,12 @@ //go:build !frps -package plugin +package client import ( + "context" "io" "log" - "net" gosocks5 "github.com/armon/go-socks5" @@ -35,7 +35,7 @@ type Socks5Plugin struct { Server *gosocks5.Server } -func NewSocks5Plugin(options v1.ClientPluginOptions) (p Plugin, err error) { +func NewSocks5Plugin(_ PluginContext, options v1.ClientPluginOptions) (p Plugin, err error) { opts := options.(*v1.Socks5PluginOptions) cfg := &gosocks5.Config{ @@ -50,9 +50,9 @@ func NewSocks5Plugin(options v1.ClientPluginOptions) (p Plugin, err error) { return } -func (sp *Socks5Plugin) Handle(conn io.ReadWriteCloser, realConn net.Conn, _ *ExtraInfo) { - defer conn.Close() - wrapConn := netpkg.WrapReadWriteCloserToConn(conn, realConn) +func (sp *Socks5Plugin) Handle(_ context.Context, connInfo *ConnectionInfo) { + defer connInfo.Conn.Close() + wrapConn := netpkg.WrapReadWriteCloserToConn(connInfo.Conn, connInfo.UnderlyingConn) _ = sp.Server.ServeConn(wrapConn) } diff --git a/pkg/plugin/client/static_file.go b/pkg/plugin/client/static_file.go index a7db2657e7e..0bab120aa22 100644 --- a/pkg/plugin/client/static_file.go +++ b/pkg/plugin/client/static_file.go @@ -14,11 +14,10 @@ //go:build !frps -package plugin +package client import ( - "io" - "net" + "context" "net/http" "time" @@ -39,7 +38,7 @@ type StaticFilePlugin struct { s *http.Server } -func NewStaticFilePlugin(options v1.ClientPluginOptions) (Plugin, error) { +func NewStaticFilePlugin(_ PluginContext, options v1.ClientPluginOptions) (Plugin, error) { opts := options.(*v1.StaticFilePluginOptions) listener := NewProxyListener() @@ -60,7 +59,8 @@ func NewStaticFilePlugin(options v1.ClientPluginOptions) (Plugin, error) { router.Use(netpkg.NewHTTPAuthMiddleware(opts.HTTPUser, opts.HTTPPassword).SetAuthFailDelay(200 * time.Millisecond).Middleware) router.PathPrefix(prefix).Handler(netpkg.MakeHTTPGzipHandler(http.StripPrefix(prefix, http.FileServer(http.Dir(opts.LocalPath))))).Methods("GET") sp.s = &http.Server{ - Handler: router, + Handler: router, + ReadHeaderTimeout: 60 * time.Second, } go func() { _ = sp.s.Serve(listener) @@ -68,8 +68,8 @@ func NewStaticFilePlugin(options v1.ClientPluginOptions) (Plugin, error) { return sp, nil } -func (sp *StaticFilePlugin) Handle(conn io.ReadWriteCloser, realConn net.Conn, _ *ExtraInfo) { - wrapConn := netpkg.WrapReadWriteCloserToConn(conn, realConn) +func (sp *StaticFilePlugin) Handle(_ context.Context, connInfo *ConnectionInfo) { + wrapConn := netpkg.WrapReadWriteCloserToConn(connInfo.Conn, connInfo.UnderlyingConn) _ = sp.l.PutConn(wrapConn) } diff --git a/pkg/plugin/client/tls2raw.go b/pkg/plugin/client/tls2raw.go new file mode 100644 index 00000000000..445b6c91dfc --- /dev/null +++ b/pkg/plugin/client/tls2raw.go @@ -0,0 +1,82 @@ +// Copyright 2024 The frp Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build !frps + +package client + +import ( + "context" + "crypto/tls" + "net" + + libio "github.com/fatedier/golib/io" + + v1 "github.com/fatedier/frp/pkg/config/v1" + "github.com/fatedier/frp/pkg/transport" + netpkg "github.com/fatedier/frp/pkg/util/net" + "github.com/fatedier/frp/pkg/util/xlog" +) + +func init() { + Register(v1.PluginTLS2Raw, NewTLS2RawPlugin) +} + +type TLS2RawPlugin struct { + opts *v1.TLS2RawPluginOptions + + tlsConfig *tls.Config +} + +func NewTLS2RawPlugin(_ PluginContext, options v1.ClientPluginOptions) (Plugin, error) { + opts := options.(*v1.TLS2RawPluginOptions) + + p := &TLS2RawPlugin{ + opts: opts, + } + + tlsConfig, err := transport.NewServerTLSConfig(p.opts.CrtPath, p.opts.KeyPath, "") + if err != nil { + return nil, err + } + p.tlsConfig = tlsConfig + return p, nil +} + +func (p *TLS2RawPlugin) Handle(ctx context.Context, connInfo *ConnectionInfo) { + xl := xlog.FromContextSafe(ctx) + + wrapConn := netpkg.WrapReadWriteCloserToConn(connInfo.Conn, connInfo.UnderlyingConn) + tlsConn := tls.Server(wrapConn, p.tlsConfig) + + if err := tlsConn.Handshake(); err != nil { + xl.Warnf("tls handshake error: %v", err) + return + } + rawConn, err := net.Dial("tcp", p.opts.LocalAddr) + if err != nil { + xl.Warnf("dial to local addr error: %v", err) + return + } + + libio.Join(tlsConn, rawConn) +} + +func (p *TLS2RawPlugin) Name() string { + return v1.PluginTLS2Raw +} + +func (p *TLS2RawPlugin) Close() error { + return nil +} diff --git a/pkg/plugin/client/unix_domain_socket.go b/pkg/plugin/client/unix_domain_socket.go index df68ffb469d..52d9c6525be 100644 --- a/pkg/plugin/client/unix_domain_socket.go +++ b/pkg/plugin/client/unix_domain_socket.go @@ -14,15 +14,16 @@ //go:build !frps -package plugin +package client import ( - "io" + "context" "net" libio "github.com/fatedier/golib/io" v1 "github.com/fatedier/frp/pkg/config/v1" + "github.com/fatedier/frp/pkg/util/xlog" ) func init() { @@ -33,7 +34,7 @@ type UnixDomainSocketPlugin struct { UnixAddr *net.UnixAddr } -func NewUnixDomainSocketPlugin(options v1.ClientPluginOptions) (p Plugin, err error) { +func NewUnixDomainSocketPlugin(_ PluginContext, options v1.ClientPluginOptions) (p Plugin, err error) { opts := options.(*v1.UnixDomainSocketPluginOptions) unixAddr, errRet := net.ResolveUnixAddr("unix", opts.UnixPath) @@ -48,18 +49,20 @@ func NewUnixDomainSocketPlugin(options v1.ClientPluginOptions) (p Plugin, err er return } -func (uds *UnixDomainSocketPlugin) Handle(conn io.ReadWriteCloser, _ net.Conn, extra *ExtraInfo) { +func (uds *UnixDomainSocketPlugin) Handle(ctx context.Context, connInfo *ConnectionInfo) { + xl := xlog.FromContextSafe(ctx) localConn, err := net.DialUnix("unix", nil, uds.UnixAddr) if err != nil { + xl.Warnf("dial to uds %s error: %v", uds.UnixAddr, err) return } - if extra.ProxyProtocolHeader != nil { - if _, err := extra.ProxyProtocolHeader.WriteTo(localConn); err != nil { + if connInfo.ProxyProtocolHeader != nil { + if _, err := connInfo.ProxyProtocolHeader.WriteTo(localConn); err != nil { return } } - libio.Join(localConn, conn) + libio.Join(localConn, connInfo.Conn) } func (uds *UnixDomainSocketPlugin) Name() string { diff --git a/pkg/plugin/client/virtual_net.go b/pkg/plugin/client/virtual_net.go new file mode 100644 index 00000000000..53570035c55 --- /dev/null +++ b/pkg/plugin/client/virtual_net.go @@ -0,0 +1,92 @@ +// Copyright 2025 The frp Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build !frps + +package client + +import ( + "context" + "io" + "sync" + + v1 "github.com/fatedier/frp/pkg/config/v1" +) + +func init() { + Register(v1.PluginVirtualNet, NewVirtualNetPlugin) +} + +type VirtualNetPlugin struct { + pluginCtx PluginContext + opts *v1.VirtualNetPluginOptions + mu sync.Mutex + conns map[io.ReadWriteCloser]struct{} +} + +func NewVirtualNetPlugin(pluginCtx PluginContext, options v1.ClientPluginOptions) (Plugin, error) { + opts := options.(*v1.VirtualNetPluginOptions) + + p := &VirtualNetPlugin{ + pluginCtx: pluginCtx, + opts: opts, + } + return p, nil +} + +func (p *VirtualNetPlugin) Handle(ctx context.Context, connInfo *ConnectionInfo) { + // Verify if virtual network controller is available + if p.pluginCtx.VnetController == nil { + return + } + + // Add the connection before starting the read loop to avoid race condition + // where RemoveConn might be called before the connection is added. + p.mu.Lock() + if p.conns == nil { + p.conns = make(map[io.ReadWriteCloser]struct{}) + } + p.conns[connInfo.Conn] = struct{}{} + p.mu.Unlock() + + // Register the connection with the controller and pass the cleanup function + p.pluginCtx.VnetController.StartServerConnReadLoop(ctx, connInfo.Conn, func() { + p.RemoveConn(connInfo.Conn) + }) +} + +func (p *VirtualNetPlugin) RemoveConn(conn io.ReadWriteCloser) { + p.mu.Lock() + defer p.mu.Unlock() + // Check if the map exists, as Close might have set it to nil concurrently + if p.conns != nil { + delete(p.conns, conn) + } +} + +func (p *VirtualNetPlugin) Name() string { + return v1.PluginVirtualNet +} + +func (p *VirtualNetPlugin) Close() error { + p.mu.Lock() + defer p.mu.Unlock() + + // Close any remaining connections + for conn := range p.conns { + _ = conn.Close() + } + p.conns = nil + return nil +} diff --git a/pkg/plugin/server/http.go b/pkg/plugin/server/http.go index 7108b7fb185..196993ef8b6 100644 --- a/pkg/plugin/server/http.go +++ b/pkg/plugin/server/http.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package plugin +package server import ( "bytes" @@ -72,7 +72,7 @@ func (p *httpPlugin) IsSupport(op string) bool { return false } -func (p *httpPlugin) Handle(ctx context.Context, op string, content interface{}) (*Response, interface{}, error) { +func (p *httpPlugin) Handle(ctx context.Context, op string, content any) (*Response, any, error) { r := &Request{ Version: APIVersion, Op: op, diff --git a/pkg/plugin/server/manager.go b/pkg/plugin/server/manager.go index ed96444ac22..dabfb46cbd0 100644 --- a/pkg/plugin/server/manager.go +++ b/pkg/plugin/server/manager.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package plugin +package server import ( "context" @@ -75,7 +75,7 @@ func (m *Manager) Login(content *LoginContent) (*LoginContent, error) { Reject: false, Unchange: true, } - retContent interface{} + retContent any err error ) reqid, _ := util.RandID() @@ -109,7 +109,7 @@ func (m *Manager) NewProxy(content *NewProxyContent) (*NewProxyContent, error) { Reject: false, Unchange: true, } - retContent interface{} + retContent any err error ) reqid, _ := util.RandID() @@ -168,7 +168,7 @@ func (m *Manager) Ping(content *PingContent) (*PingContent, error) { Reject: false, Unchange: true, } - retContent interface{} + retContent any err error ) reqid, _ := util.RandID() @@ -202,7 +202,7 @@ func (m *Manager) NewWorkConn(content *NewWorkConnContent) (*NewWorkConnContent, Reject: false, Unchange: true, } - retContent interface{} + retContent any err error ) reqid, _ := util.RandID() @@ -236,7 +236,7 @@ func (m *Manager) NewUserConn(content *NewUserConnContent) (*NewUserConnContent, Reject: false, Unchange: true, } - retContent interface{} + retContent any err error ) reqid, _ := util.RandID() diff --git a/pkg/plugin/server/plugin.go b/pkg/plugin/server/plugin.go index 0d34de5467d..3d3c8cfdd65 100644 --- a/pkg/plugin/server/plugin.go +++ b/pkg/plugin/server/plugin.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package plugin +package server import ( "context" @@ -32,5 +32,5 @@ const ( type Plugin interface { Name() string IsSupport(op string) bool - Handle(ctx context.Context, op string, content interface{}) (res *Response, retContent interface{}, err error) + Handle(ctx context.Context, op string, content any) (res *Response, retContent any, err error) } diff --git a/pkg/plugin/server/tracer.go b/pkg/plugin/server/tracer.go index 2f4f2ccc25d..5b6ede182ec 100644 --- a/pkg/plugin/server/tracer.go +++ b/pkg/plugin/server/tracer.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package plugin +package server import ( "context" diff --git a/pkg/plugin/server/types.go b/pkg/plugin/server/types.go index d7d98cb6535..4a5b7527185 100644 --- a/pkg/plugin/server/types.go +++ b/pkg/plugin/server/types.go @@ -12,23 +12,23 @@ // See the License for the specific language governing permissions and // limitations under the License. -package plugin +package server import ( "github.com/fatedier/frp/pkg/msg" ) type Request struct { - Version string `json:"version"` - Op string `json:"op"` - Content interface{} `json:"content"` + Version string `json:"version"` + Op string `json:"op"` + Content any `json:"content"` } type Response struct { - Reject bool `json:"reject"` - RejectReason string `json:"reject_reason"` - Unchange bool `json:"unchange"` - Content interface{} `json:"content"` + Reject bool `json:"reject"` + RejectReason string `json:"reject_reason"` + Unchange bool `json:"unchange"` + Content any `json:"content"` } type LoginContent struct { diff --git a/pkg/plugin/visitor/plugin.go b/pkg/plugin/visitor/plugin.go new file mode 100644 index 00000000000..94adce093b0 --- /dev/null +++ b/pkg/plugin/visitor/plugin.go @@ -0,0 +1,58 @@ +// Copyright 2025 The frp Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package visitor + +import ( + "context" + "fmt" + "net" + + v1 "github.com/fatedier/frp/pkg/config/v1" + "github.com/fatedier/frp/pkg/vnet" +) + +type PluginContext struct { + Name string + Ctx context.Context + VnetController *vnet.Controller + HandleConn func(net.Conn) +} + +// Creators is used for create plugins to handle connections. +var creators = make(map[string]CreatorFn) + +type CreatorFn func(pluginCtx PluginContext, options v1.VisitorPluginOptions) (Plugin, error) + +func Register(name string, fn CreatorFn) { + if _, exist := creators[name]; exist { + panic(fmt.Sprintf("plugin [%s] is already registered", name)) + } + creators[name] = fn +} + +func Create(pluginName string, pluginCtx PluginContext, options v1.VisitorPluginOptions) (p Plugin, err error) { + if fn, ok := creators[pluginName]; ok { + p, err = fn(pluginCtx, options) + } else { + err = fmt.Errorf("plugin [%s] is not registered", pluginName) + } + return +} + +type Plugin interface { + Name() string + Start() + Close() error +} diff --git a/pkg/plugin/visitor/virtual_net.go b/pkg/plugin/visitor/virtual_net.go new file mode 100644 index 00000000000..f660c0c89e5 --- /dev/null +++ b/pkg/plugin/visitor/virtual_net.go @@ -0,0 +1,192 @@ +// Copyright 2025 The frp Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build !frps + +package visitor + +import ( + "context" + "errors" + "fmt" + "net" + "sync" + "time" + + v1 "github.com/fatedier/frp/pkg/config/v1" + netutil "github.com/fatedier/frp/pkg/util/net" + "github.com/fatedier/frp/pkg/util/xlog" +) + +func init() { + Register(v1.VisitorPluginVirtualNet, NewVirtualNetPlugin) +} + +type VirtualNetPlugin struct { + pluginCtx PluginContext + + routes []net.IPNet + + mu sync.Mutex + controllerConn net.Conn + closeSignal chan struct{} + + ctx context.Context + cancel context.CancelFunc +} + +func NewVirtualNetPlugin(pluginCtx PluginContext, options v1.VisitorPluginOptions) (Plugin, error) { + opts := options.(*v1.VirtualNetVisitorPluginOptions) + + p := &VirtualNetPlugin{ + pluginCtx: pluginCtx, + routes: make([]net.IPNet, 0), + } + + p.ctx, p.cancel = context.WithCancel(pluginCtx.Ctx) + + if opts.DestinationIP == "" { + return nil, errors.New("destinationIP is required") + } + + // Parse DestinationIP and create a host route. + ip := net.ParseIP(opts.DestinationIP) + if ip == nil { + return nil, fmt.Errorf("invalid destination IP address [%s]", opts.DestinationIP) + } + + var mask net.IPMask + if ip.To4() != nil { + mask = net.CIDRMask(32, 32) // /32 for IPv4 + } else { + mask = net.CIDRMask(128, 128) // /128 for IPv6 + } + p.routes = append(p.routes, net.IPNet{IP: ip, Mask: mask}) + + return p, nil +} + +func (p *VirtualNetPlugin) Name() string { + return v1.VisitorPluginVirtualNet +} + +func (p *VirtualNetPlugin) Start() { + xl := xlog.FromContextSafe(p.pluginCtx.Ctx) + if p.pluginCtx.VnetController == nil { + return + } + + routeStr := "unknown" + if len(p.routes) > 0 { + routeStr = p.routes[0].String() + } + xl.Infof("starting VirtualNetPlugin for visitor [%s], attempting to register routes for %s", p.pluginCtx.Name, routeStr) + + go p.run() +} + +func (p *VirtualNetPlugin) run() { + xl := xlog.FromContextSafe(p.ctx) + reconnectDelay := 10 * time.Second + + for { + currentCloseSignal := make(chan struct{}) + + p.mu.Lock() + p.closeSignal = currentCloseSignal + p.mu.Unlock() + + select { + case <-p.ctx.Done(): + xl.Infof("VirtualNetPlugin run loop for visitor [%s] stopping (context cancelled before pipe creation).", p.pluginCtx.Name) + p.cleanupControllerConn(xl) + return + default: + } + + controllerConn, pluginConn := net.Pipe() + + p.mu.Lock() + p.controllerConn = controllerConn + p.mu.Unlock() + + pluginNotifyConn := netutil.WrapCloseNotifyConn(pluginConn, func() { + close(currentCloseSignal) // Signal the run loop on close. + }) + + xl.Infof("attempting to register client route for visitor [%s]", p.pluginCtx.Name) + p.pluginCtx.VnetController.RegisterClientRoute(p.ctx, p.pluginCtx.Name, p.routes, controllerConn) + xl.Infof("successfully registered client route for visitor [%s]. Starting connection handler with CloseNotifyConn.", p.pluginCtx.Name) + + // Pass the CloseNotifyConn to HandleConn. + // HandleConn is responsible for calling Close() on pluginNotifyConn. + p.pluginCtx.HandleConn(pluginNotifyConn) + + // Wait for context cancellation or connection close. + select { + case <-p.ctx.Done(): + xl.Infof("VirtualNetPlugin run loop stopping for visitor [%s] (context cancelled while waiting).", p.pluginCtx.Name) + p.cleanupControllerConn(xl) + return + case <-currentCloseSignal: + xl.Infof("detected connection closed via CloseNotifyConn for visitor [%s].", p.pluginCtx.Name) + // HandleConn closed the plugin side. Close the controller side. + p.cleanupControllerConn(xl) + + xl.Infof("waiting %v before attempting reconnection for visitor [%s]...", reconnectDelay, p.pluginCtx.Name) + select { + case <-time.After(reconnectDelay): + case <-p.ctx.Done(): + xl.Infof("VirtualNetPlugin reconnection delay interrupted for visitor [%s]", p.pluginCtx.Name) + return + } + } + + xl.Infof("re-establishing virtual connection for visitor [%s]...", p.pluginCtx.Name) + } +} + +// cleanupControllerConn closes the current controllerConn (if it exists) under lock. +func (p *VirtualNetPlugin) cleanupControllerConn(xl *xlog.Logger) { + p.mu.Lock() + defer p.mu.Unlock() + if p.controllerConn != nil { + xl.Debugf("cleaning up controllerConn for visitor [%s]", p.pluginCtx.Name) + p.controllerConn.Close() + p.controllerConn = nil + } + p.closeSignal = nil +} + +// Close initiates the plugin shutdown. +func (p *VirtualNetPlugin) Close() error { + xl := xlog.FromContextSafe(p.pluginCtx.Ctx) + xl.Infof("closing VirtualNetPlugin for visitor [%s]", p.pluginCtx.Name) + + // Signal the run loop goroutine to stop. + p.cancel() + + // Unregister the route from the controller. + if p.pluginCtx.VnetController != nil { + p.pluginCtx.VnetController.UnregisterClientRoute(p.pluginCtx.Name) + xl.Infof("unregistered client route for visitor [%s]", p.pluginCtx.Name) + } + + // Explicitly close the controller side of the pipe. + // This ensures the pipe is broken even if the run loop is stuck or HandleConn hasn't closed its end. + p.cleanupControllerConn(xl) + xl.Infof("finished cleaning up connections during close for visitor [%s]", p.pluginCtx.Name) + + return nil +} diff --git a/pkg/proto/udp/udp.go b/pkg/proto/udp/udp.go index 7a11984b2e4..f97b3b439cd 100644 --- a/pkg/proto/udp/udp.go +++ b/pkg/proto/udp/udp.go @@ -24,6 +24,7 @@ import ( "github.com/fatedier/golib/pool" "github.com/fatedier/frp/pkg/msg" + netpkg "github.com/fatedier/frp/pkg/util/net" ) func NewUDPPacket(buf []byte, laddr, raddr *net.UDPAddr) *msg.UDPPacket { @@ -69,7 +70,7 @@ func ForwardUserConn(udpConn *net.UDPConn, readCh <-chan *msg.UDPPacket, sendCh } } -func Forwarder(dstAddr *net.UDPAddr, readCh <-chan *msg.UDPPacket, sendCh chan<- msg.Message, bufSize int) { +func Forwarder(dstAddr *net.UDPAddr, readCh <-chan *msg.UDPPacket, sendCh chan<- msg.Message, bufSize int, proxyProtocolVersion string) { var mu sync.RWMutex udpConnMap := make(map[string]*net.UDPConn) @@ -110,6 +111,7 @@ func Forwarder(dstAddr *net.UDPAddr, readCh <-chan *msg.UDPPacket, sendCh chan<- if err != nil { continue } + mu.Lock() udpConn, ok := udpConnMap[udpMsg.RemoteAddr.String()] if !ok { @@ -122,6 +124,18 @@ func Forwarder(dstAddr *net.UDPAddr, readCh <-chan *msg.UDPPacket, sendCh chan<- } mu.Unlock() + // Add proxy protocol header if configured + if proxyProtocolVersion != "" && udpMsg.RemoteAddr != nil { + ppBuf, err := netpkg.BuildProxyProtocolHeader(udpMsg.RemoteAddr, dstAddr, proxyProtocolVersion) + if err == nil { + // Prepend proxy protocol header to the UDP payload + finalBuf := make([]byte, len(ppBuf)+len(buf)) + copy(finalBuf, ppBuf) + copy(finalBuf[len(ppBuf):], buf) + buf = finalBuf + } + } + _, err = udpConn.Write(buf) if err != nil { udpConn.Close() diff --git a/pkg/proto/udp/udp_test.go b/pkg/proto/udp/udp_test.go index 0e61d9e65a5..1a7f009117c 100644 --- a/pkg/proto/udp/udp_test.go +++ b/pkg/proto/udp/udp_test.go @@ -3,16 +3,16 @@ package udp import ( "testing" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestUdpPacket(t *testing.T) { - assert := assert.New(t) + require := require.New(t) buf := []byte("hello world") udpMsg := NewUDPPacket(buf, nil, nil) newBuf, err := GetContent(udpMsg) - assert.NoError(err) - assert.EqualValues(buf, newBuf) + require.NoError(err) + require.EqualValues(buf, newBuf) } diff --git a/pkg/sdk/client/client.go b/pkg/sdk/client/client.go index 57bf77469f0..13713e2711e 100644 --- a/pkg/sdk/client/client.go +++ b/pkg/sdk/client/client.go @@ -1,6 +1,7 @@ package client import ( + "context" "encoding/json" "fmt" "io" @@ -31,8 +32,8 @@ func (c *Client) SetAuth(user, pwd string) { c.authPwd = pwd } -func (c *Client) GetProxyStatus(name string) (*client.ProxyStatusResp, error) { - req, err := http.NewRequest("GET", "http://"+c.address+"/api/status", nil) +func (c *Client) GetProxyStatus(ctx context.Context, name string) (*client.ProxyStatusResp, error) { + req, err := http.NewRequestWithContext(ctx, "GET", "http://"+c.address+"/api/status", nil) if err != nil { return nil, err } @@ -54,8 +55,8 @@ func (c *Client) GetProxyStatus(name string) (*client.ProxyStatusResp, error) { return nil, fmt.Errorf("no proxy status found") } -func (c *Client) GetAllProxyStatus() (client.StatusResp, error) { - req, err := http.NewRequest("GET", "http://"+c.address+"/api/status", nil) +func (c *Client) GetAllProxyStatus(ctx context.Context) (client.StatusResp, error) { + req, err := http.NewRequestWithContext(ctx, "GET", "http://"+c.address+"/api/status", nil) if err != nil { return nil, err } @@ -70,7 +71,7 @@ func (c *Client) GetAllProxyStatus() (client.StatusResp, error) { return allStatus, nil } -func (c *Client) Reload(strictMode bool) error { +func (c *Client) Reload(ctx context.Context, strictMode bool) error { v := url.Values{} if strictMode { v.Set("strictConfig", "true") @@ -79,7 +80,7 @@ func (c *Client) Reload(strictMode bool) error { if len(v) > 0 { queryStr = "?" + v.Encode() } - req, err := http.NewRequest("GET", "http://"+c.address+"/api/reload"+queryStr, nil) + req, err := http.NewRequestWithContext(ctx, "GET", "http://"+c.address+"/api/reload"+queryStr, nil) if err != nil { return err } @@ -87,8 +88,8 @@ func (c *Client) Reload(strictMode bool) error { return err } -func (c *Client) Stop() error { - req, err := http.NewRequest("POST", "http://"+c.address+"/api/stop", nil) +func (c *Client) Stop(ctx context.Context) error { + req, err := http.NewRequestWithContext(ctx, "POST", "http://"+c.address+"/api/stop", nil) if err != nil { return err } @@ -96,16 +97,16 @@ func (c *Client) Stop() error { return err } -func (c *Client) GetConfig() (string, error) { - req, err := http.NewRequest("GET", "http://"+c.address+"/api/config", nil) +func (c *Client) GetConfig(ctx context.Context) (string, error) { + req, err := http.NewRequestWithContext(ctx, "GET", "http://"+c.address+"/api/config", nil) if err != nil { return "", err } return c.do(req) } -func (c *Client) UpdateConfig(content string) error { - req, err := http.NewRequest("PUT", "http://"+c.address+"/api/config", strings.NewReader(content)) +func (c *Client) UpdateConfig(ctx context.Context, content string) error { + req, err := http.NewRequestWithContext(ctx, "PUT", "http://"+c.address+"/api/config", strings.NewReader(content)) if err != nil { return err } diff --git a/pkg/ssh/gateway.go b/pkg/ssh/gateway.go index 5716f04038d..4d90f338385 100644 --- a/pkg/ssh/gateway.go +++ b/pkg/ssh/gateway.go @@ -112,6 +112,10 @@ func (g *Gateway) Run() { } } +func (g *Gateway) Close() error { + return g.ln.Close() +} + func (g *Gateway) handleConn(conn net.Conn) { defer conn.Close() diff --git a/pkg/ssh/server.go b/pkg/ssh/server.go index 2adab17fb5a..378c609847b 100644 --- a/pkg/ssh/server.go +++ b/pkg/ssh/server.go @@ -105,7 +105,10 @@ func (s *TunnelServer) Run() error { s.writeToClient(err.Error()) return fmt.Errorf("parse flags from ssh client error: %v", err) } - clientCfg.Complete() + if err := clientCfg.Complete(); err != nil { + s.writeToClient(fmt.Sprintf("failed to complete client config: %v", err)) + return fmt.Errorf("complete client config error: %v", err) + } if sshConn.Permissions != nil { clientCfg.User = util.EmptyOr(sshConn.Permissions.Extensions["user"], clientCfg.User) } @@ -363,11 +366,13 @@ func (s *TunnelServer) waitProxyStatusReady(name string, timeout time.Duration) timer := time.NewTimer(timeout) defer timer.Stop() + statusExporter := s.vc.Service().StatusExporter() + for { select { case <-ticker.C: - ps, err := s.vc.Service().GetProxyStatus(name) - if err != nil { + ps, ok := statusExporter.GetProxyStatus(name) + if !ok { continue } switch ps.Phase { diff --git a/pkg/transport/tls.go b/pkg/transport/tls.go index 5bc75921cbd..e8d2bf483a5 100644 --- a/pkg/transport/tls.go +++ b/pkg/transport/tls.go @@ -22,6 +22,7 @@ import ( "encoding/pem" "math/big" "os" + "time" ) func newCustomTLSKeyPair(certfile, keyfile string) (*tls.Certificate, error) { @@ -32,12 +33,30 @@ func newCustomTLSKeyPair(certfile, keyfile string) (*tls.Certificate, error) { return &tlsCert, nil } -func newRandomTLSKeyPair() *tls.Certificate { +func newRandomTLSKeyPair() (*tls.Certificate, error) { key, err := rsa.GenerateKey(rand.Reader, 2048) if err != nil { - panic(err) + return nil, err + } + + // Generate a random positive serial number with 128 bits of entropy. + // RFC 5280 requires serial numbers to be positive integers (not zero). + serialNumberLimit := new(big.Int).Lsh(big.NewInt(1), 128) + serialNumber, err := rand.Int(rand.Reader, serialNumberLimit) + if err != nil { + return nil, err + } + // Ensure serial number is positive (not zero) + if serialNumber.Sign() == 0 { + serialNumber = big.NewInt(1) + } + + template := x509.Certificate{ + SerialNumber: serialNumber, + NotBefore: time.Now().Add(-1 * time.Hour), + NotAfter: time.Now().Add(365 * 24 * time.Hour * 10), } - template := x509.Certificate{SerialNumber: big.NewInt(1)} + certDER, err := x509.CreateCertificate( rand.Reader, &template, @@ -45,16 +64,16 @@ func newRandomTLSKeyPair() *tls.Certificate { &key.PublicKey, key) if err != nil { - panic(err) + return nil, err } keyPEM := pem.EncodeToMemory(&pem.Block{Type: "RSA PRIVATE KEY", Bytes: x509.MarshalPKCS1PrivateKey(key)}) certPEM := pem.EncodeToMemory(&pem.Block{Type: "CERTIFICATE", Bytes: certDER}) tlsCert, err := tls.X509KeyPair(certPEM, keyPEM) if err != nil { - panic(err) + return nil, err } - return &tlsCert + return &tlsCert, nil } // Only support one ca file to add @@ -76,7 +95,10 @@ func NewServerTLSConfig(certPath, keyPath, caPath string) (*tls.Config, error) { if certPath == "" || keyPath == "" { // server will generate tls conf by itself - cert := newRandomTLSKeyPair() + cert, err := newRandomTLSKeyPair() + if err != nil { + return nil, err + } base.Certificates = []tls.Certificate{*cert} } else { cert, err := newCustomTLSKeyPair(certPath, keyPath) diff --git a/pkg/util/log/log.go b/pkg/util/log/log.go index f6399e00809..327d4ef654d 100644 --- a/pkg/util/log/log.go +++ b/pkg/util/log/log.go @@ -15,11 +15,20 @@ package log import ( + "bytes" "os" "github.com/fatedier/golib/log" ) +var ( + TraceLevel = log.TraceLevel + DebugLevel = log.DebugLevel + InfoLevel = log.InfoLevel + WarnLevel = log.WarnLevel + ErrorLevel = log.ErrorLevel +) + var Logger *log.Logger func init() { @@ -58,22 +67,43 @@ func InitLogger(logPath string, levelStr string, maxDays int, disableLogColor bo Logger = Logger.WithOptions(options...) } -func Errorf(format string, v ...interface{}) { +func Errorf(format string, v ...any) { Logger.Errorf(format, v...) } -func Warnf(format string, v ...interface{}) { +func Warnf(format string, v ...any) { Logger.Warnf(format, v...) } -func Infof(format string, v ...interface{}) { +func Infof(format string, v ...any) { Logger.Infof(format, v...) } -func Debugf(format string, v ...interface{}) { +func Debugf(format string, v ...any) { Logger.Debugf(format, v...) } -func Tracef(format string, v ...interface{}) { +func Tracef(format string, v ...any) { Logger.Tracef(format, v...) } + +func Logf(level log.Level, offset int, format string, v ...any) { + Logger.Logf(level, offset, format, v...) +} + +type WriteLogger struct { + level log.Level + offset int +} + +func NewWriteLogger(level log.Level, offset int) *WriteLogger { + return &WriteLogger{ + level: level, + offset: offset, + } +} + +func (w *WriteLogger) Write(p []byte) (n int, err error) { + Logger.Log(w.level, w.offset, string(bytes.TrimRight(p, "\n"))) + return len(p), nil +} diff --git a/pkg/util/metric/counter_test.go b/pkg/util/metric/counter_test.go index 4925c25b523..dca72052ed3 100644 --- a/pkg/util/metric/counter_test.go +++ b/pkg/util/metric/counter_test.go @@ -3,21 +3,21 @@ package metric import ( "testing" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestCounter(t *testing.T) { - assert := assert.New(t) + require := require.New(t) c := NewCounter() c.Inc(10) - assert.EqualValues(10, c.Count()) + require.EqualValues(10, c.Count()) c.Dec(5) - assert.EqualValues(5, c.Count()) + require.EqualValues(5, c.Count()) cTmp := c.Snapshot() - assert.EqualValues(5, cTmp.Count()) + require.EqualValues(5, cTmp.Count()) c.Clear() - assert.EqualValues(0, c.Count()) + require.EqualValues(0, c.Count()) } diff --git a/pkg/util/metric/date_counter_test.go b/pkg/util/metric/date_counter_test.go index c9997c70fe7..8752f1985a8 100644 --- a/pkg/util/metric/date_counter_test.go +++ b/pkg/util/metric/date_counter_test.go @@ -3,25 +3,25 @@ package metric import ( "testing" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestDateCounter(t *testing.T) { - assert := assert.New(t) + require := require.New(t) dc := NewDateCounter(3) dc.Inc(10) - assert.EqualValues(10, dc.TodayCount()) + require.EqualValues(10, dc.TodayCount()) dc.Dec(5) - assert.EqualValues(5, dc.TodayCount()) + require.EqualValues(5, dc.TodayCount()) counts := dc.GetLastDaysCount(3) - assert.EqualValues(3, len(counts)) - assert.EqualValues(5, counts[0]) - assert.EqualValues(0, counts[1]) - assert.EqualValues(0, counts[2]) + require.EqualValues(3, len(counts)) + require.EqualValues(5, counts[0]) + require.EqualValues(0, counts[1]) + require.EqualValues(0, counts[2]) dcTmp := dc.Snapshot() - assert.EqualValues(5, dcTmp.TodayCount()) + require.EqualValues(5, dcTmp.TodayCount()) } diff --git a/pkg/util/net/conn.go b/pkg/util/net/conn.go index 20ac73ed1c6..20468f1b8c5 100644 --- a/pkg/util/net/conn.go +++ b/pkg/util/net/conn.go @@ -197,11 +197,11 @@ func (statsConn *StatsConn) Close() (err error) { } type wrapQuicStream struct { - quic.Stream - c quic.Connection + *quic.Stream + c *quic.Conn } -func QuicStreamToNetConn(s quic.Stream, c quic.Connection) net.Conn { +func QuicStreamToNetConn(s *quic.Stream, c *quic.Conn) net.Conn { return &wrapQuicStream{ Stream: s, c: c, @@ -223,7 +223,7 @@ func (conn *wrapQuicStream) RemoteAddr() net.Addr { } func (conn *wrapQuicStream) Close() error { - conn.Stream.CancelRead(0) + conn.CancelRead(0) return conn.Stream.Close() } diff --git a/pkg/util/net/dial.go b/pkg/util/net/dial.go index bc670643a0b..1a3859edfa7 100644 --- a/pkg/util/net/dial.go +++ b/pkg/util/net/dial.go @@ -5,11 +5,11 @@ import ( "net" "net/url" - libdial "github.com/fatedier/golib/net/dial" + libnet "github.com/fatedier/golib/net" "golang.org/x/net/websocket" ) -func DialHookCustomTLSHeadByte(enableTLS bool, disableCustomTLSHeadByte bool) libdial.AfterHookFunc { +func DialHookCustomTLSHeadByte(enableTLS bool, disableCustomTLSHeadByte bool) libnet.AfterHookFunc { return func(ctx context.Context, c net.Conn, addr string) (context.Context, net.Conn, error) { if enableTLS && !disableCustomTLSHeadByte { _, err := c.Write([]byte{byte(FRPTLSHeadByte)}) @@ -21,7 +21,7 @@ func DialHookCustomTLSHeadByte(enableTLS bool, disableCustomTLSHeadByte bool) li } } -func DialHookWebsocket(protocol string, host string) libdial.AfterHookFunc { +func DialHookWebsocket(protocol string, host string) libnet.AfterHookFunc { return func(ctx context.Context, c net.Conn, addr string) (context.Context, net.Conn, error) { if protocol != "wss" { protocol = "ws" diff --git a/pkg/util/net/proxyprotocol.go b/pkg/util/net/proxyprotocol.go new file mode 100644 index 00000000000..5f0cd51fab8 --- /dev/null +++ b/pkg/util/net/proxyprotocol.go @@ -0,0 +1,45 @@ +// Copyright 2025 The frp Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package net + +import ( + "bytes" + "fmt" + "net" + + pp "github.com/pires/go-proxyproto" +) + +func BuildProxyProtocolHeaderStruct(srcAddr, dstAddr net.Addr, version string) *pp.Header { + var versionByte byte + if version == "v1" { + versionByte = 1 + } else { + versionByte = 2 // default to v2 + } + return pp.HeaderProxyFromAddrs(versionByte, srcAddr, dstAddr) +} + +func BuildProxyProtocolHeader(srcAddr, dstAddr net.Addr, version string) ([]byte, error) { + h := BuildProxyProtocolHeaderStruct(srcAddr, dstAddr, version) + + // Convert header to bytes using a buffer + var buf bytes.Buffer + _, err := h.WriteTo(&buf) + if err != nil { + return nil, fmt.Errorf("failed to write proxy protocol header: %v", err) + } + return buf.Bytes(), nil +} diff --git a/pkg/util/net/proxyprotocol_test.go b/pkg/util/net/proxyprotocol_test.go new file mode 100644 index 00000000000..187801f67aa --- /dev/null +++ b/pkg/util/net/proxyprotocol_test.go @@ -0,0 +1,178 @@ +package net + +import ( + "net" + "testing" + + pp "github.com/pires/go-proxyproto" + "github.com/stretchr/testify/require" +) + +func TestBuildProxyProtocolHeader(t *testing.T) { + require := require.New(t) + + tests := []struct { + name string + srcAddr net.Addr + dstAddr net.Addr + version string + expectError bool + }{ + { + name: "UDP IPv4 v2", + srcAddr: &net.UDPAddr{IP: net.ParseIP("192.168.1.100"), Port: 12345}, + dstAddr: &net.UDPAddr{IP: net.ParseIP("10.0.0.1"), Port: 3306}, + version: "v2", + expectError: false, + }, + { + name: "TCP IPv4 v1", + srcAddr: &net.TCPAddr{IP: net.ParseIP("192.168.1.100"), Port: 12345}, + dstAddr: &net.TCPAddr{IP: net.ParseIP("10.0.0.1"), Port: 80}, + version: "v1", + expectError: false, + }, + { + name: "UDP IPv6 v2", + srcAddr: &net.UDPAddr{IP: net.ParseIP("2001:db8::1"), Port: 12345}, + dstAddr: &net.UDPAddr{IP: net.ParseIP("::1"), Port: 3306}, + version: "v2", + expectError: false, + }, + { + name: "TCP IPv6 v1", + srcAddr: &net.TCPAddr{IP: net.ParseIP("::1"), Port: 12345}, + dstAddr: &net.TCPAddr{IP: net.ParseIP("2001:db8::1"), Port: 80}, + version: "v1", + expectError: false, + }, + { + name: "nil source address", + srcAddr: nil, + dstAddr: &net.UDPAddr{IP: net.ParseIP("10.0.0.1"), Port: 3306}, + version: "v2", + expectError: false, + }, + { + name: "nil destination address", + srcAddr: &net.TCPAddr{IP: net.ParseIP("192.168.1.100"), Port: 12345}, + dstAddr: nil, + version: "v2", + expectError: false, + }, + { + name: "unsupported address type", + srcAddr: &net.UnixAddr{Name: "/tmp/test.sock", Net: "unix"}, + dstAddr: &net.UDPAddr{IP: net.ParseIP("10.0.0.1"), Port: 3306}, + version: "v2", + expectError: false, + }, + } + + for _, tt := range tests { + header, err := BuildProxyProtocolHeader(tt.srcAddr, tt.dstAddr, tt.version) + + if tt.expectError { + require.Error(err, "test case: %s", tt.name) + continue + } + + require.NoError(err, "test case: %s", tt.name) + require.NotEmpty(header, "test case: %s", tt.name) + } +} + +func TestBuildProxyProtocolHeaderStruct(t *testing.T) { + require := require.New(t) + + tests := []struct { + name string + srcAddr net.Addr + dstAddr net.Addr + version string + expectedProtocol pp.AddressFamilyAndProtocol + expectedVersion byte + expectedCommand pp.ProtocolVersionAndCommand + expectedSourceAddr net.Addr + expectedDestAddr net.Addr + }{ + { + name: "TCP IPv4 v2", + srcAddr: &net.TCPAddr{IP: net.ParseIP("192.168.1.100"), Port: 12345}, + dstAddr: &net.TCPAddr{IP: net.ParseIP("10.0.0.1"), Port: 80}, + version: "v2", + expectedProtocol: pp.TCPv4, + expectedVersion: 2, + expectedCommand: pp.PROXY, + expectedSourceAddr: &net.TCPAddr{IP: net.ParseIP("192.168.1.100"), Port: 12345}, + expectedDestAddr: &net.TCPAddr{IP: net.ParseIP("10.0.0.1"), Port: 80}, + }, + { + name: "UDP IPv6 v1", + srcAddr: &net.UDPAddr{IP: net.ParseIP("2001:db8::1"), Port: 12345}, + dstAddr: &net.UDPAddr{IP: net.ParseIP("::1"), Port: 3306}, + version: "v1", + expectedProtocol: pp.UDPv6, + expectedVersion: 1, + expectedCommand: pp.PROXY, + expectedSourceAddr: &net.UDPAddr{IP: net.ParseIP("2001:db8::1"), Port: 12345}, + expectedDestAddr: &net.UDPAddr{IP: net.ParseIP("::1"), Port: 3306}, + }, + { + name: "TCP IPv6 default version", + srcAddr: &net.TCPAddr{IP: net.ParseIP("::1"), Port: 12345}, + dstAddr: &net.TCPAddr{IP: net.ParseIP("2001:db8::1"), Port: 80}, + version: "", + expectedProtocol: pp.TCPv6, + expectedVersion: 2, // default to v2 + expectedCommand: pp.PROXY, + expectedSourceAddr: &net.TCPAddr{IP: net.ParseIP("::1"), Port: 12345}, + expectedDestAddr: &net.TCPAddr{IP: net.ParseIP("2001:db8::1"), Port: 80}, + }, + { + name: "nil source address", + srcAddr: nil, + dstAddr: &net.UDPAddr{IP: net.ParseIP("10.0.0.1"), Port: 3306}, + version: "v2", + expectedProtocol: pp.UNSPEC, + expectedVersion: 2, + expectedCommand: pp.LOCAL, + expectedSourceAddr: nil, // go-proxyproto sets both to nil when srcAddr is nil + expectedDestAddr: nil, + }, + { + name: "nil destination address", + srcAddr: &net.TCPAddr{IP: net.ParseIP("192.168.1.100"), Port: 12345}, + dstAddr: nil, + version: "v2", + expectedProtocol: pp.UNSPEC, + expectedVersion: 2, + expectedCommand: pp.LOCAL, + expectedSourceAddr: nil, // go-proxyproto sets both to nil when dstAddr is nil + expectedDestAddr: nil, + }, + { + name: "unsupported address type", + srcAddr: &net.UnixAddr{Name: "/tmp/test.sock", Net: "unix"}, + dstAddr: &net.UDPAddr{IP: net.ParseIP("10.0.0.1"), Port: 3306}, + version: "v2", + expectedProtocol: pp.UNSPEC, + expectedVersion: 2, + expectedCommand: pp.LOCAL, + expectedSourceAddr: nil, // go-proxyproto sets both to nil for unsupported types + expectedDestAddr: nil, + }, + } + + for _, tt := range tests { + header := BuildProxyProtocolHeaderStruct(tt.srcAddr, tt.dstAddr, tt.version) + + require.NotNil(header, "test case: %s", tt.name) + + require.Equal(tt.expectedCommand, header.Command, "test case: %s", tt.name) + require.Equal(tt.expectedSourceAddr, header.SourceAddr, "test case: %s", tt.name) + require.Equal(tt.expectedDestAddr, header.DestinationAddr, "test case: %s", tt.name) + require.Equal(tt.expectedProtocol, header.TransportProtocol, "test case: %s", tt.name) + require.Equal(tt.expectedVersion, header.Version, "test case: %s", tt.name) + } +} diff --git a/pkg/util/net/websocket.go b/pkg/util/net/websocket.go index e642be06f3c..263b3a1d98d 100644 --- a/pkg/util/net/websocket.go +++ b/pkg/util/net/websocket.go @@ -4,6 +4,7 @@ import ( "errors" "net" "net/http" + "time" "golang.org/x/net/websocket" ) @@ -39,8 +40,9 @@ func NewWebsocketListener(ln net.Listener) (wl *WebsocketListener) { })) wl.server = &http.Server{ - Addr: ln.Addr().String(), - Handler: muxer, + Addr: ln.Addr().String(), + Handler: muxer, + ReadHeaderTimeout: 60 * time.Second, } go func() { diff --git a/pkg/util/system/system_android.go b/pkg/util/system/system_android.go index bfcf401dfb5..6fcfdbc1361 100644 --- a/pkg/util/system/system_android.go +++ b/pkg/util/system/system_android.go @@ -59,8 +59,12 @@ func fixDNSResolver() { // Note: If there are other methods to obtain the default DNS servers, the default DNS servers should be used preferentially. net.DefaultResolver = &net.Resolver{ PreferGo: true, - Dial: func(ctx context.Context, network, _ string) (net.Conn, error) { - return net.Dial(network, "8.8.8.8:53") + Dial: func(ctx context.Context, network, addr string) (net.Conn, error) { + if addr == "127.0.0.1:53" || addr == "[::1]:53" { + addr = "8.8.8.8:53" + } + var d net.Dialer + return d.DialContext(ctx, network, addr) }, } } diff --git a/pkg/util/util/util.go b/pkg/util/util/util.go index 7758054d948..774af2cfaa2 100644 --- a/pkg/util/util/util.go +++ b/pkg/util/util/util.go @@ -85,21 +85,21 @@ func ParseRangeNumbers(rangeStr string) (numbers []int64, err error) { numbers = append(numbers, singleNum) case 2: // range numbers - min, errRet := strconv.ParseInt(strings.TrimSpace(numArray[0]), 10, 64) + minValue, errRet := strconv.ParseInt(strings.TrimSpace(numArray[0]), 10, 64) if errRet != nil { err = fmt.Errorf("range number is invalid, %v", errRet) return } - max, errRet := strconv.ParseInt(strings.TrimSpace(numArray[1]), 10, 64) + maxValue, errRet := strconv.ParseInt(strings.TrimSpace(numArray[1]), 10, 64) if errRet != nil { err = fmt.Errorf("range number is invalid, %v", errRet) return } - if max < min { + if maxValue < minValue { err = fmt.Errorf("range number is invalid") return } - for i := min; i <= max; i++ { + for i := minValue; i <= maxValue; i++ { numbers = append(numbers, i) } default: @@ -118,13 +118,13 @@ func GenerateResponseErrorString(summary string, err error, detailed bool) strin } func RandomSleep(duration time.Duration, minRatio, maxRatio float64) time.Duration { - min := int64(minRatio * 1000.0) - max := int64(maxRatio * 1000.0) + minValue := int64(minRatio * 1000.0) + maxValue := int64(maxRatio * 1000.0) var n int64 - if max <= min { - n = min + if maxValue <= minValue { + n = minValue } else { - n = mathrand.Int64N(max-min) + min + n = mathrand.Int64N(maxValue-minValue) + minValue } d := duration * time.Duration(n) / time.Duration(1000) time.Sleep(d) diff --git a/pkg/util/util/util_test.go b/pkg/util/util/util_test.go index 0061861119e..0a63ba6d086 100644 --- a/pkg/util/util/util_test.go +++ b/pkg/util/util/util_test.go @@ -3,45 +3,41 @@ package util import ( "testing" - "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func TestRandId(t *testing.T) { - assert := assert.New(t) + require := require.New(t) id, err := RandID() - assert.NoError(err) + require.NoError(err) t.Log(id) - assert.Equal(16, len(id)) + require.Equal(16, len(id)) } func TestGetAuthKey(t *testing.T) { - assert := assert.New(t) + require := require.New(t) key := GetAuthKey("1234", 1488720000) - assert.Equal("6df41a43725f0c770fd56379e12acf8c", key) + require.Equal("6df41a43725f0c770fd56379e12acf8c", key) } func TestParseRangeNumbers(t *testing.T) { - assert := assert.New(t) + require := require.New(t) numbers, err := ParseRangeNumbers("2-5") - if assert.NoError(err) { - assert.Equal([]int64{2, 3, 4, 5}, numbers) - } + require.NoError(err) + require.Equal([]int64{2, 3, 4, 5}, numbers) numbers, err = ParseRangeNumbers("1") - if assert.NoError(err) { - assert.Equal([]int64{1}, numbers) - } + require.NoError(err) + require.Equal([]int64{1}, numbers) numbers, err = ParseRangeNumbers("3-5,8") - if assert.NoError(err) { - assert.Equal([]int64{3, 4, 5, 8}, numbers) - } + require.NoError(err) + require.Equal([]int64{3, 4, 5, 8}, numbers) numbers, err = ParseRangeNumbers(" 3-5,8, 10-12 ") - if assert.NoError(err) { - assert.Equal([]int64{3, 4, 5, 8, 10, 11, 12}, numbers) - } + require.NoError(err) + require.Equal([]int64{3, 4, 5, 8, 10, 11, 12}, numbers) _, err = ParseRangeNumbers("3-a") - assert.Error(err) + require.Error(err) } diff --git a/pkg/util/version/version.go b/pkg/util/version/version.go index d1867b37d8b..0f4ec433898 100644 --- a/pkg/util/version/version.go +++ b/pkg/util/version/version.go @@ -14,7 +14,7 @@ package version -var version = "0.57.0" +var version = "0.65.0" func Full() string { return version diff --git a/pkg/util/vhost/http.go b/pkg/util/vhost/http.go index 7afc7ebbf19..05ec174bff0 100644 --- a/pkg/util/vhost/http.go +++ b/pkg/util/vhost/http.go @@ -15,7 +15,6 @@ package vhost import ( - "bytes" "context" "encoding/base64" "errors" @@ -30,6 +29,8 @@ import ( libio "github.com/fatedier/golib/io" "github.com/fatedier/golib/pool" + "golang.org/x/net/http2" + "golang.org/x/net/http2/h2c" httppkg "github.com/fatedier/frp/pkg/util/http" "github.com/fatedier/frp/pkg/util/log" @@ -42,7 +43,7 @@ type HTTPReverseProxyOptions struct { } type HTTPReverseProxy struct { - proxy *httputil.ReverseProxy + proxy http.Handler vhostRouter *Routers responseHeaderTimeout time.Duration @@ -64,9 +65,9 @@ func NewHTTPReverseProxy(option HTTPReverseProxyOptions, vhostRouter *Routers) * req := r.Out req.URL.Scheme = "http" reqRouteInfo := req.Context().Value(RouteInfoKey).(*RequestRouteInfo) - oldHost, _ := httppkg.CanonicalHost(reqRouteInfo.Host) + originalHost, _ := httppkg.CanonicalHost(reqRouteInfo.Host) - rc := rp.GetRouteConfig(oldHost, reqRouteInfo.URL, reqRouteInfo.HTTPUser) + rc := req.Context().Value(RouteConfigKey).(*RouteConfig) if rc != nil { if rc.RewriteHost != "" { req.Host = rc.RewriteHost @@ -78,7 +79,7 @@ func NewHTTPReverseProxy(option HTTPReverseProxyOptions, vhostRouter *Routers) * endpoint, _ = rc.ChooseEndpointFn() reqRouteInfo.Endpoint = endpoint log.Tracef("choose endpoint name [%s] for http request host [%s] path [%s] httpuser [%s]", - endpoint, oldHost, reqRouteInfo.URL, reqRouteInfo.HTTPUser) + endpoint, originalHost, reqRouteInfo.URL, reqRouteInfo.HTTPUser) } // Set {domain}.{location}.{routeByHTTPUser}.{endpoint} as URL host here to let http transport reuse connections. req.URL.Host = rc.Domain + "." + @@ -93,6 +94,15 @@ func NewHTTPReverseProxy(option HTTPReverseProxyOptions, vhostRouter *Routers) * req.URL.Host = req.Host } }, + ModifyResponse: func(r *http.Response) error { + rc := r.Request.Context().Value(RouteConfigKey).(*RouteConfig) + if rc != nil { + for k, v := range rc.ResponseHeaders { + r.Header.Set(k, v) + } + } + return nil + }, // Create a connection to one proxy routed by route policy. Transport: &http.Transport{ ResponseHeaderTimeout: rp.responseHeaderTimeout, @@ -116,15 +126,21 @@ func NewHTTPReverseProxy(option HTTPReverseProxyOptions, vhostRouter *Routers) * return nil, nil }, }, - BufferPool: newWrapPool(), - ErrorLog: stdlog.New(newWrapLogger(), "", 0), + BufferPool: pool.NewBuffer(32 * 1024), + ErrorLog: stdlog.New(log.NewWriteLogger(log.WarnLevel, 2), "", 0), ErrorHandler: func(rw http.ResponseWriter, req *http.Request, err error) { - log.Warnf("do http proxy request [host: %s] error: %v", req.Host, err) + log.Logf(log.WarnLevel, 1, "do http proxy request [host: %s] error: %v", req.Host, err) + if err != nil { + if e, ok := err.(net.Error); ok && e.Timeout() { + rw.WriteHeader(http.StatusGatewayTimeout) + return + } + } rw.WriteHeader(http.StatusNotFound) _, _ = rw.Write(getNotFoundPageContent()) }, } - rp.proxy = proxy + rp.proxy = h2c.NewHandler(proxy, &http2.Server{}) return rp } @@ -146,20 +162,12 @@ func (rp *HTTPReverseProxy) UnRegister(routeCfg RouteConfig) { func (rp *HTTPReverseProxy) GetRouteConfig(domain, location, routeByHTTPUser string) *RouteConfig { vr, ok := rp.getVhost(domain, location, routeByHTTPUser) if ok { - log.Debugf("get new HTTP request host [%s] path [%s] httpuser [%s]", domain, location, routeByHTTPUser) + log.Debugf("get new http request host [%s] path [%s] httpuser [%s]", domain, location, routeByHTTPUser) return vr.payload.(*RouteConfig) } return nil } -func (rp *HTTPReverseProxy) GetHeaders(domain, location, routeByHTTPUser string) (headers map[string]string) { - vr, ok := rp.getVhost(domain, location, routeByHTTPUser) - if ok { - headers = vr.payload.(*RouteConfig).Headers - } - return -} - // CreateConnection create a new connection by route config func (rp *HTTPReverseProxy) CreateConnection(reqRouteInfo *RequestRouteInfo, byEndpoint bool) (net.Conn, error) { host, _ := httppkg.CanonicalHost(reqRouteInfo.Host) @@ -217,11 +225,7 @@ func (rp *HTTPReverseProxy) getVhost(domain, location, routeByHTTPUser string) ( // *.example.com // *.com domainSplit := strings.Split(domain, ".") - for { - if len(domainSplit) < 3 { - break - } - + for len(domainSplit) >= 3 { domainSplit[0] = "*" domain = strings.Join(domainSplit, ".") vr, ok = findRouter(domain, location, routeByHTTPUser) @@ -300,8 +304,13 @@ func (rp *HTTPReverseProxy) injectRequestInfoToCtx(req *http.Request) *http.Requ RemoteAddr: req.RemoteAddr, URLHost: req.URL.Host, } + + originalHost, _ := httppkg.CanonicalHost(reqRouteInfo.Host) + rc := rp.GetRouteConfig(originalHost, reqRouteInfo.URL, reqRouteInfo.HTTPUser) + newctx := req.Context() newctx = context.WithValue(newctx, RouteInfoKey, reqRouteInfo) + newctx = context.WithValue(newctx, RouteConfigKey, rc) return req.Clone(newctx) } @@ -322,20 +331,3 @@ func (rp *HTTPReverseProxy) ServeHTTP(rw http.ResponseWriter, req *http.Request) rp.proxy.ServeHTTP(rw, newreq) } } - -type wrapPool struct{} - -func newWrapPool() *wrapPool { return &wrapPool{} } - -func (p *wrapPool) Get() []byte { return pool.GetBuf(32 * 1024) } - -func (p *wrapPool) Put(buf []byte) { pool.PutBuf(buf) } - -type wrapLogger struct{} - -func newWrapLogger() *wrapLogger { return &wrapLogger{} } - -func (l *wrapLogger) Write(p []byte) (n int, err error) { - log.Warnf("%s", string(bytes.TrimRight(p, "\n"))) - return len(p), nil -} diff --git a/pkg/util/vhost/https_test.go b/pkg/util/vhost/https_test.go index 47fb9dae4ed..08a3f558a86 100644 --- a/pkg/util/vhost/https_test.go +++ b/pkg/util/vhost/https_test.go @@ -12,7 +12,7 @@ import ( func TestGetHTTPSHostname(t *testing.T) { require := require.New(t) - l, err := net.Listen("tcp", ":") + l, err := net.Listen("tcp", "127.0.0.1:") require.NoError(err) defer l.Close() diff --git a/pkg/util/vhost/router.go b/pkg/util/vhost/router.go index 4df79aa7b44..315ff9e7392 100644 --- a/pkg/util/vhost/router.go +++ b/pkg/util/vhost/router.go @@ -24,7 +24,7 @@ type Router struct { httpUser string // store any object here - payload interface{} + payload any } func NewRouters() *Routers { @@ -33,7 +33,7 @@ func NewRouters() *Routers { } } -func (r *Routers) Add(domain, location, httpUser string, payload interface{}) error { +func (r *Routers) Add(domain, location, httpUser string, payload any) error { domain = strings.ToLower(domain) r.mutex.Lock() diff --git a/pkg/util/vhost/vhost.go b/pkg/util/vhost/vhost.go index b1370599a70..007751d7f3e 100644 --- a/pkg/util/vhost/vhost.go +++ b/pkg/util/vhost/vhost.go @@ -29,7 +29,8 @@ import ( type RouteInfo string const ( - RouteInfoKey RouteInfo = "routeInfo" + RouteInfoKey RouteInfo = "routeInfo" + RouteConfigKey RouteInfo = "routeConfig" ) type RequestRouteInfo struct { @@ -99,6 +100,10 @@ func (v *Muxer) SetRewriteHostFunc(f hostRewriteFunc) *Muxer { return v } +func (v *Muxer) Close() error { + return v.listener.Close() +} + type ChooseEndpointFunc func() (string, error) type CreateConnFunc func(remoteAddr string) (net.Conn, error) @@ -113,6 +118,7 @@ type RouteConfig struct { Username string Password string Headers map[string]string + ResponseHeaders map[string]string RouteByHTTPUser string CreateConnFn CreateConnFunc @@ -163,11 +169,7 @@ func (v *Muxer) getListener(name, path, httpUser string) (*Listener, bool) { } domainSplit := strings.Split(name, ".") - for { - if len(domainSplit) < 3 { - break - } - + for len(domainSplit) >= 3 { domainSplit[0] = "*" name = strings.Join(domainSplit, ".") @@ -269,7 +271,7 @@ func (l *Listener) Accept() (net.Conn, error) { xl := xlog.FromContextSafe(l.ctx) conn, ok := <-l.accept if !ok { - return nil, fmt.Errorf("Listener closed") + return nil, fmt.Errorf("listener closed") } // if rewriteHost func is exist diff --git a/pkg/util/xlog/log_writer.go b/pkg/util/xlog/log_writer.go new file mode 100644 index 00000000000..3fff73240a8 --- /dev/null +++ b/pkg/util/xlog/log_writer.go @@ -0,0 +1,65 @@ +// Copyright 2025 The frp Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package xlog + +import "strings" + +// LogWriter forwards writes to frp's logger at configurable level. +// It is safe for concurrent use as long as the underlying Logger is thread-safe. +type LogWriter struct { + xl *Logger + logFunc func(string) +} + +func (w LogWriter) Write(p []byte) (n int, err error) { + msg := strings.TrimSpace(string(p)) + w.logFunc(msg) + return len(p), nil +} + +func NewTraceWriter(xl *Logger) LogWriter { + return LogWriter{ + xl: xl, + logFunc: func(msg string) { xl.Tracef("%s", msg) }, + } +} + +func NewDebugWriter(xl *Logger) LogWriter { + return LogWriter{ + xl: xl, + logFunc: func(msg string) { xl.Debugf("%s", msg) }, + } +} + +func NewInfoWriter(xl *Logger) LogWriter { + return LogWriter{ + xl: xl, + logFunc: func(msg string) { xl.Infof("%s", msg) }, + } +} + +func NewWarnWriter(xl *Logger) LogWriter { + return LogWriter{ + xl: xl, + logFunc: func(msg string) { xl.Warnf("%s", msg) }, + } +} + +func NewErrorWriter(xl *Logger) LogWriter { + return LogWriter{ + xl: xl, + logFunc: func(msg string) { xl.Errorf("%s", msg) }, + } +} diff --git a/pkg/util/xlog/xlog.go b/pkg/util/xlog/xlog.go index 184c0c1f7a5..a1a58d42a27 100644 --- a/pkg/util/xlog/xlog.go +++ b/pkg/util/xlog/xlog.go @@ -94,22 +94,22 @@ func (l *Logger) Spawn() *Logger { return nl } -func (l *Logger) Errorf(format string, v ...interface{}) { +func (l *Logger) Errorf(format string, v ...any) { log.Logger.Errorf(l.prefixString+format, v...) } -func (l *Logger) Warnf(format string, v ...interface{}) { +func (l *Logger) Warnf(format string, v ...any) { log.Logger.Warnf(l.prefixString+format, v...) } -func (l *Logger) Infof(format string, v ...interface{}) { +func (l *Logger) Infof(format string, v ...any) { log.Logger.Infof(l.prefixString+format, v...) } -func (l *Logger) Debugf(format string, v ...interface{}) { +func (l *Logger) Debugf(format string, v ...any) { log.Logger.Debugf(l.prefixString+format, v...) } -func (l *Logger) Tracef(format string, v ...interface{}) { +func (l *Logger) Tracef(format string, v ...any) { log.Logger.Tracef(l.prefixString+format, v...) } diff --git a/pkg/virtual/client.go b/pkg/virtual/client.go index 96835a48c7f..8fec28c858d 100644 --- a/pkg/virtual/client.go +++ b/pkg/virtual/client.go @@ -37,7 +37,9 @@ type Client struct { func NewClient(options ClientOptions) (*Client, error) { if options.Common != nil { - options.Common.Complete() + if err := options.Common.Complete(); err != nil { + return nil, err + } } ln := netpkg.NewInternalListener() diff --git a/pkg/vnet/controller.go b/pkg/vnet/controller.go new file mode 100644 index 00000000000..ca71a8c3abd --- /dev/null +++ b/pkg/vnet/controller.go @@ -0,0 +1,386 @@ +// Copyright 2025 The frp Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package vnet + +import ( + "context" + "encoding/base64" + "fmt" + "io" + "net" + "sync" + + "github.com/fatedier/golib/pool" + "github.com/songgao/water/waterutil" + "golang.org/x/net/ipv4" + "golang.org/x/net/ipv6" + + v1 "github.com/fatedier/frp/pkg/config/v1" + "github.com/fatedier/frp/pkg/util/log" + "github.com/fatedier/frp/pkg/util/xlog" +) + +const ( + maxPacketSize = 1420 +) + +type Controller struct { + addr string + + tun io.ReadWriteCloser + clientRouter *clientRouter // Route based on destination IP (client mode) + serverRouter *serverRouter // Route based on source IP (server mode) +} + +func NewController(cfg v1.VirtualNetConfig) *Controller { + return &Controller{ + addr: cfg.Address, + clientRouter: newClientRouter(), + serverRouter: newServerRouter(), + } +} + +func (c *Controller) Init() error { + tunDevice, err := OpenTun(context.Background(), c.addr) + if err != nil { + return err + } + c.tun = tunDevice + return nil +} + +func (c *Controller) Run() error { + conn := c.tun + + for { + buf := pool.GetBuf(maxPacketSize) + n, err := conn.Read(buf) + if err != nil { + pool.PutBuf(buf) + log.Warnf("vnet read from tun error: %v", err) + return err + } + + c.handlePacket(buf[:n]) + pool.PutBuf(buf) + } +} + +// handlePacket processes a single packet. The caller is responsible for managing the buffer. +func (c *Controller) handlePacket(buf []byte) { + log.Tracef("vnet read from tun [%d]: %s", len(buf), base64.StdEncoding.EncodeToString(buf)) + + var src, dst net.IP + switch { + case waterutil.IsIPv4(buf): + header, err := ipv4.ParseHeader(buf) + if err != nil { + log.Warnf("parse ipv4 header error: %v", err) + return + } + src = header.Src + dst = header.Dst + log.Tracef("%s >> %s %d/%-4d %-4x %d", + header.Src, header.Dst, + header.Len, header.TotalLen, header.ID, header.Flags) + case waterutil.IsIPv6(buf): + header, err := ipv6.ParseHeader(buf) + if err != nil { + log.Warnf("parse ipv6 header error: %v", err) + return + } + src = header.Src + dst = header.Dst + log.Tracef("%s >> %s %d %d", + header.Src, header.Dst, + header.PayloadLen, header.TrafficClass) + default: + log.Tracef("unknown packet, discarded(%d)", len(buf)) + return + } + + targetConn, err := c.clientRouter.findConn(dst) + if err == nil { + if err := WriteMessage(targetConn, buf); err != nil { + log.Warnf("write to client target conn error: %v", err) + } + return + } + + targetConn, err = c.serverRouter.findConnBySrc(dst) + if err == nil { + if err := WriteMessage(targetConn, buf); err != nil { + log.Warnf("write to server target conn error: %v", err) + } + return + } + + log.Tracef("no route found for packet from %s to %s", src, dst) +} + +func (c *Controller) Stop() error { + return c.tun.Close() +} + +// Client connection read loop +func (c *Controller) readLoopClient(ctx context.Context, conn io.ReadWriteCloser) { + xl := xlog.FromContextSafe(ctx) + defer func() { + // Remove the route when read loop ends (connection closed) + c.clientRouter.removeConnRoute(conn) + conn.Close() + }() + + for { + data, err := ReadMessage(conn) + if err != nil { + xl.Warnf("client read error: %v", err) + return + } + + if len(data) == 0 { + continue + } + + switch { + case waterutil.IsIPv4(data): + header, err := ipv4.ParseHeader(data) + if err != nil { + xl.Warnf("parse ipv4 header error: %v", err) + continue + } + xl.Tracef("%s >> %s %d/%-4d %-4x %d", + header.Src, header.Dst, + header.Len, header.TotalLen, header.ID, header.Flags) + case waterutil.IsIPv6(data): + header, err := ipv6.ParseHeader(data) + if err != nil { + xl.Warnf("parse ipv6 header error: %v", err) + continue + } + xl.Tracef("%s >> %s %d %d", + header.Src, header.Dst, + header.PayloadLen, header.TrafficClass) + default: + xl.Tracef("unknown packet, discarded(%d)", len(data)) + continue + } + + xl.Tracef("vnet write to tun (client) [%d]: %s", len(data), base64.StdEncoding.EncodeToString(data)) + _, err = c.tun.Write(data) + if err != nil { + xl.Warnf("client write tun error: %v", err) + } + } +} + +// Server connection read loop +func (c *Controller) readLoopServer(ctx context.Context, conn io.ReadWriteCloser, onClose func()) { + xl := xlog.FromContextSafe(ctx) + defer func() { + // Clean up all IP mappings associated with this connection when it closes + c.serverRouter.cleanupConnIPs(conn) + // Call the provided callback upon closure + if onClose != nil { + onClose() + } + conn.Close() + }() + + for { + data, err := ReadMessage(conn) + if err != nil { + xl.Warnf("server read error: %v", err) + return + } + + if len(data) == 0 { + continue + } + + // Register source IP to connection mapping + if waterutil.IsIPv4(data) || waterutil.IsIPv6(data) { + var src net.IP + if waterutil.IsIPv4(data) { + header, err := ipv4.ParseHeader(data) + if err == nil { + src = header.Src + c.serverRouter.registerSrcIP(src, conn) + } + } else { + header, err := ipv6.ParseHeader(data) + if err == nil { + src = header.Src + c.serverRouter.registerSrcIP(src, conn) + } + } + } + + xl.Tracef("vnet write to tun (server) [%d]: %s", len(data), base64.StdEncoding.EncodeToString(data)) + _, err = c.tun.Write(data) + if err != nil { + xl.Warnf("server write tun error: %v", err) + } + } +} + +// RegisterClientRoute registers a client route (based on destination IP CIDR) +// and starts the read loop +func (c *Controller) RegisterClientRoute(ctx context.Context, name string, routes []net.IPNet, conn io.ReadWriteCloser) { + c.clientRouter.addRoute(name, routes, conn) + go c.readLoopClient(ctx, conn) +} + +// UnregisterClientRoute Remove client route from routing table +func (c *Controller) UnregisterClientRoute(name string) { + c.clientRouter.delRoute(name) +} + +// StartServerConnReadLoop starts the read loop for a server connection +// (dynamically associates with source IPs) +func (c *Controller) StartServerConnReadLoop(ctx context.Context, conn io.ReadWriteCloser, onClose func()) { + go c.readLoopServer(ctx, conn, onClose) +} + +// ParseRoutes Convert route strings to IPNet objects +func ParseRoutes(routeStrings []string) ([]net.IPNet, error) { + routes := make([]net.IPNet, 0, len(routeStrings)) + for _, r := range routeStrings { + _, ipNet, err := net.ParseCIDR(r) + if err != nil { + return nil, fmt.Errorf("parse route %s error: %v", r, err) + } + routes = append(routes, *ipNet) + } + return routes, nil +} + +// Client router (based on destination IP routing) +type clientRouter struct { + routes map[string]*routeElement + mu sync.RWMutex +} + +func newClientRouter() *clientRouter { + return &clientRouter{ + routes: make(map[string]*routeElement), + } +} + +func (r *clientRouter) addRoute(name string, routes []net.IPNet, conn io.ReadWriteCloser) { + r.mu.Lock() + defer r.mu.Unlock() + r.routes[name] = &routeElement{ + name: name, + routes: routes, + conn: conn, + } +} + +func (r *clientRouter) findConn(dst net.IP) (io.Writer, error) { + r.mu.RLock() + defer r.mu.RUnlock() + for _, re := range r.routes { + for _, route := range re.routes { + if route.Contains(dst) { + return re.conn, nil + } + } + } + return nil, fmt.Errorf("no route found for destination %s", dst) +} + +func (r *clientRouter) delRoute(name string) { + r.mu.Lock() + defer r.mu.Unlock() + delete(r.routes, name) +} + +func (r *clientRouter) removeConnRoute(conn io.Writer) { + r.mu.Lock() + defer r.mu.Unlock() + for name, re := range r.routes { + if re.conn == conn { + delete(r.routes, name) + return + } + } +} + +// Server router (based solely on source IP routing) +type serverRouter struct { + srcIPConns map[string]io.Writer // Source IP string to connection mapping + mu sync.RWMutex +} + +func newServerRouter() *serverRouter { + return &serverRouter{ + srcIPConns: make(map[string]io.Writer), + } +} + +func (r *serverRouter) findConnBySrc(src net.IP) (io.Writer, error) { + r.mu.RLock() + defer r.mu.RUnlock() + conn, exists := r.srcIPConns[src.String()] + if !exists { + return nil, fmt.Errorf("no route found for source %s", src) + } + return conn, nil +} + +func (r *serverRouter) registerSrcIP(src net.IP, conn io.Writer) { + key := src.String() + + r.mu.RLock() + existingConn, ok := r.srcIPConns[key] + r.mu.RUnlock() + + // If the entry exists and the connection is the same, no need to do anything. + if ok && existingConn == conn { + return + } + + // Acquire write lock to update the map. + r.mu.Lock() + defer r.mu.Unlock() + + // Double-check after acquiring the write lock to handle potential race conditions. + existingConn, ok = r.srcIPConns[key] + if ok && existingConn == conn { + return + } + + r.srcIPConns[key] = conn +} + +// cleanupConnIPs removes all IP mappings associated with the specified connection +func (r *serverRouter) cleanupConnIPs(conn io.Writer) { + r.mu.Lock() + defer r.mu.Unlock() + + // Find and delete all IP mappings pointing to this connection + for ip, mappedConn := range r.srcIPConns { + if mappedConn == conn { + delete(r.srcIPConns, ip) + } + } +} + +type routeElement struct { + name string + routes []net.IPNet + conn io.ReadWriteCloser +} diff --git a/pkg/vnet/message.go b/pkg/vnet/message.go new file mode 100644 index 00000000000..68ac7704c12 --- /dev/null +++ b/pkg/vnet/message.go @@ -0,0 +1,81 @@ +// Copyright 2025 The frp Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package vnet + +import ( + "encoding/binary" + "fmt" + "io" +) + +// Maximum message size +const ( + maxMessageSize = 1024 * 1024 // 1MB +) + +// Format: [length(4 bytes)][data(length bytes)] + +// ReadMessage reads a framed message from the reader +func ReadMessage(r io.Reader) ([]byte, error) { + // Read length (4 bytes) + var length uint32 + err := binary.Read(r, binary.LittleEndian, &length) + if err != nil { + return nil, fmt.Errorf("read message length error: %w", err) + } + + // Check length to prevent DoS + if length == 0 { + return nil, fmt.Errorf("message length is 0") + } + if length > maxMessageSize { + return nil, fmt.Errorf("message too large: %d > %d", length, maxMessageSize) + } + + // Read message data + data := make([]byte, length) + _, err = io.ReadFull(r, data) + if err != nil { + return nil, fmt.Errorf("read message data error: %w", err) + } + + return data, nil +} + +// WriteMessage writes a framed message to the writer +func WriteMessage(w io.Writer, data []byte) error { + // Get data length + length := uint32(len(data)) + if length == 0 { + return fmt.Errorf("message data length is 0") + } + if length > maxMessageSize { + return fmt.Errorf("message too large: %d > %d", length, maxMessageSize) + } + + // Write length + err := binary.Write(w, binary.LittleEndian, length) + if err != nil { + return fmt.Errorf("write message length error: %w", err) + } + + // Write message data + _, err = w.Write(data) + if err != nil { + return fmt.Errorf("write message data error: %w", err) + } + + return nil +} diff --git a/pkg/vnet/tun.go b/pkg/vnet/tun.go new file mode 100644 index 00000000000..d26314d053e --- /dev/null +++ b/pkg/vnet/tun.go @@ -0,0 +1,109 @@ +// Copyright 2025 The frp Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package vnet + +import ( + "context" + "io" + + "github.com/fatedier/golib/pool" + "golang.zx2c4.com/wireguard/tun" +) + +const ( + offset = 16 + defaultPacketSize = 1420 +) + +type TunDevice interface { + io.ReadWriteCloser +} + +func OpenTun(ctx context.Context, addr string) (TunDevice, error) { + td, err := openTun(ctx, addr) + if err != nil { + return nil, err + } + + mtu, err := td.MTU() + if err != nil { + mtu = defaultPacketSize + } + + bufferSize := max(mtu, defaultPacketSize) + batchSize := td.BatchSize() + + device := &tunDeviceWrapper{ + dev: td, + bufferSize: bufferSize, + readBuffers: make([][]byte, batchSize), + sizeBuffer: make([]int, batchSize), + } + + for i := range device.readBuffers { + device.readBuffers[i] = make([]byte, offset+bufferSize) + } + + return device, nil +} + +type tunDeviceWrapper struct { + dev tun.Device + bufferSize int + readBuffers [][]byte + packetBuffers [][]byte + sizeBuffer []int +} + +func (d *tunDeviceWrapper) Read(p []byte) (int, error) { + if len(d.packetBuffers) > 0 { + n := copy(p, d.packetBuffers[0]) + d.packetBuffers = d.packetBuffers[1:] + return n, nil + } + + n, err := d.dev.Read(d.readBuffers, d.sizeBuffer, offset) + if err != nil { + return 0, err + } + if n == 0 { + return 0, io.EOF + } + + for i := range n { + if d.sizeBuffer[i] <= 0 { + continue + } + d.packetBuffers = append(d.packetBuffers, d.readBuffers[i][offset:offset+d.sizeBuffer[i]]) + } + + dataSize := copy(p, d.packetBuffers[0]) + d.packetBuffers = d.packetBuffers[1:] + + return dataSize, nil +} + +func (d *tunDeviceWrapper) Write(p []byte) (int, error) { + buf := pool.GetBuf(offset + d.bufferSize) + defer pool.PutBuf(buf) + + n := copy(buf[offset:], p) + _, err := d.dev.Write([][]byte{buf[:offset+n]}, offset) + return n, err +} + +func (d *tunDeviceWrapper) Close() error { + return d.dev.Close() +} diff --git a/pkg/vnet/tun_darwin.go b/pkg/vnet/tun_darwin.go new file mode 100644 index 00000000000..9fa7d42c58f --- /dev/null +++ b/pkg/vnet/tun_darwin.go @@ -0,0 +1,85 @@ +// Copyright 2025 The frp Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package vnet + +import ( + "context" + "fmt" + "net" + "os/exec" + + "golang.zx2c4.com/wireguard/tun" +) + +const ( + defaultTunName = "utun" + defaultMTU = 1420 +) + +func openTun(_ context.Context, addr string) (tun.Device, error) { + dev, err := tun.CreateTUN(defaultTunName, defaultMTU) + if err != nil { + return nil, err + } + + name, err := dev.Name() + if err != nil { + return nil, err + } + + ip, ipNet, err := net.ParseCIDR(addr) + if err != nil { + return nil, err + } + + // Calculate a peer IP for the point-to-point tunnel + peerIP := generatePeerIP(ip) + + // Configure the interface with proper point-to-point addressing + if err = exec.Command("ifconfig", name, "inet", ip.String(), peerIP.String(), "mtu", fmt.Sprint(defaultMTU), "up").Run(); err != nil { + return nil, err + } + + // Add default route for the tunnel subnet + routes := []net.IPNet{*ipNet} + if err = addRoutes(name, routes); err != nil { + return nil, err + } + return dev, nil +} + +// generatePeerIP creates a peer IP for the point-to-point tunnel +// by incrementing the last octet of the IP +func generatePeerIP(ip net.IP) net.IP { + // Make a copy to avoid modifying the original + peerIP := make(net.IP, len(ip)) + copy(peerIP, ip) + + // Increment the last octet + peerIP[len(peerIP)-1]++ + + return peerIP +} + +// addRoutes configures system routes for the TUN interface +func addRoutes(ifName string, routes []net.IPNet) error { + for _, route := range routes { + routeStr := route.String() + if err := exec.Command("route", "add", "-net", routeStr, "-interface", ifName).Run(); err != nil { + return err + } + } + return nil +} diff --git a/pkg/vnet/tun_linux.go b/pkg/vnet/tun_linux.go new file mode 100644 index 00000000000..2e0cc56b234 --- /dev/null +++ b/pkg/vnet/tun_linux.go @@ -0,0 +1,131 @@ +// Copyright 2025 The frp Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package vnet + +import ( + "context" + "crypto/sha256" + "encoding/hex" + "fmt" + "net" + "strconv" + "strings" + + "github.com/vishvananda/netlink" + "golang.zx2c4.com/wireguard/tun" +) + +const ( + baseTunName = "utun" + defaultMTU = 1420 +) + +func openTun(_ context.Context, addr string) (tun.Device, error) { + name, err := findNextTunName(baseTunName) + if err != nil { + name = getFallbackTunName(baseTunName, addr) + } + + tunDevice, err := tun.CreateTUN(name, defaultMTU) + if err != nil { + return nil, fmt.Errorf("failed to create TUN device '%s': %w", name, err) + } + + actualName, err := tunDevice.Name() + if err != nil { + return nil, err + } + + ifn, err := net.InterfaceByName(actualName) + if err != nil { + return nil, err + } + + link, err := netlink.LinkByName(actualName) + if err != nil { + return nil, err + } + + ip, cidr, err := net.ParseCIDR(addr) + if err != nil { + return nil, err + } + if err := netlink.AddrAdd(link, &netlink.Addr{ + IPNet: &net.IPNet{ + IP: ip, + Mask: cidr.Mask, + }, + }); err != nil { + return nil, err + } + + if err := netlink.LinkSetUp(link); err != nil { + return nil, err + } + + if err = addRoutes(ifn, cidr); err != nil { + return nil, err + } + return tunDevice, nil +} + +func findNextTunName(basename string) (string, error) { + interfaces, err := net.Interfaces() + if err != nil { + return "", fmt.Errorf("failed to get network interfaces: %w", err) + } + maxSuffix := -1 + + for _, iface := range interfaces { + name := iface.Name + if strings.HasPrefix(name, basename) { + suffix := name[len(basename):] + if suffix == "" { + continue + } + + numSuffix, err := strconv.Atoi(suffix) + if err == nil && numSuffix > maxSuffix { + maxSuffix = numSuffix + } + } + } + + nextSuffix := maxSuffix + 1 + name := fmt.Sprintf("%s%d", basename, nextSuffix) + return name, nil +} + +func addRoutes(ifn *net.Interface, cidr *net.IPNet) error { + r := netlink.Route{ + Dst: cidr, + LinkIndex: ifn.Index, + } + if err := netlink.RouteReplace(&r); err != nil { + return fmt.Errorf("add route to %v error: %v", r.Dst, err) + } + return nil +} + +// getFallbackTunName generates a deterministic fallback TUN device name +// based on the base name and the provided address string using a hash. +func getFallbackTunName(baseName, addr string) string { + hasher := sha256.New() + hasher.Write([]byte(addr)) + hashBytes := hasher.Sum(nil) + // Use first 4 bytes -> 8 hex chars for brevity, respecting IFNAMSIZ limit. + shortHash := hex.EncodeToString(hashBytes[:4]) + return fmt.Sprintf("%s%s", baseName, shortHash) +} diff --git a/pkg/vnet/tun_unsupported.go b/pkg/vnet/tun_unsupported.go new file mode 100644 index 00000000000..731a06cda9e --- /dev/null +++ b/pkg/vnet/tun_unsupported.go @@ -0,0 +1,29 @@ +// Copyright 2025 The frp Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +//go:build !darwin && !linux + +package vnet + +import ( + "context" + "fmt" + "runtime" + + "golang.zx2c4.com/wireguard/tun" +) + +func openTun(_ context.Context, _ string) (tun.Device, error) { + return nil, fmt.Errorf("virtual net is not supported on this platform (%s/%s)", runtime.GOOS, runtime.GOARCH) +} diff --git a/server/control.go b/server/control.go index ea8a34c17ef..b70d8d1268a 100644 --- a/server/control.go +++ b/server/control.go @@ -224,7 +224,7 @@ func (ctl *Control) Close() error { func (ctl *Control) Replaced(newCtl *Control) { xl := ctl.xl - xl.Infof("Replaced by client [%s]", newCtl.runID) + xl.Infof("replaced by client [%s]", newCtl.runID) ctl.runID = "" ctl.conn.Close() } @@ -297,20 +297,18 @@ func (ctl *Control) GetWorkConn() (workConn net.Conn, err error) { } func (ctl *Control) heartbeatWorker() { - xl := ctl.xl - - // Don't need application heartbeat if TCPMux is enabled, - // yamux will do same thing. - // TODO(fatedier): let default HeartbeatTimeout to -1 if TCPMux is enabled. Users can still set it to positive value to enable it. - if !lo.FromPtr(ctl.serverCfg.Transport.TCPMux) && ctl.serverCfg.Transport.HeartbeatTimeout > 0 { - go wait.Until(func() { - if time.Since(ctl.lastPing.Load().(time.Time)) > time.Duration(ctl.serverCfg.Transport.HeartbeatTimeout)*time.Second { - xl.Warnf("heartbeat timeout") - ctl.conn.Close() - return - } - }, time.Second, ctl.doneCh) + if ctl.serverCfg.Transport.HeartbeatTimeout <= 0 { + return } + + xl := ctl.xl + go wait.Until(func() { + if time.Since(ctl.lastPing.Load().(time.Time)) > time.Duration(ctl.serverCfg.Transport.HeartbeatTimeout)*time.Second { + xl.Warnf("heartbeat timeout") + ctl.conn.Close() + return + } + }, time.Second, ctl.doneCh) } // block until Control closed diff --git a/server/controller/resource.go b/server/controller/resource.go index 47236c9e0d0..9d14b18dfbe 100644 --- a/server/controller/resource.go +++ b/server/controller/resource.go @@ -59,3 +59,13 @@ type ResourceController struct { // All server manager plugin PluginManager *plugin.Manager } + +func (rc *ResourceController) Close() error { + if rc.VhostHTTPSMuxer != nil { + rc.VhostHTTPSMuxer.Close() + } + if rc.TCPMuxHTTPConnectMuxer != nil { + rc.TCPMuxHTTPConnectMuxer.Close() + } + return nil +} diff --git a/server/dashboard_api.go b/server/dashboard_api.go index 62415c968d2..54e5d9e97a8 100644 --- a/server/dashboard_api.go +++ b/server/dashboard_api.go @@ -32,8 +32,6 @@ import ( "github.com/fatedier/frp/pkg/util/version" ) -// TODO(fatedier): add an API to clean status of all offline proxies. - type GeneralResponse struct { Code int Msg string @@ -99,14 +97,14 @@ func (svr *Service) healthz(w http.ResponseWriter, _ *http.Request) { func (svr *Service) apiServerInfo(w http.ResponseWriter, r *http.Request) { res := GeneralResponse{Code: 200} defer func() { - log.Infof("Http response [%s]: code [%d]", r.URL.Path, res.Code) + log.Infof("http response [%s]: code [%d]", r.URL.Path, res.Code) w.WriteHeader(res.Code) if len(res.Msg) > 0 { _, _ = w.Write([]byte(res.Msg)) } }() - log.Infof("Http request: [%s]", r.URL.Path) + log.Infof("http request: [%s]", r.URL.Path) serverStats := mem.StatsCollector.GetServer() svrResp := serverInfoResp{ Version: version.Full(), @@ -146,7 +144,8 @@ type TCPOutConf struct { type TCPMuxOutConf struct { BaseOutConf v1.DomainConfig - Multiplexer string `json:"multiplexer"` + Multiplexer string `json:"multiplexer"` + RouteByHTTPUser string `json:"routeByHTTPUser"` } type UDPOutConf struct { @@ -197,15 +196,15 @@ func getConfByType(proxyType string) any { // Get proxy info. type ProxyStatsInfo struct { - Name string `json:"name"` - Conf interface{} `json:"conf"` - ClientVersion string `json:"clientVersion,omitempty"` - TodayTrafficIn int64 `json:"todayTrafficIn"` - TodayTrafficOut int64 `json:"todayTrafficOut"` - CurConns int64 `json:"curConns"` - LastStartTime string `json:"lastStartTime"` - LastCloseTime string `json:"lastCloseTime"` - Status string `json:"status"` + Name string `json:"name"` + Conf any `json:"conf"` + ClientVersion string `json:"clientVersion,omitempty"` + TodayTrafficIn int64 `json:"todayTrafficIn"` + TodayTrafficOut int64 `json:"todayTrafficOut"` + CurConns int64 `json:"curConns"` + LastStartTime string `json:"lastStartTime"` + LastCloseTime string `json:"lastCloseTime"` + Status string `json:"status"` } type GetProxyInfoResp struct { @@ -219,13 +218,13 @@ func (svr *Service) apiProxyByType(w http.ResponseWriter, r *http.Request) { proxyType := params["type"] defer func() { - log.Infof("Http response [%s]: code [%d]", r.URL.Path, res.Code) + log.Infof("http response [%s]: code [%d]", r.URL.Path, res.Code) w.WriteHeader(res.Code) if len(res.Msg) > 0 { _, _ = w.Write([]byte(res.Msg)) } }() - log.Infof("Http request: [%s]", r.URL.Path) + log.Infof("http request: [%s]", r.URL.Path) proxyInfoResp := GetProxyInfoResp{} proxyInfoResp.Proxies = svr.getProxyStatsByType(proxyType) @@ -273,14 +272,14 @@ func (svr *Service) getProxyStatsByType(proxyType string) (proxyInfos []*ProxySt // Get proxy info by name. type GetProxyStatsResp struct { - Name string `json:"name"` - Conf interface{} `json:"conf"` - TodayTrafficIn int64 `json:"todayTrafficIn"` - TodayTrafficOut int64 `json:"todayTrafficOut"` - CurConns int64 `json:"curConns"` - LastStartTime string `json:"lastStartTime"` - LastCloseTime string `json:"lastCloseTime"` - Status string `json:"status"` + Name string `json:"name"` + Conf any `json:"conf"` + TodayTrafficIn int64 `json:"todayTrafficIn"` + TodayTrafficOut int64 `json:"todayTrafficOut"` + CurConns int64 `json:"curConns"` + LastStartTime string `json:"lastStartTime"` + LastCloseTime string `json:"lastCloseTime"` + Status string `json:"status"` } // /api/proxy/:type/:name @@ -291,13 +290,13 @@ func (svr *Service) apiProxyByTypeAndName(w http.ResponseWriter, r *http.Request name := params["name"] defer func() { - log.Infof("Http response [%s]: code [%d]", r.URL.Path, res.Code) + log.Infof("http response [%s]: code [%d]", r.URL.Path, res.Code) w.WriteHeader(res.Code) if len(res.Msg) > 0 { _, _ = w.Write([]byte(res.Msg)) } }() - log.Infof("Http request: [%s]", r.URL.Path) + log.Infof("http request: [%s]", r.URL.Path) var proxyStatsResp GetProxyStatsResp proxyStatsResp, res.Code, res.Msg = svr.getProxyStatsByTypeAndName(proxyType, name) @@ -359,13 +358,13 @@ func (svr *Service) apiProxyTraffic(w http.ResponseWriter, r *http.Request) { name := params["name"] defer func() { - log.Infof("Http response [%s]: code [%d]", r.URL.Path, res.Code) + log.Infof("http response [%s]: code [%d]", r.URL.Path, res.Code) w.WriteHeader(res.Code) if len(res.Msg) > 0 { _, _ = w.Write([]byte(res.Msg)) } }() - log.Infof("Http request: [%s]", r.URL.Path) + log.Infof("http request: [%s]", r.URL.Path) trafficResp := GetProxyTrafficResp{} trafficResp.Name = name @@ -387,9 +386,9 @@ func (svr *Service) apiProxyTraffic(w http.ResponseWriter, r *http.Request) { func (svr *Service) deleteProxies(w http.ResponseWriter, r *http.Request) { res := GeneralResponse{Code: 200} - log.Infof("Http request: [%s]", r.URL.Path) + log.Infof("http request: [%s]", r.URL.Path) defer func() { - log.Infof("Http response [%s]: code [%d]", r.URL.Path, res.Code) + log.Infof("http response [%s]: code [%d]", r.URL.Path, res.Code) w.WriteHeader(res.Code) if len(res.Msg) > 0 { _, _ = w.Write([]byte(res.Msg)) diff --git a/server/proxy/http.go b/server/proxy/http.go index cd4c4b968bc..9a02dcddce3 100644 --- a/server/proxy/http.go +++ b/server/proxy/http.go @@ -58,6 +58,7 @@ func (pxy *HTTPProxy) Run() (remoteAddr string, err error) { RewriteHost: pxy.cfg.HostHeaderRewrite, RouteByHTTPUser: pxy.cfg.RouteByHTTPUser, Headers: pxy.cfg.RequestHeaders.Set, + ResponseHeaders: pxy.cfg.ResponseHeaders.Set, Username: pxy.cfg.HTTPUser, Password: pxy.cfg.HTTPPassword, CreateConnFn: pxy.GetRealConn, diff --git a/server/proxy/proxy.go b/server/proxy/proxy.go index d5ab0f13ae5..c7c18c32223 100644 --- a/server/proxy/proxy.go +++ b/server/proxy/proxy.go @@ -137,17 +137,17 @@ func (pxy *BaseProxy) GetWorkConnFromPool(src, dst net.Addr) (workConn net.Conn, dstAddr string srcPortStr string dstPortStr string - srcPort int - dstPort int + srcPort uint64 + dstPort uint64 ) if src != nil { srcAddr, srcPortStr, _ = net.SplitHostPort(src.String()) - srcPort, _ = strconv.Atoi(srcPortStr) + srcPort, _ = strconv.ParseUint(srcPortStr, 10, 16) } if dst != nil { dstAddr, dstPortStr, _ = net.SplitHostPort(dst.String()) - dstPort, _ = strconv.Atoi(dstPortStr) + dstPort, _ = strconv.ParseUint(dstPortStr, 10, 16) } err := msg.WriteMsg(workConn, &msg.StartWorkConn{ ProxyName: pxy.GetName(), @@ -190,8 +190,8 @@ func (pxy *BaseProxy) startCommonTCPListenersHandler() { } else { tempDelay *= 2 } - if max := 1 * time.Second; tempDelay > max { - tempDelay = max + if maxTime := 1 * time.Second; tempDelay > maxTime { + tempDelay = maxTime } xl.Infof("met temporary error: %s, sleep for %s ...", err, tempDelay) time.Sleep(tempDelay) diff --git a/server/proxy/xtcp.go b/server/proxy/xtcp.go index f69d0790d65..1ccf331c49d 100644 --- a/server/proxy/xtcp.go +++ b/server/proxy/xtcp.go @@ -17,8 +17,7 @@ package proxy import ( "fmt" "reflect" - - "github.com/fatedier/golib/errors" + "sync" v1 "github.com/fatedier/frp/pkg/config/v1" "github.com/fatedier/frp/pkg/msg" @@ -32,7 +31,8 @@ type XTCPProxy struct { *BaseProxy cfg *v1.XTCPProxyConfig - closeCh chan struct{} + closeCh chan struct{} + closeOnce sync.Once } func NewXTCPProxy(baseProxy *BaseProxy) Proxy { @@ -43,6 +43,7 @@ func NewXTCPProxy(baseProxy *BaseProxy) Proxy { return &XTCPProxy{ BaseProxy: baseProxy, cfg: unwrapped, + closeCh: make(chan struct{}), } } @@ -87,9 +88,9 @@ func (pxy *XTCPProxy) Run() (remoteAddr string, err error) { } func (pxy *XTCPProxy) Close() { - pxy.BaseProxy.Close() - pxy.rc.NatHoleController.CloseClient(pxy.GetName()) - _ = errors.PanicToError(func() { + pxy.closeOnce.Do(func() { + pxy.BaseProxy.Close() + pxy.rc.NatHoleController.CloseClient(pxy.GetName()) close(pxy.closeCh) }) } diff --git a/server/service.go b/server/service.go index 325f7f6cbf3..7ca80dc89ba 100644 --- a/server/service.go +++ b/server/service.go @@ -19,7 +19,6 @@ import ( "context" "crypto/tls" "fmt" - "io" "net" "net/http" "os" @@ -262,7 +261,7 @@ func NewService(cfg *v1.ServerConfig) (*Service, error) { } if cfg.SSHTunnelGateway.BindPort > 0 { - sshGateway, err := ssh.NewGateway(cfg.SSHTunnelGateway, cfg.ProxyBindAddr, svr.sshTunnelListener) + sshGateway, err := ssh.NewGateway(cfg.SSHTunnelGateway, cfg.BindAddr, svr.sshTunnelListener) if err != nil { return nil, fmt.Errorf("create ssh gateway error: %v", err) } @@ -286,12 +285,13 @@ func NewService(cfg *v1.ServerConfig) (*Service, error) { address := net.JoinHostPort(cfg.ProxyBindAddr, strconv.Itoa(cfg.VhostHTTPPort)) server := &http.Server{ - Addr: address, - Handler: rp, + Addr: address, + Handler: rp, + ReadHeaderTimeout: 60 * time.Second, } var l net.Listener if httpMuxOn { - l = svr.muxer.ListenHttp(1) + l = svr.muxer.ListenHTTP(1) } else { l, err = net.Listen("tcp", address) if err != nil { @@ -308,7 +308,7 @@ func NewService(cfg *v1.ServerConfig) (*Service, error) { if cfg.VhostHTTPSPort > 0 { var l net.Listener if httpsMuxOn { - l = svr.muxer.ListenHttps(1) + l = svr.muxer.ListenHTTPS(1) } else { address := net.JoinHostPort(cfg.ProxyBindAddr, strconv.Itoa(cfg.VhostHTTPSPort)) l, err = net.Listen("tcp", address) @@ -385,24 +385,30 @@ func (svr *Service) Run(ctx context.Context) { func (svr *Service) Close() error { if svr.kcpListener != nil { svr.kcpListener.Close() - svr.kcpListener = nil } if svr.quicListener != nil { svr.quicListener.Close() - svr.quicListener = nil } if svr.websocketListener != nil { svr.websocketListener.Close() - svr.websocketListener = nil } if svr.tlsListener != nil { svr.tlsListener.Close() - svr.tlsConfig = nil + } + if svr.sshTunnelListener != nil { + svr.sshTunnelListener.Close() } if svr.listener != nil { svr.listener.Close() - svr.listener = nil } + if svr.webServer != nil { + svr.webServer.Close() + } + if svr.sshTunnelGateway != nil { + svr.sshTunnelGateway.Close() + } + svr.rc.Close() + svr.muxer.Close() svr.ctlManager.Close() if svr.cancel != nil { svr.cancel() @@ -420,7 +426,7 @@ func (svr *Service) handleConnection(ctx context.Context, conn net.Conn, interna _ = conn.SetReadDeadline(time.Now().Add(connReadTimeout)) if rawMsg, err = msg.ReadMsg(conn); err != nil { - log.Tracef("Failed to read message: %v", err) + log.Tracef("failed to read message: %v", err) conn.Close() return } @@ -468,7 +474,7 @@ func (svr *Service) handleConnection(ctx context.Context, conn net.Conn, interna }) } default: - log.Warnf("Error message type for the new connection [%s]", conn.RemoteAddr().String()) + log.Warnf("error message type for the new connection [%s]", conn.RemoteAddr().String()) conn.Close() } } @@ -481,7 +487,7 @@ func (svr *Service) HandleListener(l net.Listener, internal bool) { for { c, err := l.Accept() if err != nil { - log.Warnf("Listener for incoming connections from client closed") + log.Warnf("listener for incoming connections from client closed") return } // inject xlog object into net.Conn context @@ -497,7 +503,7 @@ func (svr *Service) HandleListener(l net.Listener, internal bool) { var isTLS, custom bool c, isTLS, custom, err = netpkg.CheckAndEnableTLSServerConnWithTimeout(c, svr.tlsConfig, forceTLS, connReadTimeout) if err != nil { - log.Warnf("CheckAndEnableTLSServerConnWithTimeout error: %v", err) + log.Warnf("checkAndEnableTLSServerConnWithTimeout error: %v", err) originConn.Close() continue } @@ -509,11 +515,12 @@ func (svr *Service) HandleListener(l net.Listener, internal bool) { if lo.FromPtr(svr.cfg.Transport.TCPMux) && !internal { fmuxCfg := fmux.DefaultConfig() fmuxCfg.KeepAliveInterval = time.Duration(svr.cfg.Transport.TCPMuxKeepaliveInterval) * time.Second - fmuxCfg.LogOutput = io.Discard + // Use trace level for yamux logs + fmuxCfg.LogOutput = xlog.NewTraceWriter(xlog.FromContextSafe(ctx)) fmuxCfg.MaxStreamWindowSize = 6 * 1024 * 1024 session, err := fmux.Server(frpConn, fmuxCfg) if err != nil { - log.Warnf("Failed to create mux connection: %v", err) + log.Warnf("failed to create mux connection: %v", err) frpConn.Close() return } @@ -521,7 +528,7 @@ func (svr *Service) HandleListener(l net.Listener, internal bool) { for { stream, err := session.AcceptStream() if err != nil { - log.Debugf("Accept new mux stream error: %v", err) + log.Debugf("accept new mux stream error: %v", err) session.Close() return } @@ -539,15 +546,15 @@ func (svr *Service) HandleQUICListener(l *quic.Listener) { for { c, err := l.Accept(context.Background()) if err != nil { - log.Warnf("QUICListener for incoming connections from client closed") + log.Warnf("quic listener for incoming connections from client closed") return } // Start a new goroutine to handle connection. - go func(ctx context.Context, frpConn quic.Connection) { + go func(ctx context.Context, frpConn *quic.Conn) { for { stream, err := frpConn.AcceptStream(context.Background()) if err != nil { - log.Debugf("Accept new quic mux stream error: %v", err) + log.Debugf("accept new quic mux stream error: %v", err) _ = frpConn.CloseWithError(0, "") return } @@ -613,7 +620,7 @@ func (svr *Service) RegisterWorkConn(workConn net.Conn, newMsg *msg.NewWorkConn) xl := netpkg.NewLogFromConn(workConn) ctl, exist := svr.ctlManager.GetByID(newMsg.RunID) if !exist { - xl.Warnf("No client control found for run id [%s]", newMsg.RunID) + xl.Warnf("no client control found for run id [%s]", newMsg.RunID) return fmt.Errorf("no client control found for run id [%s]", newMsg.RunID) } // server plugin hook diff --git a/test/e2e/e2e.go b/test/e2e/e2e.go index 994ac59deef..ee00e1031e2 100644 --- a/test/e2e/e2e.go +++ b/test/e2e/e2e.go @@ -38,7 +38,7 @@ func RunE2ETests(t *testing.T) { // Randomize specs as well as suites suiteConfig.RandomizeAllSpecs = true - log.Infof("Starting e2e run %q on Ginkgo node %d of total %d", + log.Infof("starting e2e run %q on Ginkgo node %d of total %d", framework.RunID, suiteConfig.ParallelProcess, suiteConfig.ParallelTotal) ginkgo.RunSpecs(t, "frp e2e suite", suiteConfig, reporterConfig) } diff --git a/test/e2e/framework/expect.go b/test/e2e/framework/expect.go index 3c357bb02cd..8e9044895ee 100644 --- a/test/e2e/framework/expect.go +++ b/test/e2e/framework/expect.go @@ -5,75 +5,75 @@ import ( ) // ExpectEqual expects the specified two are the same, otherwise an exception raises -func ExpectEqual(actual interface{}, extra interface{}, explain ...interface{}) { +func ExpectEqual(actual any, extra any, explain ...any) { gomega.ExpectWithOffset(1, actual).To(gomega.Equal(extra), explain...) } // ExpectEqualValues expects the specified two are the same, it not strict about type -func ExpectEqualValues(actual interface{}, extra interface{}, explain ...interface{}) { +func ExpectEqualValues(actual any, extra any, explain ...any) { gomega.ExpectWithOffset(1, actual).To(gomega.BeEquivalentTo(extra), explain...) } -func ExpectEqualValuesWithOffset(offset int, actual interface{}, extra interface{}, explain ...interface{}) { +func ExpectEqualValuesWithOffset(offset int, actual any, extra any, explain ...any) { gomega.ExpectWithOffset(1+offset, actual).To(gomega.BeEquivalentTo(extra), explain...) } // ExpectNotEqual expects the specified two are not the same, otherwise an exception raises -func ExpectNotEqual(actual interface{}, extra interface{}, explain ...interface{}) { +func ExpectNotEqual(actual any, extra any, explain ...any) { gomega.ExpectWithOffset(1, actual).NotTo(gomega.Equal(extra), explain...) } // ExpectError expects an error happens, otherwise an exception raises -func ExpectError(err error, explain ...interface{}) { +func ExpectError(err error, explain ...any) { gomega.ExpectWithOffset(1, err).To(gomega.HaveOccurred(), explain...) } -func ExpectErrorWithOffset(offset int, err error, explain ...interface{}) { +func ExpectErrorWithOffset(offset int, err error, explain ...any) { gomega.ExpectWithOffset(1+offset, err).To(gomega.HaveOccurred(), explain...) } // ExpectNoError checks if "err" is set, and if so, fails assertion while logging the error. -func ExpectNoError(err error, explain ...interface{}) { +func ExpectNoError(err error, explain ...any) { ExpectNoErrorWithOffset(1, err, explain...) } // ExpectNoErrorWithOffset checks if "err" is set, and if so, fails assertion while logging the error at "offset" levels above its caller // (for example, for call chain f -> g -> ExpectNoErrorWithOffset(1, ...) error would be logged for "f"). -func ExpectNoErrorWithOffset(offset int, err error, explain ...interface{}) { +func ExpectNoErrorWithOffset(offset int, err error, explain ...any) { gomega.ExpectWithOffset(1+offset, err).NotTo(gomega.HaveOccurred(), explain...) } -func ExpectContainSubstring(actual, substr string, explain ...interface{}) { +func ExpectContainSubstring(actual, substr string, explain ...any) { gomega.ExpectWithOffset(1, actual).To(gomega.ContainSubstring(substr), explain...) } // ExpectConsistOf expects actual contains precisely the extra elements. The ordering of the elements does not matter. -func ExpectConsistOf(actual interface{}, extra interface{}, explain ...interface{}) { +func ExpectConsistOf(actual any, extra any, explain ...any) { gomega.ExpectWithOffset(1, actual).To(gomega.ConsistOf(extra), explain...) } -func ExpectContainElements(actual interface{}, extra interface{}, explain ...interface{}) { +func ExpectContainElements(actual any, extra any, explain ...any) { gomega.ExpectWithOffset(1, actual).To(gomega.ContainElements(extra), explain...) } -func ExpectNotContainElements(actual interface{}, extra interface{}, explain ...interface{}) { +func ExpectNotContainElements(actual any, extra any, explain ...any) { gomega.ExpectWithOffset(1, actual).NotTo(gomega.ContainElements(extra), explain...) } // ExpectHaveKey expects the actual map has the key in the keyset -func ExpectHaveKey(actual interface{}, key interface{}, explain ...interface{}) { +func ExpectHaveKey(actual any, key any, explain ...any) { gomega.ExpectWithOffset(1, actual).To(gomega.HaveKey(key), explain...) } // ExpectEmpty expects actual is empty -func ExpectEmpty(actual interface{}, explain ...interface{}) { +func ExpectEmpty(actual any, explain ...any) { gomega.ExpectWithOffset(1, actual).To(gomega.BeEmpty(), explain...) } -func ExpectTrue(actual interface{}, explain ...interface{}) { +func ExpectTrue(actual any, explain ...any) { gomega.ExpectWithOffset(1, actual).Should(gomega.BeTrue(), explain...) } -func ExpectTrueWithOffset(offset int, actual interface{}, explain ...interface{}) { +func ExpectTrueWithOffset(offset int, actual any, explain ...any) { gomega.ExpectWithOffset(1+offset, actual).Should(gomega.BeTrue(), explain...) } diff --git a/test/e2e/framework/framework.go b/test/e2e/framework/framework.go index 527096cd1b4..efd098ab5a8 100644 --- a/test/e2e/framework/framework.go +++ b/test/e2e/framework/framework.go @@ -260,7 +260,7 @@ func (f *Framework) SetEnvs(envs []string) { func (f *Framework) WriteTempFile(name string, content string) string { filePath := filepath.Join(f.TempDirectory, name) - err := os.WriteFile(filePath, []byte(content), 0o766) + err := os.WriteFile(filePath, []byte(content), 0o600) ExpectNoError(err) return filePath } diff --git a/test/e2e/framework/log.go b/test/e2e/framework/log.go index 3cd990632ba..a466f68bf1f 100644 --- a/test/e2e/framework/log.go +++ b/test/e2e/framework/log.go @@ -11,18 +11,18 @@ func nowStamp() string { return time.Now().Format(time.StampMilli) } -func log(level string, format string, args ...interface{}) { +func log(level string, format string, args ...any) { fmt.Fprintf(ginkgo.GinkgoWriter, nowStamp()+": "+level+": "+format+"\n", args...) } // Logf logs the info. -func Logf(format string, args ...interface{}) { +func Logf(format string, args ...any) { log("INFO", format, args...) } // Failf logs the fail info, including a stack trace starts with its direct caller // (for example, for call chain f -> g -> Failf("foo", ...) error would be logged for "g"). -func Failf(format string, args ...interface{}) { +func Failf(format string, args ...any) { msg := fmt.Sprintf(format, args...) skip := 1 ginkgo.Fail(msg, skip) diff --git a/test/e2e/framework/mockservers.go b/test/e2e/framework/mockservers.go index 2aea36da446..6b6c2868d31 100644 --- a/test/e2e/framework/mockservers.go +++ b/test/e2e/framework/mockservers.go @@ -67,8 +67,8 @@ func (m *MockServers) Close() { os.Remove(m.udsEchoServer.BindAddr()) } -func (m *MockServers) GetTemplateParams() map[string]interface{} { - ret := make(map[string]interface{}) +func (m *MockServers) GetTemplateParams() map[string]any { + ret := make(map[string]any) ret[TCPEchoServerPort] = m.tcpEchoServer.BindPort() ret[UDPEchoServerPort] = m.udpEchoServer.BindPort() ret[UDSEchoServerAddr] = m.udsEchoServer.BindAddr() @@ -76,7 +76,7 @@ func (m *MockServers) GetTemplateParams() map[string]interface{} { return ret } -func (m *MockServers) GetParam(key string) interface{} { +func (m *MockServers) GetParam(key string) any { params := m.GetTemplateParams() if v, ok := params[key]; ok { return v diff --git a/test/e2e/framework/process.go b/test/e2e/framework/process.go index 0845914bf06..10b3611bf6e 100644 --- a/test/e2e/framework/process.go +++ b/test/e2e/framework/process.go @@ -27,7 +27,7 @@ func (f *Framework) RunProcesses(serverTemplates []string, clientTemplates []str currentServerProcesses := make([]*process.Process, 0, len(serverTemplates)) for i := range serverTemplates { path := filepath.Join(f.TempDirectory, fmt.Sprintf("frp-e2e-server-%d", i)) - err = os.WriteFile(path, []byte(outs[i]), 0o666) + err = os.WriteFile(path, []byte(outs[i]), 0o600) ExpectNoError(err) if TestContext.Debug { @@ -48,7 +48,7 @@ func (f *Framework) RunProcesses(serverTemplates []string, clientTemplates []str for i := range clientTemplates { index := i + len(serverTemplates) path := filepath.Join(f.TempDirectory, fmt.Sprintf("frp-e2e-client-%d", i)) - err = os.WriteFile(path, []byte(outs[index]), 0o666) + err = os.WriteFile(path, []byte(outs[index]), 0o600) ExpectNoError(err) if TestContext.Debug { @@ -94,7 +94,7 @@ func (f *Framework) RunFrpc(args ...string) (*process.Process, string, error) { func (f *Framework) GenerateConfigFile(content string) string { f.configFileIndex++ path := filepath.Join(f.TempDirectory, fmt.Sprintf("frp-e2e-config-%d", f.configFileIndex)) - err := os.WriteFile(path, []byte(content), 0o666) + err := os.WriteFile(path, []byte(content), 0o600) ExpectNoError(err) return path } diff --git a/test/e2e/framework/request.go b/test/e2e/framework/request.go index 1fc67fe86ab..599ff11b26a 100644 --- a/test/e2e/framework/request.go +++ b/test/e2e/framework/request.go @@ -20,7 +20,7 @@ func ExpectResponseCode(code int) EnsureFunc { if resp.Code == code { return true } - flog.Warnf("Expect code %d, but got %d", code, resp.Code) + flog.Warnf("expect code %d, but got %d", code, resp.Code) return false } } @@ -42,7 +42,7 @@ type RequestExpect struct { f *Framework expectResp []byte expectError bool - explain []interface{} + explain []any } func NewRequestExpect(f *Framework) *RequestExpect { @@ -51,7 +51,7 @@ func NewRequestExpect(f *Framework) *RequestExpect { f: f, expectResp: []byte(consts.TestString), expectError: false, - explain: make([]interface{}, 0), + explain: make([]any, 0), } } @@ -94,7 +94,7 @@ func (e *RequestExpect) ExpectError(expectErr bool) *RequestExpect { return e } -func (e *RequestExpect) Explain(explain ...interface{}) *RequestExpect { +func (e *RequestExpect) Explain(explain ...any) *RequestExpect { e.explain = explain return e } @@ -111,14 +111,14 @@ func (e *RequestExpect) Ensure(fns ...EnsureFunc) { if len(fns) == 0 { if !bytes.Equal(e.expectResp, ret.Content) { - flog.Tracef("Response info: %+v", ret) + flog.Tracef("response info: %+v", ret) } ExpectEqualValuesWithOffset(1, string(ret.Content), string(e.expectResp), e.explain...) } else { for _, fn := range fns { ok := fn(ret) if !ok { - flog.Tracef("Response info: %+v", ret) + flog.Tracef("response info: %+v", ret) } ExpectTrueWithOffset(1, ok, e.explain...) } diff --git a/test/e2e/legacy/basic/client.go b/test/e2e/legacy/basic/client.go index 98f675b823a..daed8b22f0b 100644 --- a/test/e2e/legacy/basic/client.go +++ b/test/e2e/legacy/basic/client.go @@ -1,6 +1,7 @@ package basic import ( + "context" "fmt" "strconv" "strings" @@ -54,7 +55,7 @@ var _ = ginkgo.Describe("[Feature: ClientManage]", func() { framework.NewRequestExpect(f).Port(p3Port).Ensure() client := f.APIClientForFrpc(adminPort) - conf, err := client.GetConfig() + conf, err := client.GetConfig(context.Background()) framework.ExpectNoError(err) newP2Port := f.AllocPort() @@ -65,10 +66,10 @@ var _ = ginkgo.Describe("[Feature: ClientManage]", func() { newClientConf = newClientConf[:p3Index] } - err = client.UpdateConfig(newClientConf) + err = client.UpdateConfig(context.Background(), newClientConf) framework.ExpectNoError(err) - err = client.Reload(true) + err = client.Reload(context.Background(), true) framework.ExpectNoError(err) time.Sleep(time.Second) @@ -120,7 +121,7 @@ var _ = ginkgo.Describe("[Feature: ClientManage]", func() { framework.NewRequestExpect(f).Port(testPort).Ensure() client := f.APIClientForFrpc(adminPort) - err := client.Stop() + err := client.Stop(context.Background()) framework.ExpectNoError(err) time.Sleep(3 * time.Second) diff --git a/test/e2e/legacy/basic/client_server.go b/test/e2e/legacy/basic/client_server.go index 03bca0c54e2..d85b5accfa3 100644 --- a/test/e2e/legacy/basic/client_server.go +++ b/test/e2e/legacy/basic/client_server.go @@ -24,12 +24,14 @@ type generalTestConfigures struct { } func renderBindPortConfig(protocol string) string { - if protocol == "kcp" { + switch protocol { + case "kcp": return fmt.Sprintf(`kcp_bind_port = {{ .%s }}`, consts.PortServerName) - } else if protocol == "quic" { + case "quic": return fmt.Sprintf(`quic_bind_port = {{ .%s }}`, consts.PortServerName) + default: + return "" } - return "" } func runClientServerTest(f *framework.Framework, configures *generalTestConfigures) { diff --git a/test/e2e/legacy/basic/server.go b/test/e2e/legacy/basic/server.go index 62bfd62ae71..4399439d0fd 100644 --- a/test/e2e/legacy/basic/server.go +++ b/test/e2e/legacy/basic/server.go @@ -1,6 +1,7 @@ package basic import ( + "context" "fmt" "net" "strconv" @@ -101,7 +102,7 @@ var _ = ginkgo.Describe("[Feature: Server Manager]", func() { client := f.APIClientForFrpc(adminPort) // tcp random port - status, err := client.GetProxyStatus("tcp") + status, err := client.GetProxyStatus(context.Background(), "tcp") framework.ExpectNoError(err) _, portStr, err := net.SplitHostPort(status.RemoteAddr) @@ -112,7 +113,7 @@ var _ = ginkgo.Describe("[Feature: Server Manager]", func() { framework.NewRequestExpect(f).Port(port).Ensure() // udp random port - status, err = client.GetProxyStatus("udp") + status, err = client.GetProxyStatus(context.Background(), "udp") framework.ExpectNoError(err) _, portStr, err = net.SplitHostPort(status.RemoteAddr) diff --git a/test/e2e/legacy/features/real_ip.go b/test/e2e/legacy/features/real_ip.go index f74c62d2d68..a79afb45b1d 100644 --- a/test/e2e/legacy/features/real_ip.go +++ b/test/e2e/legacy/features/real_ip.go @@ -93,7 +93,7 @@ var _ = ginkgo.Describe("[Feature: Real IP]", func() { f.RunProcesses([]string{serverConf}, []string{clientConf}) framework.NewRequestExpect(f).Port(remotePort).Ensure(func(resp *request.Response) bool { - log.Tracef("ProxyProtocol get SourceAddr: %s", string(resp.Content)) + log.Tracef("proxy protocol get SourceAddr: %s", string(resp.Content)) addr, err := net.ResolveTCPAddr("tcp", string(resp.Content)) if err != nil { return false @@ -142,7 +142,7 @@ var _ = ginkgo.Describe("[Feature: Real IP]", func() { r.HTTP().HTTPHost("normal.example.com") }).Ensure(framework.ExpectResponseCode(404)) - log.Tracef("ProxyProtocol get SourceAddr: %s", srcAddrRecord) + log.Tracef("proxy protocol get SourceAddr: %s", srcAddrRecord) addr, err := net.ResolveTCPAddr("tcp", srcAddrRecord) framework.ExpectNoError(err, srcAddrRecord) framework.ExpectEqualValues("127.0.0.1", addr.IP.String()) diff --git a/test/e2e/legacy/plugin/server.go b/test/e2e/legacy/plugin/server.go index cf600be2ee0..9120b7d77a1 100644 --- a/test/e2e/legacy/plugin/server.go +++ b/test/e2e/legacy/plugin/server.go @@ -223,7 +223,7 @@ var _ = ginkgo.Describe("[Feature: Server-Plugins]", func() { handler := func(req *plugin.Request) *plugin.Response { var ret plugin.Response content := req.Content.(*plugin.PingContent) - record = content.Ping.PrivilegeKey + record = content.PrivilegeKey ret.Unchange = true return &ret } @@ -273,7 +273,7 @@ var _ = ginkgo.Describe("[Feature: Server-Plugins]", func() { handler := func(req *plugin.Request) *plugin.Response { var ret plugin.Response content := req.Content.(*plugin.NewWorkConnContent) - record = content.NewWorkConn.RunID + record = content.RunID ret.Unchange = true return &ret } diff --git a/test/e2e/pkg/request/request.go b/test/e2e/pkg/request/request.go index 740bc4fbf2c..211cc42527d 100644 --- a/test/e2e/pkg/request/request.go +++ b/test/e2e/pkg/request/request.go @@ -12,7 +12,7 @@ import ( "strconv" "time" - libdial "github.com/fatedier/golib/net/dial" + libnet "github.com/fatedier/golib/net" httppkg "github.com/fatedier/frp/pkg/util/http" "github.com/fatedier/frp/test/e2e/pkg/rpc" @@ -160,11 +160,11 @@ func (r *Request) Do() (*Response, error) { if r.protocol != "tcp" { return nil, fmt.Errorf("only tcp protocol is allowed for proxy") } - proxyType, proxyAddress, auth, err := libdial.ParseProxyURL(r.proxyURL) + proxyType, proxyAddress, auth, err := libnet.ParseProxyURL(r.proxyURL) if err != nil { return nil, fmt.Errorf("parse ProxyURL error: %v", err) } - conn, err = libdial.Dial(addr, libdial.WithProxy(proxyType, proxyAddress), libdial.WithProxyAuth(auth)) + conn, err = libnet.Dial(addr, libnet.WithProxy(proxyType, proxyAddress), libnet.WithProxyAuth(auth)) if err != nil { return nil, err } diff --git a/test/e2e/v1/basic/client.go b/test/e2e/v1/basic/client.go index ef5e262f709..fd269d758d9 100644 --- a/test/e2e/v1/basic/client.go +++ b/test/e2e/v1/basic/client.go @@ -1,6 +1,7 @@ package basic import ( + "context" "fmt" "strconv" "strings" @@ -57,7 +58,7 @@ var _ = ginkgo.Describe("[Feature: ClientManage]", func() { framework.NewRequestExpect(f).Port(p3Port).Ensure() client := f.APIClientForFrpc(adminPort) - conf, err := client.GetConfig() + conf, err := client.GetConfig(context.Background()) framework.ExpectNoError(err) newP2Port := f.AllocPort() @@ -68,10 +69,10 @@ var _ = ginkgo.Describe("[Feature: ClientManage]", func() { newClientConf = newClientConf[:p3Index] } - err = client.UpdateConfig(newClientConf) + err = client.UpdateConfig(context.Background(), newClientConf) framework.ExpectNoError(err) - err = client.Reload(true) + err = client.Reload(context.Background(), true) framework.ExpectNoError(err) time.Sleep(time.Second) @@ -124,7 +125,7 @@ var _ = ginkgo.Describe("[Feature: ClientManage]", func() { framework.NewRequestExpect(f).Port(testPort).Ensure() client := f.APIClientForFrpc(adminPort) - err := client.Stop() + err := client.Stop(context.Background()) framework.ExpectNoError(err) time.Sleep(3 * time.Second) diff --git a/test/e2e/v1/basic/client_server.go b/test/e2e/v1/basic/client_server.go index 16270781855..85dd1227dd7 100644 --- a/test/e2e/v1/basic/client_server.go +++ b/test/e2e/v1/basic/client_server.go @@ -24,12 +24,14 @@ type generalTestConfigures struct { } func renderBindPortConfig(protocol string) string { - if protocol == "kcp" { + switch protocol { + case "kcp": return fmt.Sprintf(`kcpBindPort = {{ .%s }}`, consts.PortServerName) - } else if protocol == "quic" { + case "quic": return fmt.Sprintf(`quicBindPort = {{ .%s }}`, consts.PortServerName) + default: + return "" } - return "" } func runClientServerTest(f *framework.Framework, configures *generalTestConfigures) { diff --git a/test/e2e/v1/basic/config.go b/test/e2e/v1/basic/config.go index 7dc3cedb3d9..314e7fc48c2 100644 --- a/test/e2e/v1/basic/config.go +++ b/test/e2e/v1/basic/config.go @@ -1,6 +1,7 @@ package basic import ( + "context" "fmt" "github.com/onsi/ginkgo/v2" @@ -72,7 +73,7 @@ var _ = ginkgo.Describe("[Feature: Config]", func() { client := f.APIClientForFrpc(adminPort) checkProxyFn := func(name string, localPort, remotePort int) { - status, err := client.GetProxyStatus(name) + status, err := client.GetProxyStatus(context.Background(), name) framework.ExpectNoError(err) framework.ExpectContainSubstring(status.LocalAddr, fmt.Sprintf(":%d", localPort)) diff --git a/test/e2e/v1/basic/http.go b/test/e2e/v1/basic/http.go index e649dbfbe47..c37e84e719d 100644 --- a/test/e2e/v1/basic/http.go +++ b/test/e2e/v1/basic/http.go @@ -5,6 +5,7 @@ import ( "net/http" "net/url" "strconv" + "time" "github.com/gorilla/websocket" "github.com/onsi/ginkgo/v2" @@ -266,7 +267,7 @@ var _ = ginkgo.Describe("[Feature: HTTP]", func() { Ensure() }) - ginkgo.It("Modify headers", func() { + ginkgo.It("Modify request headers", func() { vhostHTTPPort := f.AllocPort() serverConf := getDefaultServerConf(vhostHTTPPort) @@ -291,7 +292,6 @@ var _ = ginkgo.Describe("[Feature: HTTP]", func() { f.RunProcesses([]string{serverConf}, []string{clientConf}) - // not set auth header framework.NewRequestExpect(f).Port(vhostHTTPPort). RequestModify(func(r *request.Request) { r.HTTP().HTTPHost("normal.example.com") @@ -300,6 +300,40 @@ var _ = ginkgo.Describe("[Feature: HTTP]", func() { Ensure() }) + ginkgo.It("Modify response headers", func() { + vhostHTTPPort := f.AllocPort() + serverConf := getDefaultServerConf(vhostHTTPPort) + + localPort := f.AllocPort() + localServer := httpserver.New( + httpserver.WithBindPort(localPort), + httpserver.WithHandler(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { + w.WriteHeader(200) + })), + ) + f.RunServer("", localServer) + + clientConf := consts.DefaultClientConfig + clientConf += fmt.Sprintf(` + [[proxies]] + name = "test" + type = "http" + localPort = %d + customDomains = ["normal.example.com"] + responseHeaders.set.x-from-where = "frp" + `, localPort) + + f.RunProcesses([]string{serverConf}, []string{clientConf}) + + framework.NewRequestExpect(f).Port(vhostHTTPPort). + RequestModify(func(r *request.Request) { + r.HTTP().HTTPHost("normal.example.com") + }). + Ensure(func(res *request.Response) bool { + return res.Header.Get("X-From-Where") == "frp" + }) + }) + ginkgo.It("Host Header Rewrite", func() { vhostHTTPPort := f.AllocPort() serverConf := getDefaultServerConf(vhostHTTPPort) @@ -385,4 +419,48 @@ var _ = ginkgo.Describe("[Feature: HTTP]", func() { framework.ExpectNoError(err) framework.ExpectEqualValues(consts.TestString, string(msg)) }) + + ginkgo.It("vhostHTTPTimeout", func() { + vhostHTTPPort := f.AllocPort() + serverConf := getDefaultServerConf(vhostHTTPPort) + serverConf += ` + vhostHTTPTimeout = 2 + ` + + delayDuration := 0 * time.Second + localPort := f.AllocPort() + localServer := httpserver.New( + httpserver.WithBindPort(localPort), + httpserver.WithHandler(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { + time.Sleep(delayDuration) + _, _ = w.Write([]byte(req.Host)) + })), + ) + f.RunServer("", localServer) + + clientConf := consts.DefaultClientConfig + clientConf += fmt.Sprintf(` + [[proxies]] + name = "test" + type = "http" + localPort = %d + customDomains = ["normal.example.com"] + `, localPort) + + f.RunProcesses([]string{serverConf}, []string{clientConf}) + + framework.NewRequestExpect(f).Port(vhostHTTPPort). + RequestModify(func(r *request.Request) { + r.HTTP().HTTPHost("normal.example.com").HTTP().Timeout(time.Second) + }). + ExpectResp([]byte("normal.example.com")). + Ensure() + + delayDuration = 3 * time.Second + framework.NewRequestExpect(f).Port(vhostHTTPPort). + RequestModify(func(r *request.Request) { + r.HTTP().HTTPHost("normal.example.com").HTTP().Timeout(5 * time.Second) + }). + Ensure(framework.ExpectResponseCode(504)) + }) }) diff --git a/test/e2e/v1/basic/server.go b/test/e2e/v1/basic/server.go index fe8af4d1108..a3fe5992638 100644 --- a/test/e2e/v1/basic/server.go +++ b/test/e2e/v1/basic/server.go @@ -1,6 +1,7 @@ package basic import ( + "context" "fmt" "net" "strconv" @@ -112,7 +113,7 @@ var _ = ginkgo.Describe("[Feature: Server Manager]", func() { client := f.APIClientForFrpc(adminPort) // tcp random port - status, err := client.GetProxyStatus("tcp") + status, err := client.GetProxyStatus(context.Background(), "tcp") framework.ExpectNoError(err) _, portStr, err := net.SplitHostPort(status.RemoteAddr) @@ -123,7 +124,7 @@ var _ = ginkgo.Describe("[Feature: Server Manager]", func() { framework.NewRequestExpect(f).Port(port).Ensure() // udp random port - status, err = client.GetProxyStatus("udp") + status, err = client.GetProxyStatus(context.Background(), "udp") framework.ExpectNoError(err) _, portStr, err = net.SplitHostPort(status.RemoteAddr) diff --git a/test/e2e/v1/basic/token_source.go b/test/e2e/v1/basic/token_source.go new file mode 100644 index 00000000000..95bb8dd4b0c --- /dev/null +++ b/test/e2e/v1/basic/token_source.go @@ -0,0 +1,217 @@ +// Copyright 2025 The frp Authors +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package basic + +import ( + "fmt" + "os" + "path/filepath" + + "github.com/onsi/ginkgo/v2" + + "github.com/fatedier/frp/test/e2e/framework" + "github.com/fatedier/frp/test/e2e/framework/consts" + "github.com/fatedier/frp/test/e2e/pkg/port" +) + +var _ = ginkgo.Describe("[Feature: TokenSource]", func() { + f := framework.NewDefaultFramework() + + ginkgo.Describe("File-based token loading", func() { + ginkgo.It("should work with file tokenSource", func() { + // Create a temporary token file + tmpDir := f.TempDirectory + tokenFile := filepath.Join(tmpDir, "test_token") + tokenContent := "test-token-123" + + err := os.WriteFile(tokenFile, []byte(tokenContent), 0o600) + framework.ExpectNoError(err) + + serverConf := consts.DefaultServerConfig + clientConf := consts.DefaultClientConfig + + portName := port.GenName("TCP") + + // Server config with tokenSource + serverConf += fmt.Sprintf(` +auth.tokenSource.type = "file" +auth.tokenSource.file.path = "%s" +`, tokenFile) + + // Client config with matching token + clientConf += fmt.Sprintf(` +auth.token = "%s" + +[[proxies]] +name = "tcp" +type = "tcp" +localPort = {{ .%s }} +remotePort = {{ .%s }} +`, tokenContent, framework.TCPEchoServerPort, portName) + + f.RunProcesses([]string{serverConf}, []string{clientConf}) + + framework.NewRequestExpect(f).PortName(portName).Ensure() + }) + + ginkgo.It("should work with client tokenSource", func() { + // Create a temporary token file + tmpDir := f.TempDirectory + tokenFile := filepath.Join(tmpDir, "client_token") + tokenContent := "client-token-456" + + err := os.WriteFile(tokenFile, []byte(tokenContent), 0o600) + framework.ExpectNoError(err) + + serverConf := consts.DefaultServerConfig + clientConf := consts.DefaultClientConfig + + portName := port.GenName("TCP") + + // Server config with matching token + serverConf += fmt.Sprintf(` +auth.token = "%s" +`, tokenContent) + + // Client config with tokenSource + clientConf += fmt.Sprintf(` +auth.tokenSource.type = "file" +auth.tokenSource.file.path = "%s" + +[[proxies]] +name = "tcp" +type = "tcp" +localPort = {{ .%s }} +remotePort = {{ .%s }} +`, tokenFile, framework.TCPEchoServerPort, portName) + + f.RunProcesses([]string{serverConf}, []string{clientConf}) + + framework.NewRequestExpect(f).PortName(portName).Ensure() + }) + + ginkgo.It("should work with both server and client tokenSource", func() { + // Create temporary token files + tmpDir := f.TempDirectory + serverTokenFile := filepath.Join(tmpDir, "server_token") + clientTokenFile := filepath.Join(tmpDir, "client_token") + tokenContent := "shared-token-789" + + err := os.WriteFile(serverTokenFile, []byte(tokenContent), 0o600) + framework.ExpectNoError(err) + + err = os.WriteFile(clientTokenFile, []byte(tokenContent), 0o600) + framework.ExpectNoError(err) + + serverConf := consts.DefaultServerConfig + clientConf := consts.DefaultClientConfig + + portName := port.GenName("TCP") + + // Server config with tokenSource + serverConf += fmt.Sprintf(` +auth.tokenSource.type = "file" +auth.tokenSource.file.path = "%s" +`, serverTokenFile) + + // Client config with tokenSource + clientConf += fmt.Sprintf(` +auth.tokenSource.type = "file" +auth.tokenSource.file.path = "%s" + +[[proxies]] +name = "tcp" +type = "tcp" +localPort = {{ .%s }} +remotePort = {{ .%s }} +`, clientTokenFile, framework.TCPEchoServerPort, portName) + + f.RunProcesses([]string{serverConf}, []string{clientConf}) + + framework.NewRequestExpect(f).PortName(portName).Ensure() + }) + + ginkgo.It("should fail with mismatched tokens", func() { + // Create temporary token files with different content + tmpDir := f.TempDirectory + serverTokenFile := filepath.Join(tmpDir, "server_token") + clientTokenFile := filepath.Join(tmpDir, "client_token") + + err := os.WriteFile(serverTokenFile, []byte("server-token"), 0o600) + framework.ExpectNoError(err) + + err = os.WriteFile(clientTokenFile, []byte("client-token"), 0o600) + framework.ExpectNoError(err) + + serverConf := consts.DefaultServerConfig + clientConf := consts.DefaultClientConfig + + portName := port.GenName("TCP") + + // Server config with tokenSource + serverConf += fmt.Sprintf(` +auth.tokenSource.type = "file" +auth.tokenSource.file.path = "%s" +`, serverTokenFile) + + // Client config with different tokenSource + clientConf += fmt.Sprintf(` +auth.tokenSource.type = "file" +auth.tokenSource.file.path = "%s" + +[[proxies]] +name = "tcp" +type = "tcp" +localPort = {{ .%s }} +remotePort = {{ .%s }} +`, clientTokenFile, framework.TCPEchoServerPort, portName) + + f.RunProcesses([]string{serverConf}, []string{clientConf}) + + // This should fail due to token mismatch - the client should not be able to connect + // We expect the request to fail because the proxy tunnel is not established + framework.NewRequestExpect(f).PortName(portName).ExpectError(true).Ensure() + }) + + ginkgo.It("should fail with non-existent token file", func() { + // This test verifies that server fails to start when tokenSource points to non-existent file + // We'll verify this by checking that the configuration loading itself fails + + // Create a config that references a non-existent file + tmpDir := f.TempDirectory + nonExistentFile := filepath.Join(tmpDir, "non_existent_token") + + serverConf := consts.DefaultServerConfig + + // Server config with non-existent tokenSource file + serverConf += fmt.Sprintf(` +auth.tokenSource.type = "file" +auth.tokenSource.file.path = "%s" +`, nonExistentFile) + + // The test expectation is that this will fail during the RunProcesses call + // because the server cannot load the configuration due to missing token file + defer func() { + if r := recover(); r != nil { + // Expected: server should fail to start due to missing file + ginkgo.By(fmt.Sprintf("Server correctly failed to start: %v", r)) + } + }() + + // This should cause a panic or error during server startup + f.RunProcesses([]string{serverConf}, []string{}) + }) + }) +}) diff --git a/test/e2e/v1/features/real_ip.go b/test/e2e/v1/features/real_ip.go index 94508f7da9a..a52cf0a2fbe 100644 --- a/test/e2e/v1/features/real_ip.go +++ b/test/e2e/v1/features/real_ip.go @@ -215,7 +215,7 @@ var _ = ginkgo.Describe("[Feature: Real IP]", func() { f.RunProcesses([]string{serverConf}, []string{clientConf}) framework.NewRequestExpect(f).Port(remotePort).Ensure(func(resp *request.Response) bool { - log.Tracef("ProxyProtocol get SourceAddr: %s", string(resp.Content)) + log.Tracef("proxy protocol get SourceAddr: %s", string(resp.Content)) addr, err := net.ResolveTCPAddr("tcp", string(resp.Content)) if err != nil { return false @@ -227,6 +227,56 @@ var _ = ginkgo.Describe("[Feature: Real IP]", func() { }) }) + ginkgo.It("UDP", func() { + serverConf := consts.DefaultServerConfig + clientConf := consts.DefaultClientConfig + + localPort := f.AllocPort() + localServer := streamserver.New(streamserver.UDP, streamserver.WithBindPort(localPort), + streamserver.WithCustomHandler(func(c net.Conn) { + defer c.Close() + rd := bufio.NewReader(c) + ppHeader, err := pp.Read(rd) + if err != nil { + log.Errorf("read proxy protocol error: %v", err) + return + } + + // Read the actual UDP content after proxy protocol header + if _, err := rpc.ReadBytes(rd); err != nil { + return + } + + buf := []byte(ppHeader.SourceAddr.String()) + _, _ = rpc.WriteBytes(c, buf) + })) + f.RunServer("", localServer) + + remotePort := f.AllocPort() + clientConf += fmt.Sprintf(` + [[proxies]] + name = "udp" + type = "udp" + localPort = %d + remotePort = %d + transport.proxyProtocolVersion = "v2" + `, localPort, remotePort) + + f.RunProcesses([]string{serverConf}, []string{clientConf}) + + framework.NewRequestExpect(f).Protocol("udp").Port(remotePort).Ensure(func(resp *request.Response) bool { + log.Tracef("udp proxy protocol get SourceAddr: %s", string(resp.Content)) + addr, err := net.ResolveUDPAddr("udp", string(resp.Content)) + if err != nil { + return false + } + if addr.IP.String() != "127.0.0.1" { + return false + } + return true + }) + }) + ginkgo.It("HTTP", func() { vhostHTTPPort := f.AllocPort() serverConf := consts.DefaultServerConfig + fmt.Sprintf(` @@ -265,7 +315,7 @@ var _ = ginkgo.Describe("[Feature: Real IP]", func() { r.HTTP().HTTPHost("normal.example.com") }).Ensure(framework.ExpectResponseCode(404)) - log.Tracef("ProxyProtocol get SourceAddr: %s", srcAddrRecord) + log.Tracef("proxy protocol get SourceAddr: %s", srcAddrRecord) addr, err := net.ResolveTCPAddr("tcp", srcAddrRecord) framework.ExpectNoError(err, srcAddrRecord) framework.ExpectEqualValues("127.0.0.1", addr.IP.String()) diff --git a/test/e2e/v1/plugin/client.go b/test/e2e/v1/plugin/client.go index 476adb89e09..73e2d863442 100644 --- a/test/e2e/v1/plugin/client.go +++ b/test/e2e/v1/plugin/client.go @@ -3,6 +3,7 @@ package plugin import ( "crypto/tls" "fmt" + "net/http" "strconv" "github.com/onsi/ginkgo/v2" @@ -329,4 +330,122 @@ var _ = ginkgo.Describe("[Feature: Client-Plugins]", func() { ExpectResp([]byte("test")). Ensure() }) + + ginkgo.Describe("http2http", func() { + ginkgo.It("host header rewrite", func() { + serverConf := consts.DefaultServerConfig + + localPort := f.AllocPort() + remotePort := f.AllocPort() + clientConf := consts.DefaultClientConfig + fmt.Sprintf(` + [[proxies]] + name = "http2http" + type = "tcp" + remotePort = %d + [proxies.plugin] + type = "http2http" + localAddr = "127.0.0.1:%d" + hostHeaderRewrite = "rewrite.test.com" + `, remotePort, localPort) + + f.RunProcesses([]string{serverConf}, []string{clientConf}) + + localServer := httpserver.New( + httpserver.WithBindPort(localPort), + httpserver.WithHandler(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { + _, _ = w.Write([]byte(req.Host)) + })), + ) + f.RunServer("", localServer) + + framework.NewRequestExpect(f). + Port(remotePort). + RequestModify(func(r *request.Request) { + r.HTTP().HTTPHost("example.com") + }). + ExpectResp([]byte("rewrite.test.com")). + Ensure() + }) + + ginkgo.It("set request header", func() { + serverConf := consts.DefaultServerConfig + + localPort := f.AllocPort() + remotePort := f.AllocPort() + clientConf := consts.DefaultClientConfig + fmt.Sprintf(` + [[proxies]] + name = "http2http" + type = "tcp" + remotePort = %d + [proxies.plugin] + type = "http2http" + localAddr = "127.0.0.1:%d" + requestHeaders.set.x-from-where = "frp" + `, remotePort, localPort) + + f.RunProcesses([]string{serverConf}, []string{clientConf}) + + localServer := httpserver.New( + httpserver.WithBindPort(localPort), + httpserver.WithHandler(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { + _, _ = w.Write([]byte(req.Header.Get("x-from-where"))) + })), + ) + f.RunServer("", localServer) + + framework.NewRequestExpect(f). + Port(remotePort). + RequestModify(func(r *request.Request) { + r.HTTP().HTTPHost("example.com") + }). + ExpectResp([]byte("frp")). + Ensure() + }) + }) + + ginkgo.It("tls2raw", func() { + generator := &cert.SelfSignedCertGenerator{} + artifacts, err := generator.Generate("example.com") + framework.ExpectNoError(err) + crtPath := f.WriteTempFile("tls2raw_server.crt", string(artifacts.Cert)) + keyPath := f.WriteTempFile("tls2raw_server.key", string(artifacts.Key)) + + serverConf := consts.DefaultServerConfig + vhostHTTPSPort := f.AllocPort() + serverConf += fmt.Sprintf(` + vhostHTTPSPort = %d + `, vhostHTTPSPort) + + localPort := f.AllocPort() + clientConf := consts.DefaultClientConfig + fmt.Sprintf(` + [[proxies]] + name = "tls2raw-test" + type = "https" + customDomains = ["example.com"] + [proxies.plugin] + type = "tls2raw" + localAddr = "127.0.0.1:%d" + crtPath = "%s" + keyPath = "%s" + `, localPort, crtPath, keyPath) + + f.RunProcesses([]string{serverConf}, []string{clientConf}) + + localServer := httpserver.New( + httpserver.WithBindPort(localPort), + httpserver.WithResponse([]byte("test")), + ) + f.RunServer("", localServer) + + framework.NewRequestExpect(f). + Port(vhostHTTPSPort). + RequestModify(func(r *request.Request) { + r.HTTPS().HTTPHost("example.com").TLSConfig(&tls.Config{ + ServerName: "example.com", + InsecureSkipVerify: true, + }) + }). + ExpectResp([]byte("test")). + Ensure() + }) }) diff --git a/test/e2e/v1/plugin/server.go b/test/e2e/v1/plugin/server.go index b043c57f13f..6637650d46a 100644 --- a/test/e2e/v1/plugin/server.go +++ b/test/e2e/v1/plugin/server.go @@ -232,7 +232,7 @@ var _ = ginkgo.Describe("[Feature: Server-Plugins]", func() { handler := func(req *plugin.Request) *plugin.Response { var ret plugin.Response content := req.Content.(*plugin.PingContent) - record = content.Ping.PrivilegeKey + record = content.PrivilegeKey ret.Unchange = true return &ret } @@ -284,7 +284,7 @@ var _ = ginkgo.Describe("[Feature: Server-Plugins]", func() { handler := func(req *plugin.Request) *plugin.Response { var ret plugin.Response content := req.Content.(*plugin.NewWorkConnContent) - record = content.NewWorkConn.RunID + record = content.RunID ret.Unchange = true return &ret } diff --git a/web/frpc/src/components/ClientConfigure.vue b/web/frpc/src/components/ClientConfigure.vue index d276437db9a..d22d092640c 100644 --- a/web/frpc/src/components/ClientConfigure.vue +++ b/web/frpc/src/components/ClientConfigure.vue @@ -8,7 +8,7 @@ type="textarea" autosize v-model="textarea" - placeholder="frpc configrue file, can not be empty..." + placeholder="frpc configure file, can not be empty..." > diff --git a/web/frps/components.d.ts b/web/frps/components.d.ts index 5a1615e419a..188e961b99d 100644 --- a/web/frps/components.d.ts +++ b/web/frps/components.d.ts @@ -31,6 +31,7 @@ declare module 'vue' { ProxiesSTCP: typeof import('./src/components/ProxiesSTCP.vue')['default'] ProxiesSUDP: typeof import('./src/components/ProxiesSUDP.vue')['default'] ProxiesTCP: typeof import('./src/components/ProxiesTCP.vue')['default'] + ProxiesTCPMux: typeof import('./src/components/ProxiesTCPMux.vue')['default'] ProxiesUDP: typeof import('./src/components/ProxiesUDP.vue')['default'] ProxyView: typeof import('./src/components/ProxyView.vue')['default'] ProxyViewExpand: typeof import('./src/components/ProxyViewExpand.vue')['default'] diff --git a/web/frps/src/App.vue b/web/frps/src/App.vue index 974314b2604..ad15e3a14d1 100644 --- a/web/frps/src/App.vue +++ b/web/frps/src/App.vue @@ -39,6 +39,7 @@ UDP HTTP HTTPS + TCPMUX STCP SUDP diff --git a/web/frps/src/components/ProxiesTCPMux.vue b/web/frps/src/components/ProxiesTCPMux.vue new file mode 100644 index 00000000000..9e39e278683 --- /dev/null +++ b/web/frps/src/components/ProxiesTCPMux.vue @@ -0,0 +1,38 @@ + + + + + diff --git a/web/frps/src/components/ProxyViewExpand.vue b/web/frps/src/components/ProxyViewExpand.vue index 49b17a6611e..f0e7d8992c6 100644 --- a/web/frps/src/components/ProxyViewExpand.vue +++ b/web/frps/src/components/ProxyViewExpand.vue @@ -1,9 +1,9 @@